From: Karsten Ballüder Date: Wed, 23 Jun 1999 12:49:01 +0000 (+0000) Subject: Minor improvement to keyevent handling. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d728dd40e8b96d85a3f37c0abe4411356e2ca4a9 Minor improvement to keyevent handling. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index c70a812f99..2f86fc9602 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -631,25 +631,6 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e key_code = map_to_wx_keysym( gdk_event->keyval ); - /* wxMSW doesn't send char events with Alt pressed */ - if ((key_code != 0) && - ((gdk_event->state & GDK_MOD1_MASK) == 0) && - ((gdk_event->state & GDK_MOD2_MASK) == 0)) - { - wxKeyEvent event2( wxEVT_CHAR ); - event2.SetTimestamp( gdk_event->time ); - event2.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event2.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); -// event2.m_altDown = (gdk_event->state & GDK_MOD1_MASK); -// event2.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event2.m_keyCode = key_code; - event2.m_scanCode = gdk_event->keyval; - event2.m_x = x; - event2.m_y = y; - event2.SetEventObject( win ); - ret = (ret || win->GetEventHandler()->ProcessEvent( event2 )); - } - #if wxUSE_ACCEL if (!ret) { @@ -667,6 +648,25 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e } } #endif // wxUSE_ACCEL + /* wxMSW doesn't send char events with Alt pressed */ + /* Only send wxEVT_CHAR event if not processed yet. Thus, ALT-x + will only be sent if it is not a menu accelerator. */ + if ((key_code != 0) && ! ret ) + { + wxKeyEvent event2( wxEVT_CHAR ); + event2.SetTimestamp( gdk_event->time ); + event2.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); + event2.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); + event2.m_altDown = (gdk_event->state & GDK_MOD1_MASK); + event2.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); + event2.m_keyCode = key_code; + event2.m_scanCode = gdk_event->keyval; + event2.m_x = x; + event2.m_y = y; + event2.SetEventObject( win ); + ret = (ret || win->GetEventHandler()->ProcessEvent( event2 )); + } + /* win is a control: tab can be propagated up */ if ( (!ret) && diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index c70a812f99..2f86fc9602 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -631,25 +631,6 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e key_code = map_to_wx_keysym( gdk_event->keyval ); - /* wxMSW doesn't send char events with Alt pressed */ - if ((key_code != 0) && - ((gdk_event->state & GDK_MOD1_MASK) == 0) && - ((gdk_event->state & GDK_MOD2_MASK) == 0)) - { - wxKeyEvent event2( wxEVT_CHAR ); - event2.SetTimestamp( gdk_event->time ); - event2.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); - event2.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); -// event2.m_altDown = (gdk_event->state & GDK_MOD1_MASK); -// event2.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); - event2.m_keyCode = key_code; - event2.m_scanCode = gdk_event->keyval; - event2.m_x = x; - event2.m_y = y; - event2.SetEventObject( win ); - ret = (ret || win->GetEventHandler()->ProcessEvent( event2 )); - } - #if wxUSE_ACCEL if (!ret) { @@ -667,6 +648,25 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e } } #endif // wxUSE_ACCEL + /* wxMSW doesn't send char events with Alt pressed */ + /* Only send wxEVT_CHAR event if not processed yet. Thus, ALT-x + will only be sent if it is not a menu accelerator. */ + if ((key_code != 0) && ! ret ) + { + wxKeyEvent event2( wxEVT_CHAR ); + event2.SetTimestamp( gdk_event->time ); + event2.m_shiftDown = (gdk_event->state & GDK_SHIFT_MASK); + event2.m_controlDown = (gdk_event->state & GDK_CONTROL_MASK); + event2.m_altDown = (gdk_event->state & GDK_MOD1_MASK); + event2.m_metaDown = (gdk_event->state & GDK_MOD2_MASK); + event2.m_keyCode = key_code; + event2.m_scanCode = gdk_event->keyval; + event2.m_x = x; + event2.m_y = y; + event2.SetEventObject( win ); + ret = (ret || win->GetEventHandler()->ProcessEvent( event2 )); + } + /* win is a control: tab can be propagated up */ if ( (!ret) &&