Listbox - Detect A Single Right Mouse Click?!

BlitzMax Forums/MaxGUI Module/Listbox - Detect A Single Right Mouse Click?!

Grisu(Posted 2008) [#1]
Hey there!

I know the listbox code has been changed a bit over the past.

A right mouse click on the listbox currently also generates a left a left one as well?

Seems broken for me...

Grisu

Example code:



SebHoll(Posted 2008) [#2]
This isn't really broken as it is sending the correct events. The docs say...

EVENT_GADGETSELECT: An item has been selected, or the selection has been cleared.

EVENT_GADGETMENU: The user has right-clicked somewhere in the listbox.

Observe what happens when you right-click an item. The item you right-clicked is selected (highlighted), and so an EVENT_GADGETSELECT is emitted as the selection has changed.

If you want to trap mouse events, you should be using SetGadgetSensitivity():

SuperStrict
Import MaxGui.Drivers

AppTitle = "Mouse Events from Listboxes"

Local Window:TGadget = CreateWindow( AppTitle,261,106,141,143,Null,WINDOW_TITLEBAR|WINDOW_RESIZABLE|WINDOW_STATUS|WINDOW_CLIENTCOORDS )
	Local ListBox:TGadget = CreateListBox(27,28,80,100,Window,Null)
		AddGadgetItem( ListBox,"Item1",GADGETITEM_DEFAULT )
		AddGadgetItem( ListBox,"Item2",GADGETITEM_NORMAL )
		
		SetGadgetSensitivity( ListBox, SENSITIZE_MOUSE )

AddHook EmitEventHook, eventHandler

Repeat;WaitSystem();Forever

Function eventHandler:Object( pID%, pData:Object, pContext:Object )
	Local pEvent:TEvent = TEvent(pData)
	If Not pEvent Then Return pData
	
	Select pEvent.id
		Case EVENT_WINDOWCLOSE, EVENT_APPTERMINATE;End
		Case EVENT_MOUSEUP, EVENT_MOUSEDOWN
			Print pEvent.ToString()
	EndSelect
EndFunction