(svn r1084) Generalized hotkey catching when textfield windows are open. Now only hotkeys attached to the main toolbar are working if you have a textfield open.
authordominik
Tue, 14 Dec 2004 17:38:48 +0000
changeset 651 32b229802ed2
parent 650 e29098665100
child 652 0f553238c98a
(svn r1084) Generalized hotkey catching when textfield windows are open. Now only hotkeys attached to the main toolbar are working if you have a textfield open.
rail_gui.c
road_gui.c
terraform_gui.c
window.c
--- a/rail_gui.c	Tue Dec 14 17:06:54 2004 +0000
+++ b/rail_gui.c	Tue Dec 14 17:38:48 2004 +0000
@@ -613,10 +613,6 @@
 	case WE_KEYPRESS: {
 		int i;
 
-		// check if we have a query string window open before allowing hotkeys
-		if(FindWindowById(WC_QUERY_STRING, 0)!=NULL)
-			break;
-
 		for(i=0; i!=lengthof(_rail_keycodes); i++)
 			if (e->keypress.keycode == _rail_keycodes[i]) {
 				e->keypress.cont = false;
--- a/road_gui.c	Tue Dec 14 17:06:54 2004 +0000
+++ b/road_gui.c	Tue Dec 14 17:38:48 2004 +0000
@@ -192,10 +192,6 @@
 	}	break;
 
 	case WE_KEYPRESS:
-		// check if we have a query string window open before allowing hotkeys
-		if(FindWindowById(WC_QUERY_STRING, 0)!=NULL)
-			break;
-
 		switch(e->keypress.keycode) {
 		case '1': BuildRoadClick_NE(w); break;
 		case '2': BuildRoadClick_NW(w); break;
--- a/terraform_gui.c	Tue Dec 14 17:06:54 2004 +0000
+++ b/terraform_gui.c	Tue Dec 14 17:38:48 2004 +0000
@@ -122,10 +122,6 @@
 	{
 		int i;
 
-		// check if we have a query string window open before allowing hotkeys
-		if(FindWindowById(WC_QUERY_STRING, 0)!=NULL)
-			break;
-
 		for(i=0; i!=lengthof(_terraform_keycodes); i++)
 			if (e->keypress.keycode == _terraform_keycodes[i]) {
 				e->keypress.cont = false;
--- a/window.c	Tue Dec 14 17:06:54 2004 +0000
+++ b/window.c	Tue Dec 14 17:38:48 2004 +0000
@@ -1054,6 +1054,10 @@
 {
 	Window *w;
 	WindowEvent we;
+ /* Stores if a window with a textfield for typing is open 	
+  * If this is the case, keypress events are only passed to windows with text fields and 
+	* to thein this main toolbar. */
+	bool query_open = false;
 
 	// Setup event
 	we.keypress.event = WE_KEYPRESS;
@@ -1061,9 +1065,16 @@
 	we.keypress.keycode = key >> 16;
 	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)
+		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)
+			continue;
 		w->wndproc(w, &we);
 		if (!we.keypress.cont)
 			break;