GTK3 Zu viele Events bei Doppelklick in Explorerlist

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

GTK3 Zu viele Events bei Doppelklick in Explorerlist

Beitrag 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
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: GTK3 Zu viele Events bei Doppelklick in Explorerlist

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: GTK3 Zu viele Events bei Doppelklick in Explorerlist

Beitrag von matbal »

Danke für deinen Code. Ich wußte gar nicht, daß es auch offiziell Dreifachklicks gibt.
Antworten