; Module/File: Button_DetectDoubleLclick.pb ; Function: Detect a double leftclick on ButtonGadgets - Linux ; Author: Omi ; Date: Feb. 06, 2016 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.4/5.6 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ; Object constants #Win_Main = 0 #But1 = 0 Enumeration #PB_Event_FirstCustomValue #Event_ButtonLeftDoubleclick EndEnumeration Global.i gEvent, gQuit Global.i gLDClickState ProcedureC Callback_ButtonLeftDoubleclick(*widget.GtkWidget, *Event.GdkEventButton, user_data) If user_data = #But1 If *Event\button = 1 If *Event\type = #GDK_2BUTTON_PRESS gLDClickState= #GDK_2BUTTON_PRESS PostEvent(#Event_ButtonLeftDoubleclick, GetActiveWindow(), user_data) ProcedureReturn #True EndIf If *Event\type = #GDK_BUTTON_PRESS If gLDClickState = #GDK_2BUTTON_PRESS gLDClickState= #GDK_NOTHING ProcedureReturn #False EndIf EndIf EndIf EndIf EndProcedure If OpenWindow(#Win_Main, 0, 0, 400, 100, "Detect left-doubleclick on ButtonGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ButtonGadget(#But1, 5, 5, 390, 26, "Try a left doubleclick on me ...") g_signal_connect_(GadgetID(#But1), "button-press-event", @Callback_ButtonLeftDoubleclick(), #But1) Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True Case #Event_ButtonLeftDoubleclick If EventGadget() = #But1 Debug "Left doubleclick" EndIf Case #PB_Event_Gadget If EventGadget() = #But1 If gLDClickState <> #GDK_2BUTTON_PRESS Debug "Prev. left singleclick" EndIf EndIf EndSelect Until gQuit EndIf ; IDE Options = PureBasic 5.46 LTS Beta 2 (Linux - x86) ; CursorPosition = 65 ; Folding = - ; EnableUnicode ; EnableXP