SetGadgetFilter doesn't work on textfields

BlitzMax Forums/MaxGUI Module/SetGadgetFilter doesn't work on textfields

GfK(Posted 2010) [#1]
Yet more MaxGUI misery:


Works fine if I change the textfield to a textarea, but I want - nay - NEED a textfield!
SuperStrict

Import maxgui.drivers

Global mainWin:TGadget = CreateWindow("Main" , 0 , 0 , 400 , 400)
Global ta:TGadget = CreateTextField(10 , 10 , 300 , 300 , mainWin)
Global quit:Int = False
ActivateGadget ta

SetGadgetFilter(ta, keyFilter)


While Not quit
	WaitEvent()
	
	Select EventID()	
		Case EVENT_APPTERMINATE, EVENT_WINDOWCLOSE
			quit = True

	End Select
Wend
End


Function keyFilter:Int(event:TEvent, context:Object)
	Select Event.ID
		Case EVENT_KEYCHAR
			If event.data = KEY_ENTER
				Notify "PARP!"
			EndIf
	End Select
	
	Return True
End Function


[edit] (code swiped and modified from elsewhere on this forum)

[edit] Actually I might get away with a TextArea instead. It'd be nice if this stuff just worked, though!

Last edited 2010


degac(Posted 2010) [#2]
I think the problem is not MaxGUI, but the Windows GUI design: tab and enter keys are intercepted by the OS.
If you test with FLTK you will see that the program runs as expected (you will intercept the KEY_ENTER event).


GaryV(Posted 2010) [#3]
GfK: If you suspect a bug, it might be best to report it on the official site via the bug tracker, forums or help system (whichever best applies).


GfK(Posted 2010) [#4]
GfK: If you suspect a bug, it might be best to report it on the official site via the bug tracker, forums or help system (whichever best applies).
...as opposed to the MaxGUI Bug Reports forum which presumably, unless I'm much mistaken, is for posting bug reports pertaining to MaxGUI?


GaryV(Posted 2010) [#5]
...as opposed to the MaxGUI Bug Reports forum which presumably, unless I'm much mistaken, is for posting bug reports pertaining to MaxGUI?
I was trying to help. You are forgetting this is a deprecated product and no longer sold or distributed or connected in any way to BRL.

With the situation what it is, if you have a legitimate bug report, you should file it on the official site. It certainly wouldn't hurt.


GfK(Posted 2010) [#6]
With the situation what it is, if you have a legitimate bug report, you should file it on the official site.
That's what I thought I'd done. Maybe this forum should be binned if its of no relevance any more.


jsp(Posted 2010) [#7]
If you want to "filter" only the return key you don't have to use the gagdetfilter, but use the OK Button (and the Cancel Button for filtering ESC).
Let me know if you need an example.


skidracer(Posted 2010) [#8]
Unfortunately this is a design shortcoming in windows where the enter key must be wired / shortcutted internally to an OK button for an app to follow the Windows design guidelines correctly.

I agree that it would be nice if it "just worked" in MaxGUI but this is one case where it is MaxGUI's documentation that is coming up short not it's implementation.


GfK(Posted 2010) [#9]
I had read that elsewhere but assumed it was just a 'hack'. My situation is that I want to hit Enter in any number of text fields in a window, and have some information update elsewhere in the form (i.e. I have a "Name" textfield and a listview containing a list of Names, which needs to be refreshed when the Name textfield is validated via the Enter key).

It works with a text area but this is only for a game editor for personal use so I guess it doesn't have to be perfect/pretty, as long as it does the job.

Thanks for the info.


jsp(Posted 2010) [#10]
The OK Button is just fine for your problem I think.
When the event occurs read in your textfields and act accordingly.
You can also check for event GADGETLOSTFOCUS of your textfields, which are triggered when they loose focus e.g. by using tab from one textfield to the other...