Seite 1 von 1

GTK3 Zu viele Events bei Doppelklick in Explorerlist

Verfasst: 07.02.2025 00:45
von matbal
In der Explorerlist unter GTK3 wird beim Doppelklick auf einer Datei das Doppelklick-Event zweimal ausgelöst. Unter QT passiert das nicht bei mir.

Aufgefallen ist das mir, weil ich per Doppelklick die Datei von einem externen Programm öffnen lassen habe, und das Programm dann immer zweimal geöffnet wurde.

Ich verwende Manjaro KDE.

Code: Alles auswählen

Procedure ExplorerlistEvents()
   Select EventType()
      Case #PB_EventType_LeftDoubleClick : Debug "Doppelklick @ " + ElapsedMilliseconds()
      Case #PB_EventType_LeftClick       : Debug "Einfachklick @ " + ElapsedMilliseconds()
   EndSelect
   
EndProcedure


OpenWindow(0, 100, 100, 400, 300, "Window")
ExplorerListGadget(1, 0, 0, 400, 300, GetHomeDirectory(), #PB_Explorer_NoFolders)

BindGadgetEvent(1, @ExplorerlistEvents())

Repeat
   event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow

Re: GTK3 Zu viele Events bei Doppelklick in Explorerlist

Verfasst: 07.02.2025 21:58
von mk-soft
Ist wohl ne alte Macke ... schon mit v6.04

Signal selber abfangen bis diese repariert ist

Update

Code: Alles auswählen

;-TOP
Enumeration #PB_EventType_FirstCustomValue
  #MyEventType_LeftClick
  #MyEventType_LeftDoubleClick
  #MyEventType_LeftTribleClick
EndEnumeration

ProcedureC signalClicked(*Widget.GtkWidget, *Event.GdkEventButton , user_data)
  If *Event\button = 1
    Select *Event\type 
      Case #GDK_BUTTON_PRESS
        ;Debug "Gadget " + user_data + ": Single Click " + ElapsedMilliseconds()
        PostEvent(#PB_Event_Gadget, GetActiveWindow(), user_data, #MyEventType_LeftClick)
      Case #GDK_2BUTTON_PRESS
        ;Debug "Gadget " + user_data + ": Double Click " + ElapsedMilliseconds()
        PostEvent(#PB_Event_Gadget, GetActiveWindow(), user_data, #MyEventType_LeftDoubleClick)
      Case #GDK_3BUTTON_PRESS
        ;Debug "Gadget " + user_data + ": Trible Click " + ElapsedMilliseconds()
        PostEvent(#PB_Event_Gadget, GetActiveWindow(), user_data, #MyEventType_LeftTribleClick)
    EndSelect
  EndIf
EndProcedure


Procedure ExplorerlistEvents()
  Select EventType()
    Case #MyEventType_LeftClick       : Debug "Einfachklick @ " + ElapsedMilliseconds()
    Case #MyEventType_LeftDoubleClick : Debug "Doppelklick @ " + ElapsedMilliseconds()
    Case #MyEventType_LeftTribleClick : Debug "Dreifachklick @ " + ElapsedMilliseconds()
  EndSelect
  
EndProcedure


OpenWindow(0, 100, 100, 400, 300, "Window")
ExplorerListGadget(1, 0, 0, 400, 300, GetHomeDirectory(), #PB_Explorer_NoFolders)

signal_event_handler_1 = g_signal_connect_(GadgetID(1), "button-press-event", @signalClicked(), 1) ; <= UserData = Gadget Number

BindGadgetEvent(1, @ExplorerlistEvents())

Repeat
  event = WaitWindowEvent()
Until event = #PB_Event_CloseWindow

If g_signal_handler_is_connected_(GadgetID(1), signal_event_handler_1)
  g_signal_handler_disconnect_(GadgetID(1), signal_event_handler_1)
EndIf

Re: GTK3 Zu viele Events bei Doppelklick in Explorerlist

Verfasst: 07.02.2025 23:30
von matbal
Danke für deinen Code. Ich wußte gar nicht, daß es auch offiziell Dreifachklicks gibt.