(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.
authorDarkvater
Sun, 03 Apr 2005 13:35:43 +0000
changeset 1637 5a51ba5fb8b7
parent 1636 eb2a69d8ba5c
child 1638 aae181b00846
(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.
main_gui.c
window.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);
--- 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);