mirror of https://github.com/OpenTTD/OpenTTD
(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.
parent
a94da5937c
commit
23612e41f2
|
@ -613,10 +613,6 @@ static void BuildRailToolbWndProc(Window *w, WindowEvent *e)
|
||||||
case WE_KEYPRESS: {
|
case WE_KEYPRESS: {
|
||||||
int i;
|
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++)
|
for(i=0; i!=lengthof(_rail_keycodes); i++)
|
||||||
if (e->keypress.keycode == _rail_keycodes[i]) {
|
if (e->keypress.keycode == _rail_keycodes[i]) {
|
||||||
e->keypress.cont = false;
|
e->keypress.cont = false;
|
||||||
|
|
|
@ -192,10 +192,6 @@ static void BuildRoadToolbWndProc(Window *w, WindowEvent *e) {
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case WE_KEYPRESS:
|
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) {
|
switch(e->keypress.keycode) {
|
||||||
case '1': BuildRoadClick_NE(w); break;
|
case '1': BuildRoadClick_NE(w); break;
|
||||||
case '2': BuildRoadClick_NW(w); break;
|
case '2': BuildRoadClick_NW(w); break;
|
||||||
|
|
|
@ -122,10 +122,6 @@ static void TerraformToolbWndProc(Window *w, WindowEvent *e)
|
||||||
{
|
{
|
||||||
int i;
|
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++)
|
for(i=0; i!=lengthof(_terraform_keycodes); i++)
|
||||||
if (e->keypress.keycode == _terraform_keycodes[i]) {
|
if (e->keypress.keycode == _terraform_keycodes[i]) {
|
||||||
e->keypress.cont = false;
|
e->keypress.cont = false;
|
||||||
|
|
11
window.c
11
window.c
|
@ -1054,6 +1054,10 @@ static void HandleKeypress(uint32 key)
|
||||||
{
|
{
|
||||||
Window *w;
|
Window *w;
|
||||||
WindowEvent we;
|
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
|
// Setup event
|
||||||
we.keypress.event = WE_KEYPRESS;
|
we.keypress.event = WE_KEYPRESS;
|
||||||
|
@ -1061,9 +1065,16 @@ static void HandleKeypress(uint32 key)
|
||||||
we.keypress.keycode = key >> 16;
|
we.keypress.keycode = key >> 16;
|
||||||
we.keypress.cont = true;
|
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.
|
// Call the event, start with the uppermost window.
|
||||||
for(w=_last_window; w != _windows;) {
|
for(w=_last_window; w != _windows;) {
|
||||||
--w;
|
--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);
|
w->wndproc(w, &we);
|
||||||
if (!we.keypress.cont)
|
if (!we.keypress.cont)
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue