From f9837e4693de73bc10087e6709e9cdd6e3834855 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 22 Sep 2009 00:22:44 +0000 Subject: [PATCH] Define wxSetDetectableAutoRepeat() for X11-based ports only. This function is not needed in wxGTK2 as GTK+ sets detectable auto-repeat on its own in gdk_display_open() anyhow, so move its implementation to src/x11/utilsx.cpp where it can be used by wxX11 and wxMotif which do need it. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62001 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/utilscmn.cpp | 9 ++++++--- src/gtk/app.cpp | 2 -- src/gtk/utilsgtk.cpp | 28 ---------------------------- src/x11/utilsx.cpp | 27 +++++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 3127e80950..3c6d04dcd1 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -923,12 +923,15 @@ void wxQsort(void *const pbase, size_t total_elems, #if wxUSE_GUI -#ifndef __WXGTK__ +// this function is only really implemented for X11-based ports, including GTK1 +// (GTK2 sets detectable auto-repeat automatically anyhow) +#if !(defined(__WXX11__) || defined(__WXMOTIF__) || \ + (defined(__WXGTK__) && !defined(__WXGTK20__))) bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) ) { - return true; // detectable auto-repeat is the only mode MSW supports + return true; } -#endif // !wxGTK +#endif // !X11-based port // ---------------------------------------------------------------------------- // Launch default browser diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index a627c8ee22..a605152fbf 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -438,8 +438,6 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_) // we can not enter threads before gtk_init is done gdk_threads_enter(); - wxSetDetectableAutoRepeat( true ); - #if wxUSE_INTL wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding()); #endif diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp index e144201082..bfcbbc8ab2 100644 --- a/src/gtk/utilsgtk.cpp +++ b/src/gtk/utilsgtk.cpp @@ -45,18 +45,6 @@ #include "gtk/gtk.h" #include "gdk/gdkx.h" -#ifdef HAVE_X11_XKBLIB_H - /* under HP-UX and Solaris 2.6, at least, XKBlib.h defines structures with - * field named "explicit" - which is, of course, an error for a C++ - * compiler. To be on the safe side, just redefine it everywhere. */ - #define explicit __wx_explicit - - #include "X11/XKBlib.h" - - #undef explicit -#endif // HAVE_X11_XKBLIB_H - - #if wxUSE_DETECT_SM #include "X11/Xlib.h" #include "X11/SM/SMlib.h" @@ -80,22 +68,6 @@ void wxBell() } #endif -/* Don't synthesize KeyUp events holding down a key and producing - KeyDown events with autorepeat. */ -#ifdef HAVE_X11_XKBLIB_H -bool wxSetDetectableAutoRepeat( bool flag ) -{ - Bool result; - XkbSetDetectableAutoRepeat( GDK_DISPLAY(), flag, &result ); - return result; /* true if keyboard hardware supports this mode */ -} -#else -bool wxSetDetectableAutoRepeat( bool WXUNUSED(flag) ) -{ - return false; -} -#endif - // ---------------------------------------------------------------------------- // display characterstics // ---------------------------------------------------------------------------- diff --git a/src/x11/utilsx.cpp b/src/x11/utilsx.cpp index a635f8f7e8..3285b0a2a4 100644 --- a/src/x11/utilsx.cpp +++ b/src/x11/utilsx.cpp @@ -35,6 +35,18 @@ #include "wx/dcmemory.h" #endif +#ifdef HAVE_X11_XKBLIB_H + /* under HP-UX and Solaris 2.6, at least, XKBlib.h defines structures with + * field named "explicit" - which is, of course, an error for a C++ + * compiler. To be on the safe side, just redefine it everywhere. */ + #define explicit __wx_explicit + + #include "X11/XKBlib.h" + + #undef explicit +#endif // HAVE_X11_XKBLIB_H + + // ---------------------------------------------------------------------------- // XShape code // ---------------------------------------------------------------------------- @@ -236,3 +248,18 @@ void wxXVisualInfo::Init( Display* dpy, XVisualInfo* vi ) } #endif // !wxUSE_NANOX + +/* Don't synthesize KeyUp events holding down a key and producing + KeyDown events with autorepeat. */ +bool wxSetDetectableAutoRepeat( bool flag ) +{ +#ifdef HAVE_X11_XKBLIB_H + Bool result; + XkbSetDetectableAutoRepeat( (Display *)wxGetDisplay(), flag, &result ); + return result; /* true if keyboard hardware supports this mode */ +#else + wxUnusedVar(flag); + return false; +#endif +} + -- 2.47.2