]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/utilsx.cpp
Merge in from trunk r64802 - r68625
[wxWidgets.git] / src / x11 / utilsx.cpp
index 9bc793e343cc1aa57b4536d39d72e60e2c72a41f..3285b0a2a4f8145ccd0ef9a7ac8c89fb7525b5c5 100644 (file)
     #include "wx/dcmemory.h"
 #endif
 
     #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
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // XShape code
 // ----------------------------------------------------------------------------
@@ -58,14 +70,14 @@ bool wxDoSetShape( Display* xdisplay,
     else
     {
         // wxRegion::ConvertToBitmap gives us the wrong Pixmap:
     else
     {
         // wxRegion::ConvertToBitmap gives us the wrong Pixmap:
-        // polichrome and with black and whire reversed
+        // polychrome and with black and white reversed
         wxRect box = region.GetBox();
         wxBitmap bmp(box.GetRight(), box.GetBottom(), 1);
         wxMemoryDC dc;
         dc.SelectObject(bmp);
         dc.SetBackground(*wxBLACK_BRUSH);
         dc.Clear();
         wxRect box = region.GetBox();
         wxBitmap bmp(box.GetRight(), box.GetBottom(), 1);
         wxMemoryDC dc;
         dc.SelectObject(bmp);
         dc.SetBackground(*wxBLACK_BRUSH);
         dc.Clear();
-        dc.SetClippingRegion(region);
+        dc.SetDeviceClippingRegion(region);
         dc.SetBackground(*wxWHITE_BRUSH);
         dc.Clear();
         dc.SelectObject(wxNullBitmap);
         dc.SetBackground(*wxWHITE_BRUSH);
         dc.Clear();
         dc.SelectObject(wxNullBitmap);
@@ -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
+}
+