From 7cb521725569b7eda98af40f7e4b4eb63afff633 Mon Sep 17 00:00:00 2001
From: "Esteban I. Ruiz Moreno" <exio4.com@gmail.com>
Date: Tue, 4 Jun 2013 23:26:52 -0300
Subject: [PATCH] Close console when it loses focus but it is still on screen

---
 src/game.cpp           | 4 ++++
 src/guiChatConsole.cpp | 5 +++++
 src/guiChatConsole.h   | 3 +++
 3 files changed, 12 insertions(+)

diff --git a/src/game.cpp b/src/game.cpp
index 22bd8c429..2d43d05b8 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -1684,6 +1684,10 @@ void the_game(
 		{
 			input->clear();
 		}
+		if (!guienv->hasFocus(gui_chat_console) && gui_chat_console->isOpen())
+		{
+			gui_chat_console->closeConsoleAtOnce();
+		}
 
 		// Input handler step() (used by the random input generator)
 		input->step(dtime);
diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp
index 3dfd0090a..c1219fb80 100644
--- a/src/guiChatConsole.cpp
+++ b/src/guiChatConsole.cpp
@@ -134,6 +134,11 @@ void GUIChatConsole::openConsole(f32 height)
 	reformatConsole();
 }
 
+bool GUIChatConsole::isOpen() const
+{
+	return m_open;
+}
+
 bool GUIChatConsole::isOpenInhibited() const
 {
 	return m_open_inhibited > 0;
diff --git a/src/guiChatConsole.h b/src/guiChatConsole.h
index c896aae28..5991157b2 100644
--- a/src/guiChatConsole.h
+++ b/src/guiChatConsole.h
@@ -39,6 +39,9 @@ class GUIChatConsole : public gui::IGUIElement
 	// This doesn't open immediately but initiates an animation.
 	// You should call isOpenInhibited() before this.
 	void openConsole(f32 height);
+
+	bool isOpen() const;
+
 	// Check if the console should not be opened at the moment
 	// This is to avoid reopening the console immediately after closing
 	bool isOpenInhibited() const;
-- 
GitLab