How to get gadget under mouse
Thanks
I needed for this
http://www.purebasic.fr/german/viewtopi ... 16#p331316
Gadget under mouse
Gadget under mouse
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
Re: Gadget under mouse
The following example code demonstrates how to detect the current gadget under the mouse cursor. But you have to take care of some special gadgets which aren't selectable by default like the TextGadget! In order to detect the cursor above a TextGadget you have therefore to enable selectability:
This is the complete example:
Code: Select all
gtk_label_set_selectable_(GadgetID(TextGadgetID), #True)
Code: Select all
EnableExplicit
ImportC ""
PB_Object_EnumerateStart(PB_Objects.I)
PB_Object_EnumerateNext(PB_Objects.I, *GadgetID)
PB_Object_EnumerateAbort(PB_Objects.I)
PB_Gadget_Objects.I
EndImport
Define GadgetFound.I
Define GadgetHandle.I
Define GadgetID.I
Define *GdkWindow.GdkWindowObject
Define x.I
Define y.I
OpenWindow(0, 100, 100, 350, 220, "Detect gadget below cursor")
CreateStatusBar(0, WindowID(0))
AddStatusBarField(#PB_Ignore)
CheckBoxGadget(0, 30, 30, 130, 30, "CheckBox")
TextGadget(1, 30, 80, 130, 30, "TextGadget", #PB_Text_Border | #PB_Text_Center)
gtk_label_set_selectable_(GadgetID(1), #True)
ButtonGadget(2, 30, 140, 130, 30, "Button")
OptionGadget(3, 190, 30, 120, 30, "OptionBox")
StringGadget(4, 190, 80, 130, 30, "StringGadget")
HyperLinkGadget(5, 190, 140, 140, 30, "HyperLinkGadget", 0)
AddWindowTimer(0, 0, 200)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
RemoveWindowTimer(0, 0)
Break
Case #PB_Event_Timer
*GdkWindow = gdk_window_at_pointer_(@x,@y)
If *GdkWindow
GadgetHandle = *GdkWindow\user_data
PB_Object_EnumerateStart(PB_Gadget_Objects)
GadgetFound = #False
While PB_Object_EnumerateNext(PB_Gadget_Objects, @GadgetID)
If GadgetHandle = GadgetID(GadgetID)
StatusBarText(0, 0, "Cursor above Gadget " + Str(GadgetID), #PB_StatusBar_Center)
PB_Object_EnumerateAbort(PB_Gadget_Objects)
GadgetFound = #True
Break
EndIf
Wend
If GadgetFound = #False
StatusBarText(0, 0, "")
EndIf
EndIf
EndSelect
ForEver
Re: Gadget under mouse
Many thanks to Shardik for help
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive