From 8c951cae5bcfa715e227d47d122cc2de45d70a63 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Sat, 12 Mar 2016 11:58:02 -0500 Subject: 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. --- src/guiChatConsole.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/guiChatConsole.cpp') diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp index d59937c31..ec9d3ffdc 100644 --- a/src/guiChatConsole.cpp +++ b/src/guiChatConsole.cpp @@ -122,6 +122,8 @@ void GUIChatConsole::openConsole(f32 height) m_desired_height_fraction = height; m_desired_height = height * m_screensize.Y; reformatConsole(); + m_animate_time_old = getTimeMs(); + IGUIElement::setVisible(true); Environment->setFocus(this); m_menumgr->createdMenu(this); } @@ -243,6 +245,11 @@ void GUIChatConsole::animate(u32 msec) { // animate the console height 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) { 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; } +void GUIChatConsole::setVisible(bool visible) +{ + m_open = visible; + IGUIElement::setVisible(visible); + if (!visible) { + m_height = 0; + recalculateConsolePosition(); + } +} + -- cgit v1.2.3