I've used google and forum search, but no luck :$
Anyone knows if there is an equivalent to #WM_LBUTTONUP ??
#WM_LBUTTONUP equivalent under linux?
Re: #WM_LBUTTONUP equivalent under linux?
You need to connect the signal "button-release-event" to your button
i.e. g_signal_connect_object_(*widget,"button-release-event",@yourprocedurename(),#Null,#Null)
or
g_signal_connect_data_(*widget,"button-release-event",@yourprocedurename(),userl_data,#Null,#Null)
if you want to pass some data to your procedure when called
at least you'll need a procedure like this one to react on the release event ...
yourProcedureName(*widget, *event, *user_data)
;
;
Endprocedure
thats all
I recommend you to install DEVHELP (if not already installed as you use linux Mint ... afaik :-.)) as there are nearly all essential docs in one place
edit: if you use PB-Gadgets, you can use Gadgetid(gadget) as *widget to connect the event
i.e. g_signal_connect_object_(*widget,"button-release-event",@yourprocedurename(),#Null,#Null)
or
g_signal_connect_data_(*widget,"button-release-event",@yourprocedurename(),userl_data,#Null,#Null)
if you want to pass some data to your procedure when called
at least you'll need a procedure like this one to react on the release event ...
yourProcedureName(*widget, *event, *user_data)
;
;
Endprocedure
thats all
I recommend you to install DEVHELP (if not already installed as you use linux Mint ... afaik :-.)) as there are nearly all essential docs in one place
edit: if you use PB-Gadgets, you can use Gadgetid(gadget) as *widget to connect the event
Re: #WM_LBUTTONUP equivalent under linux?
walker! Could you please post a complete example?
Re: #WM_LBUTTONUP equivalent under linux?
Sorry for the delay.....
In my post above some informations are missing ....
Here an example of all possible (and usefull) events that can be used by a button:
this should be quite self-explanatory .. but if you have questions ... ask 
[Edit] added the missing C to Procedure ......
In my post above some informations are missing ....
Here an example of all possible (and usefull) events that can be used by a button:
Code: Select all
;************************************************
; Demo to show the use of Events of buttons beside
; the usual "clicked" ;-) behavior
; 2010 walker
; tested on Linux Mint x64 --- PB 4.51 RC2
;************************************************
EnableExplicit
Define hwnd
Define event, quit
Define b1, t1
Define *w_id.GtkWidget
ProcedureC button_clicked(*widget, *signal, user_data)
;*widget contains the data given at creation time of this handler
;*signal contains the detailed signal
SetGadgetText(*widget,GetGadgetText(*widget)+"clicked"+#CRLF$)
EndProcedure
ProcedureC button_released(*widget, *signal, user_data)
SetGadgetText(*widget,GetGadgetText(*widget)+"bye bye"+#CRLF$)
EndProcedure
ProcedureC button_pressed(*widget, *signal, user_data)
SetGadgetText(*widget,GetGadgetText(*widget)+"hello there"+#CRLF$)
EndProcedure
ProcedureC button_enter(*widget, *signal, user_data)
SetGadgetText(*widget,"touched"+#CRLF$)
EndProcedure
ProcedureC button_leave(*widget, *signal, user_data)
SetGadgetText(*widget,"away...")
EndProcedure
hwnd = OpenWindow(#PB_Any, 0, 0, 500, 300, "Button Event", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If hwnd
*w_id = WindowID(hwnd);use the structure of the widgets to access the gdk window id... which is necessary for setting the event mask; see below
b1 = ButtonGadget(#PB_Any, 10, 10, 100, 30, "button :-)")
t1 = EditorGadget(#PB_Any, 10, 80, 250, 200)
g_signal_connect_data_(GadgetID(b1), "clicked", @button_clicked(), t1, #Null, #G_CONNECT_SWAPPED)
g_signal_connect_data_(GadgetID(b1), "button_release_event", @button_released(), t1, #Null, #G_CONNECT_SWAPPED)
g_signal_connect_data_(GadgetID(b1), "button_press_event", @button_pressed(), t1, #Null, #G_CONNECT_SWAPPED)
g_signal_connect_data_(GadgetID(b1), "enter-notify-event", @button_enter(), t1, #Null, #G_CONNECT_SWAPPED)
g_signal_connect_data_(GadgetID(b1), "leave-notify-event", @button_leave(), t1, #Null, #G_CONNECT_SWAPPED)
gdk_window_set_events_(*w_id\window, #GDK_ALL_EVENTS_MASK);here we are using the gdk window id for setting the event mask necessary for the button press and release event
; NOT for the enter and leave events or the clicked event.... they are enabled by default
EndIf
Repeat
event = WaitWindowEvent(1)
If event = #PB_Event_CloseWindow
quit = 1
EndIf
Until quit = 1
End

[Edit] added the missing C to Procedure ......
Last edited by walker on Fri Aug 27, 2010 10:12 pm, edited 1 time in total.
Re: #WM_LBUTTONUP equivalent under linux?
You have to use ProcedureC for the signal callbacks or you will get problems on x86.
quidquid Latine dictum sit altum videtur
Re: #WM_LBUTTONUP equivalent under linux?
Oh ... damned ... I forget this little C all the time since I use the x64 version ....
must write a reminder to myself.... :roll:

must write a reminder to myself.... :roll:
Re: #WM_LBUTTONUP equivalent under linux?
Hello. walker Why your code does not work with ImageGadget () and TextGadget ()?
Linux Mint Maya(Mate), x86, PureBasic 5.00(5.10b1)
Re: #WM_LBUTTONUP equivalent under linux?
Hi,
it doesn't work for the imagegadget because the imagegadget does not receive any event
you can use a workaround for tis type of gadget by placing it into an event-box
the following code is written down from my mind .. could not test it ATM as i have only windows available
The textgadget does not recognize events others than "changed", "delete-text","insert-text" (maybe it works with an event-box too......) EDIT : this applies for the string-gadget .. not for the textgadget /EDIT
[EDIT]
here is an full example (modified the one above) which shows how to use events in eventless gadgets
You can see how to manage the different buttons of the mouse too. It was a surprise, that those (eventless) Gadgets are already placed in an Event-box.
@Fred: do you plan this for a future version (implementing events for so far "eventless" gadgets)?
it doesn't work for the imagegadget because the imagegadget does not receive any event
you can use a workaround for tis type of gadget by placing it into an event-box

the following code is written down from my mind .. could not test it ATM as i have only windows available
Code: Select all
*image.GtkWidget
*event_box.GtkWidget
*image = gtk_image_new_from_file_("myfile.png");
*event_box = gtk_event_box_new_();
gtk_container_add_(*event_box, *image);
g_signal_connect_(*event_box, "button_press_event",@button_pressed(),*image);
[EDIT]
here is an full example (modified the one above) which shows how to use events in eventless gadgets

You can see how to manage the different buttons of the mouse too. It was a surprise, that those (eventless) Gadgets are already placed in an Event-box.
@Fred: do you plan this for a future version (implementing events for so far "eventless" gadgets)?
Code: Select all
;************************************************
; Demo to show the use of Events of buttons beside
; the usual "clicked" ;-) behavior
; 2010 walker
; tested on Linux Mint x64 --- PB 4.51 RC2
; ----------------------------
;modified 04/2011
;added events for imagegadget and the textgadget
;lLinux Mint (9) X64 [b]PB 4.60 beta 1[/b]
;************************************************
EnableExplicit
Define hwnd
Define event, quit
Define b1, t1, im, image, t2
Define *w_id.GtkWidget, *event_box.GtkWidget,*event_box2.GtkWidget
ProcedureC button_clicked(*widget, *signal, user_data)
;*widget contains the data given at creation time of this handler
;*signal contains the detailed signal
SetGadgetText(*widget, GetGadgetText(*widget) + "clicked" + #CRLF$)
EndProcedure
ProcedureC button_released(*widget, *signal, user_data)
SetGadgetText(*widget, GetGadgetText(*widget) + "bye bye" + #CRLF$)
EndProcedure
ProcedureC button_pressed(*widget, *signal, user_data)
SetGadgetText(*widget, GetGadgetText(*widget) + "hello there" + #CRLF$)
EndProcedure
ProcedureC button_enter(*widget, *signal, user_data)
SetGadgetText(*widget, "touched" + #CRLF$)
EndProcedure
ProcedureC button_leave(*widget, *signal, user_data)
SetGadgetText(*widget, "away...")
EndProcedure
ProcedureC image_enter(*widget, *signal, user_data)
SetGadgetText(user_data, "entering image.....")
EndProcedure
ProcedureC image_leave(*widget, *signal, user_data)
SetGadgetText(user_data, "image left.....")
EndProcedure
ProcedureC image_clicked(*widget, *signal, user_data)
Protected image = CreateImage(#PB_Any, 50, 50, 32)
Protected *eb.GdkEventButton = *signal
StartDrawing(ImageOutput(image))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 50, 50, RGBA(0, 0, 0, 0))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Circle(25, 25, 25, RGBA(Random(255), Random(255), Random(255), 255))
StopDrawing()
SetGadgetState(user_data, ImageID(image))
Select *eb\button
Case 1
Debug "left mousebutton"
If *eb\type = #GDK_2BUTTON_PRESS
Debug "---- doubleclick -----"
EndIf
Case 2
Debug "middle mousebutton"
Case 3
Debug "right mousebutton"
EndSelect
EndProcedure
ProcedureC text_enter(*widget, *signal, user_data)
SetGadgetText(user_data, "mouse over text .....")
EndProcedure
ProcedureC text_leave(*widget, *signal, user_data)
SetGadgetText(user_data, "text left.....")
EndProcedure
ProcedureC text_pressed(*widget, *signal, user_data)
Protected inp.s=InputRequester("enter text","Enter new text","")
SetGadgetText(user_data, inp)
EndProcedure
hwnd = OpenWindow(#PB_Any, 0, 0, 500, 300, "Button Event", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If hwnd
*w_id = WindowID(hwnd);use the structure of the widgets to access the gdk window id... which is necessary for setting the event mask; see below
b1 = ButtonGadget(#PB_Any, 10, 10, 100, 30, "button :-)")
t1 = EditorGadget(#PB_Any, 10, 80, 250, 200)
t2= TextGadget(#PB_Any,300,100,150,30,"this is a textgadget")
image = CreateImage(#PB_Any, 50, 50, 32)
StartDrawing(ImageOutput(image))
DrawingMode(#PB_2DDrawing_AlphaChannel)
Box(0, 0, 50, 50, RGBA(0, 0, 0, 00))
DrawingMode(#PB_2DDrawing_AlphaBlend)
Circle(25, 25, 25, RGBA(100, 500, 20, 255))
StopDrawing()
im = ImageGadget(#PB_Any, 200, 10, 50, 50, ImageID(image))
*event_box = gtk_widget_get_parent_(GadgetID(im));surprise surprise .. the imagegadget is already placed in an event-box...
*event_box2=gtk_widget_get_parent_(GadgetID(t2));this too ....
g_signal_connect_(*event_box, "enter-notify-event", @image_enter(), t1)
g_signal_connect_(*event_box, "leave-notify-event", @image_leave(), t1)
g_signal_connect_(*event_box, "button_press_event", @image_clicked(), im)
g_signal_connect_(*event_box2, "enter-notify-event", @text_enter(), t1)
g_signal_connect_(*event_box2, "leave-notify-event", @text_leave(), t1)
g_signal_connect_(*event_box2, "button_press_event", @text_pressed(), t2)
g_signal_connect_data_(GadgetID(b1), "clicked", @button_clicked(), t1, #Null, #G_CONNECT_SWAPPED)
g_signal_connect_data_(GadgetID(b1), "button_release_event", @button_released(), t1, #Null, #G_CONNECT_SWAPPED)
g_signal_connect_data_(GadgetID(b1), "button_press_event", @button_pressed(), t1, #Null, #G_CONNECT_SWAPPED)
g_signal_connect_data_(GadgetID(b1), "enter-notify-event", @button_enter(), t1, #Null, #G_CONNECT_SWAPPED)
g_signal_connect_data_(GadgetID(b1), "leave-notify-event", @button_leave(), t1, #Null, #G_CONNECT_SWAPPED)
gdk_window_set_events_(*w_id\window, #GDK_ALL_EVENTS_MASK);here we are using the gdk window id for setting the event mask necessary for the button press and release event
; NOT for the enter and leave events or the clicked event.... they are enabled by default
EndIf
Repeat
event = WaitWindowEvent(1)
If event = #PB_Event_CloseWindow
quit = 1
EndIf
Until quit = 1
End
Re: #WM_LBUTTONUP equivalent under linux?
Hello. Thanks walker, it work perfectly. There is no event #WM_LBUTTONUP, but now have made CanvasGadget(), in it all works. Once again thanks for the answer. Excuse for bad English.
Linux Mint Maya(Mate), x86, PureBasic 5.00(5.10b1)