diff options
author | Darkvater <Darkvater@openttd.org> | 2005-04-03 13:35:43 +0000 |
---|---|---|
committer | Darkvater <Darkvater@openttd.org> | 2005-04-03 13:35:43 +0000 |
commit | 9aacf737201b9b34efa6f9693a4b6d8ea825e260 (patch) | |
tree | 43d0c30344fa5ad98c004c575d478e6a31e1338b | |
parent | f203150f7d3e770e7f78d14e95c9aff37f89cdc9 (diff) | |
download | openttd-9aacf737201b9b34efa6f9693a4b6d8ea825e260.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.c | 8 | ||||
-rw-r--r-- | window.c | 7 |
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); @@ -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); |