# HG changeset patch # User Darkvater # Date 1112535343 0 # Node ID 5a51ba5fb8b7b2815b7b4ca9ddd05c1137487b51 # Parent eb2a69d8ba5c69f837de41596bdcbe92047dc208 (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. diff -r eb2a69d8ba5c -r 5a51ba5fb8b7 main_gui.c --- a/main_gui.c Sun Apr 03 10:21:37 2005 +0000 +++ b/main_gui.c Sun Apr 03 13:35:43 2005 +0000 @@ -1911,8 +1911,8 @@ case 'A': ShowBuildRailToolbar(_last_built_railtype, 4); break; /* Invoke Autorail */ case 'L': ShowTerraformToolbar(); break; default: return; + } e->keypress.cont = false; - } } break; case WE_PLACE_OBJ: { @@ -2397,14 +2397,14 @@ // 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 @@ 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 -r eb2a69d8ba5c -r 5a51ba5fb8b7 window.c --- a/window.c Sun Apr 03 10:21:37 2005 +0000 +++ b/window.c Sun Apr 03 13:35:43 2005 +0000 @@ -1266,19 +1266,22 @@ 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);