; Module/File: Splitter_Lock.pb ; Function: Lock the handle of SplitterGadget - Linux gtk2/gtk3 ; Author: Omi ; Date: Jul. 10, 2017 ; Version: 0.1 ; Target Compiler: PureBasic 5.22/5.31/5.4/5.5/5.6 ; Target OS: Linux: (X/K/L)ubuntu, Mint, 32/64, Ascii/Uni ;-------------------------------------------------------------- EnableExplicit ImportC "" g_signal_connect(*instance, detailed_signal.p-utf8, *c_handler, *data, destroy= 0, flags= 0) As "g_signal_connect_data" EndImport ; Object constants #Win_Main = 0 #Button1 = 0 #Button2 = 1 #Button3 = 3 #Splitter = 2 Global.i gEvent, gEventWin, gQuit Global.i gLockSplitter= #False ProcedureC Callback_SplitterHandleClicked(*widget.GtkWidget, *event.GdkEventButton, user_data) If user_data = #Splitter If *Event\button = 1 If *Event\type = #GDK_BUTTON_PRESS ProcedureReturn gLockSplitter; No further action from handlers on Global gLockSplitter= #True EndIf EndIf EndIf EndProcedure Procedure Create_WinMain() If OpenWindow(#Win_Main, 300, 200, 500, 200, "Lock SplitterGadget handle", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ButtonGadget(#Button3, 5, 5, 200, 26, "Lock Splitter", #PB_Button_Toggle) ButtonGadget(#Button1, 0, 0, 0, 0, "Button 1") ButtonGadget(#Button2, 0, 0, 0, 0, "Button 2") SplitterGadget(#Splitter, 5, 35, 490, 160, #Button1, #Button2, #PB_Splitter_Separator) g_signal_connect(GadgetID(#Splitter), "button-press-event", @Callback_SplitterHandleClicked(), #Splitter) EndIf EndProcedure Create_WinMain() Repeat gEvent= WaitWindowEvent() Select gEvent Case #PB_Event_CloseWindow gQuit= #True Case #PB_Event_Gadget If EventGadget() = #Button3 gLockSplitter= GetGadgetState(#Button3); #True: Splitter locked, #False: Splitter unlocked EndIf EndSelect Until gQuit ; IDE Options = PureBasic 5.45 LTS (Linux - x86) ; CursorPosition = 24 ; Folding = - ; EnableUnicode ; EnableXP