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
This commit is contained in:
Vadim Zeitlin
2009-09-22 00:22:44 +00:00
parent ef3da29bf1
commit f9837e4693
4 changed files with 33 additions and 33 deletions

View File

@@ -923,12 +923,15 @@ void wxQsort(void *const pbase, size_t total_elems,
#if wxUSE_GUI #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) ) 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 // Launch default browser

View File

@@ -438,8 +438,6 @@ bool wxApp::Initialize(int& argc_, wxChar **argv_)
// we can not enter threads before gtk_init is done // we can not enter threads before gtk_init is done
gdk_threads_enter(); gdk_threads_enter();
wxSetDetectableAutoRepeat( true );
#if wxUSE_INTL #if wxUSE_INTL
wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding()); wxFont::SetDefaultEncoding(wxLocale::GetSystemEncoding());
#endif #endif

View File

@@ -45,18 +45,6 @@
#include "gtk/gtk.h" #include "gtk/gtk.h"
#include "gdk/gdkx.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 #if wxUSE_DETECT_SM
#include "X11/Xlib.h" #include "X11/Xlib.h"
#include "X11/SM/SMlib.h" #include "X11/SM/SMlib.h"
@@ -80,22 +68,6 @@ void wxBell()
} }
#endif #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 // display characterstics
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -35,6 +35,18 @@
#include "wx/dcmemory.h" #include "wx/dcmemory.h"
#endif #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 // XShape code
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -236,3 +248,18 @@ void wxXVisualInfo::Init( Display* dpy, XVisualInfo* vi )
} }
#endif // !wxUSE_NANOX #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
}