Fix chat console not opening after formspec opened over it

The MainMenuManager set the console invisible when a
formspec opened over it, but didn't properly close it,
and the chat console never set itself visible again.
This commit is contained in:
ShadowNinja 2016-03-12 11:58:02 -05:00
parent 20312fda18
commit 8c951cae5b
2 changed files with 19 additions and 0 deletions

@ -122,6 +122,8 @@ void GUIChatConsole::openConsole(f32 height)
m_desired_height_fraction = height; m_desired_height_fraction = height;
m_desired_height = height * m_screensize.Y; m_desired_height = height * m_screensize.Y;
reformatConsole(); reformatConsole();
m_animate_time_old = getTimeMs();
IGUIElement::setVisible(true);
Environment->setFocus(this); Environment->setFocus(this);
m_menumgr->createdMenu(this); m_menumgr->createdMenu(this);
} }
@ -243,6 +245,11 @@ void GUIChatConsole::animate(u32 msec)
{ {
// animate the console height // animate the console height
s32 goal = m_open ? m_desired_height : 0; s32 goal = m_open ? m_desired_height : 0;
// Set invisible if close animation finished (reset by openConsole)
if (!m_open && m_height == 0)
IGUIElement::setVisible(false);
if (m_height != goal) if (m_height != goal)
{ {
s32 max_change = msec * m_screensize.Y * (m_height_speed / 1000.0); s32 max_change = msec * m_screensize.Y * (m_height_speed / 1000.0);
@ -628,3 +635,13 @@ bool GUIChatConsole::OnEvent(const SEvent& event)
return Parent ? Parent->OnEvent(event) : false; return Parent ? Parent->OnEvent(event) : false;
} }
void GUIChatConsole::setVisible(bool visible)
{
m_open = visible;
IGUIElement::setVisible(visible);
if (!visible) {
m_height = 0;
recalculateConsolePosition();
}
}

@ -77,6 +77,8 @@ public:
virtual bool OnEvent(const SEvent& event); virtual bool OnEvent(const SEvent& event);
virtual void setVisible(bool visible);
private: private:
void reformatConsole(); void reformatConsole();
void recalculateConsolePosition(); void recalculateConsolePosition();