X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7f891ef1070ac4d98897e60158db1a088037c189..908d407cf9dcdcd2855a93b92333caff965c4f72:/src/unix/utilsx11.cpp diff --git a/src/unix/utilsx11.cpp b/src/unix/utilsx11.cpp index 8f3eb5dc7d..d4b4d521a3 100644 --- a/src/unix/utilsx11.cpp +++ b/src/unix/utilsx11.cpp @@ -6,11 +6,14 @@ // Created: 25.03.02 // RCS-ID: $Id$ // Copyright: (c) wxWindows team -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #if defined(__WXX11__) || defined(__WXGTK__) || defined(__WXMOTIF__) +// for compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + #include "wx/unix/utilsx11.h" #include "wx/iconbndl.h" #include "wx/image.h" @@ -74,6 +77,7 @@ public: XFlush(m_display); XSetErrorHandler(m_old); } + private: Display *m_display; int (*m_old)(Display*, XErrorEvent *); @@ -101,8 +105,11 @@ void wxSetIconsX11( WXDisplay* display, WXWindow window, if( size > 0 ) { - wxUint32* data = new wxUint32[size]; - wxUint32* ptr = data; +// The code below is correct for 64-bit machines also. +// wxUint32* data = new wxUint32[size]; +// wxUint32* ptr = data; + unsigned long* data = new unsigned long[size]; + unsigned long* ptr = data; for( i = 0; i < max; ++i ) { @@ -400,17 +407,29 @@ static void wxSetKDEFullscreen(Display *display, Window rootWnd, } // it is neccessary to unmap the window, otherwise kwin will ignore us: + XSync(display, False); + bool wasMapped = IsMapped(display, w); if (wasMapped) + { XUnmapWindow(display, w); + XSync(display, False); + } + XChangeProperty(display, w, _NET_WM_WINDOW_TYPE, XA_ATOM, 32, PropModeReplace, (unsigned char *) &data, lng); + XSync(display, False); + if (wasMapped) + { XMapRaised(display, w); + XSync(display, False); + } wxWMspecSetState(display, rootWnd, w, fullscreen ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE, _NET_WM_STATE_STAYS_ON_TOP); + XSync(display, False); if (!fullscreen) { @@ -423,6 +442,7 @@ static void wxSetKDEFullscreen(Display *display, Window rootWnd, XMoveResizeWindow(display, w, origRect->x, origRect->y, origRect->width, origRect->height); + XSync(display, False); } }