jMonkeyEngine-Contributions / Lemur

Lemur is a jMonkeyEngine-based UI toolkit.
http://jmonkeyengine-contributions.github.io/Lemur/
BSD 3-Clause "New" or "Revised" License
116 stars 32 forks source link

requestFocus is consuming some "onAction" events #28

Closed NemesisMate closed 7 years ago

NemesisMate commented 8 years ago

Well, I'm experimenting a problem with Lemur's GuiGlobals.requestFocus. I use it to set the focus to a text field:

GuiGlobals.getInstance().requestFocus(textField);

The textfield is in a custom element that I added to the scene with:

guiNode.attachChild(myElement);

All works as I desire until I remove the element and I want my old input functionality back. I restore the input listeners and I remove the element from the node but the "onAction" is no long receiving pressed events (when I release a key, so the pressed value is false on the "onAction", it works well but not for pressed ones, when true).

So, in resume:

  1. I remove my player input listener.
  2. I show the lemur's element on the screen (I attach the element node).
  3. I set the focus on added the lemur's element.
  4. I remove the lemur's element from the screen.
  5. I add my player input listener.
    • result: all key events are fine but the "press" ones (just the analogs and the key releases actions).

I found that with GuiGlobals.getInstance().requestFocus(rootNode); it works fine again but I'm not sure if this is the right procedure and if it is not leading to further problems. All help is appreciated.

jchappelle commented 8 years ago

I'm having the same issue. The TextField I'm using is not custom it's just a regular TextField. The GuiGlobals.getInstance().requestFocus(rootNode); does the trick so I'm fine with the work around for now.

pspeed42 commented 8 years ago

Thanks for keeping this one on my radar, guys. So far the fix seems non-trivial but I am thinking about it.

pspeed42 commented 7 years ago

This should be fixed now and will show up in version 1.10.