Guimauve wrote:I will have to check if it's possible to do something similar with GTK+
Code: Select all
ProcedureC GdkEventHandler(*EventButton.GdkEventButton, UserData.I)
Protected *ListView.GtkWidget
If *EventButton\type = #GDK_BUTTON_PRESS
*ListView = GadgetID(0)
If *ListView\window = gdk_window_get_parent_(*EventButton\window)
If *EventButton\button = 3
Debug "Right click detected"
EndIf
EndIf
EndIf
gtk_main_do_event_(*EventButton)
EndProcedure
OpenWindow(0, 200, 100, 220, 140, "Detect right click", #PB_Window_SystemMenu)
ListViewGadget(0, 10, 10, 200, 120)
For i = 1 To 5
AddGadgetItem(0, -1, "Line " + Str(i))
Next i
gdk_event_handler_set_(@GdkEventHandler(), 0, 0)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindowCode: Select all
#Window = 0
#ListView = 0
ProcedureC GdkEventHandler(*EventButton.GdkEventButton, UserData.I)
Protected *ListView.GtkWidget
If *EventButton\type = #GDK_BUTTON_PRESS
*ListView = GadgetID(#ListView)
If *ListView\window = gdk_window_get_parent_(*EventButton\window)
If *EventButton\button = 3
PostEvent(#PB_Event_Gadget, #Window, #ListView, #PB_EventType_RightClick)
EndIf
EndIf
EndIf
gtk_main_do_event_(*EventButton)
EndProcedure
OpenWindow(#Window, 200, 100, 220, 140, "Detect right click", #PB_Window_SystemMenu)
ListViewGadget(#ListView, 10, 10, 200, 120)
For i = 1 To 5
AddGadgetItem(0, -1, "Line " + Str(i))
Next i
gdk_event_handler_set_(@GdkEventHandler(), 0, 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget() = #ListView
Select EventType()
Case #PB_EventType_LeftClick
Debug "Left click on line " + Str(GetGadgetState(#ListView) + 1)
Case #PB_EventType_RightClick
Debug "Right click on line " + Str(GetGadgetState(#ListView) + 1)
EndSelect
EndIf
EndSelect
ForEver

