X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed2fbeb835854c97d176f8bdfd6f06a84273f5d7..1fe0a566bbf649efe7cadc21e8ded82458c8bdc6:/src/gtk/window.cpp?ds=sidebyside diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 8584ff8caf..e9ba04cdfe 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -31,6 +31,8 @@ #include "wx/toolbar.h" #include "wx/combobox.h" #include "wx/layout.h" + #include "wx/statusbr.h" + #include "wx/math.h" #endif #include "wx/module.h" @@ -47,14 +49,12 @@ #include "wx/caret.h" #endif // wxUSE_CARET -#include "wx/statusbr.h" #include "wx/fontutil.h" #ifdef __WXDEBUG__ #include "wx/thread.h" #endif -#include "wx/math.h" #include // FIXME: Due to a hack we use GtkCombo in here, which is deprecated since gtk2.3.0 @@ -531,6 +531,18 @@ gtk_window_expose_callback( GtkWidget *widget, // "key_press_event" from any window //----------------------------------------------------------------------------- +// These are used when transforming Ctrl-alpha to ascii values 1-26 +inline bool wxIsLowerChar(int code) +{ + return (code >= 'a' && code <= 'z' ); +} + +inline bool wxIsUpperChar(int code) +{ + return (code >= 'A' && code <= 'Z' ); +} + + // set WXTRACE to this to see the key event codes on the console #define TRACE_KEYS _T("keyevent") @@ -1082,9 +1094,13 @@ gtk_window_key_press_callback( GtkWidget *widget, // To conform to the docs we need to translate Ctrl-alpha // characters to values in the range 1-26. - if (event.ControlDown() && key_code >= 'a' && key_code <= 'z' ) + if ( event.ControlDown() && + ( wxIsLowerChar(key_code) || wxIsUpperChar(key_code) )) { - event.m_keyCode = key_code - 'a' + 1; + if ( wxIsLowerChar(key_code) ) + event.m_keyCode = key_code - 'a' + 1; + if ( wxIsUpperChar(key_code) ) + event.m_keyCode = key_code - 'A' + 1; #if wxUSE_UNICODE event.m_uniChar = event.m_keyCode; #endif @@ -1223,8 +1239,14 @@ gtk_wxwindow_commit_cb (GtkIMContext *context, // To conform to the docs we need to translate Ctrl-alpha // characters to values in the range 1-26. - if (event.ControlDown() && *pstr >= 'a' && *pstr <= 'z' ) + if ( event.ControlDown() && + ( wxIsLowerChar(*pstr) || wxIsUpperChar(*pstr) )) { + if ( wxIsLowerChar(*pstr) ) + event.m_keyCode = *pstr - 'a' + 1; + if ( wxIsUpperChar(*pstr) ) + event.m_keyCode = *pstr - 'A' + 1; + event.m_keyCode = *pstr - 'a' + 1; #if wxUSE_UNICODE event.m_uniChar = event.m_keyCode; @@ -3875,7 +3897,7 @@ GtkRcStyle *wxWindowGTK::CreateWidgetStyle(bool forceStyle) if ( m_foregroundColour.Ok() ) { - GdkColor *fg = m_foregroundColour.GetColor(); + const GdkColor *fg = m_foregroundColour.GetColor(); style->fg[GTK_STATE_NORMAL] = *fg; style->color_flags[GTK_STATE_NORMAL] = GTK_RC_FG; @@ -3889,7 +3911,7 @@ GtkRcStyle *wxWindowGTK::CreateWidgetStyle(bool forceStyle) if ( m_backgroundColour.Ok() ) { - GdkColor *bg = m_backgroundColour.GetColor(); + const GdkColor *bg = m_backgroundColour.GetColor(); style->bg[GTK_STATE_NORMAL] = *bg; style->base[GTK_STATE_NORMAL] = *bg;