GUI: Autofocus newly opened GUIModalMenu instances (#13911)
This in particular fixes incorrect event propagation to menus that are no longer shown, such as the key change menu when opened within the settings tab.
This commit is contained in:
@@ -114,7 +114,6 @@ void GUIChatConsole::openConsole(f32 scale)
|
||||
reformatConsole();
|
||||
m_animate_time_old = porting::getTimeMs();
|
||||
IGUIElement::setVisible(true);
|
||||
Environment->setFocus(this);
|
||||
m_menumgr->createdMenu(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ class MainMenuManager : public IMenuManager
|
||||
if(!m_stack.empty())
|
||||
m_stack.back()->setVisible(false);
|
||||
m_stack.push_back(menu);
|
||||
guienv->setFocus(m_stack.back());
|
||||
}
|
||||
|
||||
virtual void deletingMenu(gui::IGUIElement *menu)
|
||||
@@ -64,8 +65,10 @@ class MainMenuManager : public IMenuManager
|
||||
// Remove all entries if there are duplicates
|
||||
m_stack.remove(menu);
|
||||
|
||||
if(!m_stack.empty())
|
||||
if(!m_stack.empty()) {
|
||||
m_stack.back()->setVisible(true);
|
||||
guienv->setFocus(m_stack.back());
|
||||
}
|
||||
}
|
||||
|
||||
// Returns true to prevent further processing
|
||||
|
||||
@@ -49,7 +49,6 @@ GUIModalMenu::GUIModalMenu(gui::IGUIEnvironment* env, gui::IGUIElement* parent,
|
||||
#endif
|
||||
|
||||
setVisible(true);
|
||||
Environment->setFocus(this);
|
||||
m_menumgr->createdMenu(this);
|
||||
|
||||
m_doubleclickdetect[0].time = 0;
|
||||
|
||||
Reference in New Issue
Block a user