forked from Mirrorlandia_minetest/irrlicht
Bugfix: Changing focus with tab-keys now also work when elements are inside a modal screen.
Event got eaten before. It passes it now on partly (enough to arrive at CGUIEnvironment) when the focus will stay inside the modal screen. git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6215 dfc29bdd-3216-0410-991c-e03cc46cb475
This commit is contained in:
parent
9147d4ade8
commit
f103ea3dac
@ -1,5 +1,6 @@
|
|||||||
--------------------------
|
--------------------------
|
||||||
Changes in 1.9 (not yet released)
|
Changes in 1.9 (not yet released)
|
||||||
|
- Bugfix: Changing focus with tab-keys now also work when elements are inside a modal screen.
|
||||||
- COBJMeshFileLoader using a bit more exact color conversion for 0-1 to 0-255 range (same now as SColorf::toSColor uses).
|
- COBJMeshFileLoader using a bit more exact color conversion for 0-1 to 0-255 range (same now as SColorf::toSColor uses).
|
||||||
- Speedup for COBJMeshWriter
|
- Speedup for COBJMeshWriter
|
||||||
- Add blinkMode parameter to IGUIEnvironment::addModalScreen, so blinking can be suppressed
|
- Add blinkMode parameter to IGUIEnvironment::addModalScreen, so blinking can be suppressed
|
||||||
|
@ -642,8 +642,8 @@ bool CGUIEnvironment::postEventFromUser(const SEvent& event)
|
|||||||
|
|
||||||
// For keys we handle the event before changing focus to give elements the chance for catching the TAB
|
// For keys we handle the event before changing focus to give elements the chance for catching the TAB
|
||||||
// Send focus changing event
|
// Send focus changing event
|
||||||
|
// CAREFUL when changing - there's an identical check in CGUIModalScreen::OnEvent
|
||||||
if (FocusFlags & EFF_SET_ON_TAB &&
|
if (FocusFlags & EFF_SET_ON_TAB &&
|
||||||
event.EventType == EET_KEY_INPUT_EVENT &&
|
|
||||||
event.KeyInput.PressedDown &&
|
event.KeyInput.PressedDown &&
|
||||||
event.KeyInput.Key == KEY_TAB)
|
event.KeyInput.Key == KEY_TAB)
|
||||||
{
|
{
|
||||||
|
@ -136,6 +136,19 @@ bool CGUIModalScreen::OnEvent(const SEvent& event)
|
|||||||
{
|
{
|
||||||
MouseDownTime = os::Timer::getTime();
|
MouseDownTime = os::Timer::getTime();
|
||||||
}
|
}
|
||||||
|
case EET_KEY_INPUT_EVENT:
|
||||||
|
// CAREFUL when changing - there's an identical check in CGUIEnvironment::postEventFromUser
|
||||||
|
if (Environment->getFocusBehavior() & EFF_SET_ON_TAB &&
|
||||||
|
event.KeyInput.PressedDown &&
|
||||||
|
event.KeyInput.Key == KEY_TAB)
|
||||||
|
{
|
||||||
|
IGUIElement* next = Environment->getNextElement(event.KeyInput.Shift, event.KeyInput.Control);
|
||||||
|
if ( next && isMyChild(next) )
|
||||||
|
{
|
||||||
|
// Pass on the TAB-key, otherwise focus-tabbing inside modal screens breaks
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user