summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarkvater <darkvater@openttd.org>2005-04-03 13:35:43 +0000
committerDarkvater <darkvater@openttd.org>2005-04-03 13:35:43 +0000
commitf00d0d8ea881777742b0ae9f8a53d1e706d4b47e (patch)
tree43d0c30344fa5ad98c004c575d478e6a31e1338b
parent83d62b1aa2495c4ae9da2abae4b6b5a4dd8c18cf (diff)
downloadopenttd-f00d0d8ea881777742b0ae9f8a53d1e706d4b47e.tar.xz
(svn r2141) - Fix: Keys now hopefully only activate the right windows. If console/querybox/chatbox is open, all input goes there, if closed to game itself.
-rw-r--r--main_gui.c8
-rw-r--r--window.c7
2 files changed, 9 insertions, 6 deletions
diff --git a/main_gui.c b/main_gui.c
index 4b2580f54..3dfff92f9 100644
--- a/main_gui.c
+++ b/main_gui.c
@@ -1911,8 +1911,8 @@ static void MainToolbarWndProc(Window *w, WindowEvent *e)
case 'A': ShowBuildRailToolbar(_last_built_railtype, 4); break; /* Invoke Autorail */
case 'L': ShowTerraformToolbar(); break;
default: return;
- e->keypress.cont = false;
}
+ e->keypress.cont = false;
} break;
case WE_PLACE_OBJ: {
@@ -2397,14 +2397,14 @@ void SetupColorsAndInitialWindow(void)
// XXX: these are not done
switch(_game_mode) {
case GM_MENU:
- w = AllocateWindow(0, 0, width, height, MainWindowWndProc, 0, NULL);
+ w = AllocateWindow(0, 0, width, height, MainWindowWndProc, WC_MAIN_WINDOW, NULL);
AssignWindowViewport(w, 0, 0, width, height, TILE_XY(32, 32), 0);
// w = AllocateWindowDesc(&_toolb_intro_desc);
// w->flags4 &= ~WF_WHITE_BORDER_MASK;
ShowSelectGameWindow();
break;
case GM_NORMAL:
- w = AllocateWindow(0, 0, width, height, MainWindowWndProc, 0, NULL);
+ w = AllocateWindow(0, 0, width, height, MainWindowWndProc, WC_MAIN_WINDOW, NULL);
AssignWindowViewport(w, 0, 0, width, height, TILE_XY(32, 32), 0);
ShowVitalWindows();
@@ -2415,7 +2415,7 @@ void SetupColorsAndInitialWindow(void)
break;
case GM_EDITOR:
- w = AllocateWindow(0, 0, width, height, MainWindowWndProc, 0, NULL);
+ w = AllocateWindow(0, 0, width, height, MainWindowWndProc, WC_MAIN_WINDOW, NULL);
AssignWindowViewport(w, 0, 0, width, height, 0, 0);
w = AllocateWindowDesc(&_toolb_scen_desc);
diff --git a/window.c b/window.c
index 58bbf368d..b9d46a53a 100644
--- a/window.c
+++ b/window.c
@@ -1266,19 +1266,22 @@ static void HandleKeypress(uint32 key)
we.keypress.cont = true;
// check if we have a query string window open before allowing hotkeys
- if(FindWindowById(WC_QUERY_STRING, 0)!=NULL || FindWindowById(WC_SEND_NETWORK_MSG, 0)!=NULL)
+ if(FindWindowById(WC_QUERY_STRING, 0)!=NULL || FindWindowById(WC_SEND_NETWORK_MSG, 0)!=NULL || FindWindowById(WC_CONSOLE, 0)!=NULL)
query_open = true;
// Call the event, start with the uppermost window.
for(w=_last_window; w != _windows;) {
--w;
// if a query window is open, only call the event for certain window types
- if(query_open && w->window_class!=WC_QUERY_STRING && w->window_class!=WC_SEND_NETWORK_MSG && w->window_class!=WC_MAIN_TOOLBAR)
+ if(query_open && w->window_class!=WC_QUERY_STRING && w->window_class!=WC_SEND_NETWORK_MSG && w->window_class!=WC_CONSOLE)
continue;
w->wndproc(w, &we);
if (!we.keypress.cont)
break;
}
+
+ if (we.keypress.cont)
+ FindWindowById(WC_MAIN_TOOLBAR, 0)->wndproc(w, &we);
}
extern void UpdateTileSelection(void);