Solution:
Evaluate all events yourself. Should work with all gadgets.
Update v1.02
Code: Select all
;-TOP my mk-soft
CompilerIf #PB_Compiler_OS = #PB_OS_Linux
CompilerIf Defined(GdkEvent,#PB_Structure)=#False
Structure GdkEvent
StructureUnion
Type.l
any.GdkEventAny
expose.GdkEventExpose
no_expose.GdkEventNoExpose
visibility.GdkEventVisibility
motion.GdkEventMotion
button.GdkEventButton
scroll.GdkEventScroll
key.GdkEventKey
crossing.GdkEventCrossing
focus_change.GdkEventFocus
configure.GdkEventConfigure
property.GdkEventProperty
selection.GdkEventSelection
proximity.GdkEventProximity
client.GdkEventClient
dnd.GdkEventDND
window_state.GdkEventWindowState
setting.GdkEventSetting
EndStructureUnion
EndStructure
CompilerEndIf
; ----
ProcedureC _signal_event_cb(*Widget, *Event.GdkEvent, Gadget)
With *Event
Select \Type
Case #GDK_BUTTON_PRESS
Select \button\button
Case 1
;Debug "Left Button Press"
PostEvent(#PB_Event_Gadget, EventWindow(), Gadget, #PB_EventType_LeftButtonDown)
Case 2
;Debug "Right Button Press"
PostEvent(#PB_Event_Gadget, EventWindow(), Gadget, #PB_EventType_MiddleButtonDown)
Case 3
;Debug "Right Button Press"
PostEvent(#PB_Event_Gadget, EventWindow(), Gadget, #PB_EventType_RightButtonDown)
EndSelect
ProcedureReturn #True
Case #GDK_BUTTON_RELEASE
Select \button\button
Case 1
;Debug "Left Button Release"
PostEvent(#PB_Event_Gadget, EventWindow(), Gadget, #PB_EventType_LeftButtonUp)
Case 2
;Debug "Right Button Release"
PostEvent(#PB_Event_Gadget, EventWindow(), Gadget, #PB_EventType_MiddleButtonUp)
Case 3
;Debug "Right Button Release"
PostEvent(#PB_Event_Gadget, EventWindow(), Gadget, #PB_EventType_RightButtonUp)
EndSelect
ProcedureReturn #True
EndSelect
EndWith
ProcedureReturn #False
EndProcedure
CompilerEndIf
; ********
OpenWindow(0, 0, 0, 420, 420, "Test Mouse Button Down/Up", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget |
#PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
CanvasGadget(0, 0, 0, 420, 420, #PB_Canvas_Container)
CloseGadgetList()
signal_event_handler = g_signal_connect_(GadgetID(0), "event", @_signal_event_cb(), 0) ; <= UserData = Gadget Number
Repeat
event = WaitWindowEvent(10)
If event = #PB_Event_Gadget
Select EventType()
Case #PB_EventType_LeftButtonDown
Debug "Mouse left button down"
Case #PB_EventType_LeftButtonUp
Debug "Mouse left button up"
EndSelect
EndIf
Until event = #PB_Event_CloseWindow