X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6655c15632371f272d9d1536ef0e5558e1437c27..3b96fc2f1b64f78bba7c755a5c14f618962f696b:/src/unix/utilsx11.cpp diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp index 1f62bea9e9..6510b0d3db 100644 --- a/src/unix/utilsx11.cpp +++ b/src/unix/utilsx11.cpp @@ -65,12 +65,19 @@ static bool IsMapped(Display *display, Window window) // Suspends X11 errors. Used when we expect errors but they are not fatal // for us. +extern "C" +{ + typedef int (*wxX11ErrorHandler)(Display *, XErrorEvent *); + + static int wxX11ErrorsSuspender_handler(Display*, XErrorEvent*) { return 0; } +} + class wxX11ErrorsSuspender { public: wxX11ErrorsSuspender(Display *d) : m_display(d) { - m_old = XSetErrorHandler(handler); + m_old = XSetErrorHandler(wxX11ErrorsSuspender_handler); } ~wxX11ErrorsSuspender() { @@ -80,8 +87,7 @@ public: private: Display *m_display; - int (*m_old)(Display*, XErrorEvent *); - static int handler(Display *, XErrorEvent *) { return 0; } + wxX11ErrorHandler m_old; }; @@ -196,7 +202,7 @@ void wxSetIconsX11( WXDisplay* display, WXWindow window, // implements, KDE will support it from version 3.2. At toolkits level, // GTK+ >= 2.1.2 uses it as the only method of making windows fullscreen // (that's why wxGTK will *not* switch to using gtk_window_fullscreen -// unless it has better compatiblity with older WMs). +// unless it has better compatibility with older WMs). // // // This is what wxWidgets does in wxSetFullScreenStateX11: @@ -406,7 +412,7 @@ static void wxSetKDEFullscreen(Display *display, Window rootWnd, lng = 1; } - // it is neccessary to unmap the window, otherwise kwin will ignore us: + // it is necessary to unmap the window, otherwise kwin will ignore us: XSync(display, False); bool wasMapped = IsMapped(display, w); @@ -433,12 +439,12 @@ static void wxSetKDEFullscreen(Display *display, Window rootWnd, if (!fullscreen) { - // NB: like many other WMs, kwin ignores first request for window + // NB: like many other WMs, kwin ignores the first request for a window // position change after the window was mapped. This additional // move+resize event will ensure that the window is restored in - // exactly same position as before it was made fullscreen (because - // wxTopLevelWindow::ShowFullScreen will call SetSize, thus - // setting the position for second time). + // exactly the same position as before it was made fullscreen + // (because wxTopLevelWindow::ShowFullScreen will call SetSize, thus + // setting the position for the second time). XMoveResizeWindow(display, w, origRect->x, origRect->y, origRect->width, origRect->height); @@ -764,8 +770,11 @@ KeySym wxCharCodeWXToX(int id) bool wxGetKeyState(wxKeyCode key) { + wxASSERT_MSG(key != WXK_LBUTTON && key != WXK_RBUTTON && key != + WXK_MBUTTON, wxT("can't use wxGetKeyState() for mouse buttons")); + #if defined(__WXX11__) - Display *pDisplay = wxApp::GetDisplay(); + Display *pDisplay = (Display*) wxApp::GetDisplay(); #elif defined(__WXGTK__) Display *pDisplay = GDK_DISPLAY(); #elif defined(__WXMOTIF__)