Linux Bug bei CanvasGadget mit #PB_Canvas_Container

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
maddinvonfritz
Beiträge: 12
Registriert: 15.11.2023 16:53

Linux Bug bei CanvasGadget mit #PB_Canvas_Container

Beitrag von maddinvonfritz »

Hallo,

wenn ich beim CanvasGadget das Flag #PB_Canvas_Container setze und Gadgets hinzufüge, werden keine Events vom Mausrad zurückgeliefert.

Getestet in PB6.03 und PB_6.10 beta mit GTK3, GTK2 und QT.

Zum testen flags = #PB_Canvas_Container auskommentieren.

Code: Alles auswählen

Define flags

flags = #PB_Canvas_Container

OpenWindow(0, #PB_Ignore, #PB_Ignore, 500, 500, "Canvas Test")

CanvasGadget(0, 0, 0, 500, 500, flags)

ButtonGadget(1, 0, 0, 50, 30, "Test")

If flags & #PB_Canvas_Container : CloseGadgetList() : EndIf

Repeat
  Select WindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 0
          If EventType() = #PB_EventType_MouseWheel
            Debug GetGadgetAttribute(0, #PB_Canvas_WheelDelta)
          EndIf
      EndSelect
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Lord
Beiträge: 324
Registriert: 21.01.2008 19:11

Re: Linux Bug bei CanvasGadget mit #PB_Canvas_Container

Beitrag von Lord »

Hallo!

Füge doch mal dem CanvasGadget das Flag #PB_Canvas_Keyboard hinzu,
dann sollten die Mausradevents kommen.
Also z.B.:

Code: Alles auswählen

flags = #PB_Canvas_Container | #PB_Canvas_Keyboard
Zumindest bei Windows hat es so funktioniert.
Bild
Benutzeravatar
maddinvonfritz
Beiträge: 12
Registriert: 15.11.2023 16:53

Re: Linux Bug bei CanvasGadget mit #PB_Canvas_Container

Beitrag von maddinvonfritz »

Hallo,

Windows funktioniert. Linux nicht auch nicht mit #PB_Canvas_Keyboard.
Getestet habe ich es auf einem Ubuntu 22.04.4 LTS.
Zu MacOS kann ich nichts sagen.
Benutzeravatar
mk-soft
Beiträge: 3852
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Linux Bug bei CanvasGadget mit #PB_Canvas_Container

Beitrag von mk-soft »

Bei Windows und macOS geht es.

Für Linux ein BugFix bis es repariert ist. Habe ich als Bug gemeldet.

Code: Alles auswählen

;-Top my mk-soft

ImportC ""
  gdk_event_get_scroll_deltas(*Event, *delta_x, *delta_y)
EndImport

Procedure signal_scroll_event_cb(*self, *event.gdkeventscroll, user_data)
  Protected deltaX.d, deltaY.d
  If *event\type = #GDK_SCROLL
    ;Debug "Scroll State " + *event\state
    gdk_event_get_scroll_deltas(*event, @deltaX, @deltaY)
    PostEvent(#PB_Event_Gadget, GetActiveWindow(), user_data, #PB_EventType_MouseWheel, -deltaY)
  EndIf
EndProcedure

Define flags

flags = #PB_Canvas_Container

OpenWindow(0, #PB_Ignore, #PB_Ignore, 500, 500, "Canvas Test")

CanvasGadget(1, 0, 0, 500, 300, #PB_Canvas_Border | flags)

ButtonGadget(2, 0, 0, 50, 30, "Test")

If flags & #PB_Canvas_Container
  CloseGadgetList()
  g_signal_connect_(GadgetID(1), "scroll-event", @signal_scroll_event_cb(), 1)
EndIf

Repeat
  Select WindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          If EventType() = #PB_EventType_MouseWheel
            If flags & #PB_Canvas_Container
              Debug EventData()
            Else
              Debug GetGadgetAttribute(0, #PB_Canvas_WheelDelta)
            EndIf
          EndIf
      EndSelect
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
maddinvonfritz
Beiträge: 12
Registriert: 15.11.2023 16:53

Re: Linux Bug bei CanvasGadget mit #PB_Canvas_Container

Beitrag von maddinvonfritz »

Vielen Dank.
Antworten