]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/utilsx11.cpp
extending calculation of visible region
[wxWidgets.git] / src / unix / utilsx11.cpp
index 8f3eb5dc7d2c57c45ff860b7e22926aa36e2ca3f..d4b4d521a30fee7ace59e1238595bf2077acfc06 100644 (file)
@@ -6,11 +6,14 @@
 // Created:     25.03.02
 // RCS-ID:      $Id$
 // Copyright:   (c) wxWindows team
 // Created:     25.03.02
 // RCS-ID:      $Id$
 // Copyright:   (c) wxWindows team
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #if defined(__WXX11__) || defined(__WXGTK__) || defined(__WXMOTIF__)
 
 /////////////////////////////////////////////////////////////////////////////
 
 #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"
 #include "wx/unix/utilsx11.h"
 #include "wx/iconbndl.h"
 #include "wx/image.h"
@@ -74,6 +77,7 @@ public:
         XFlush(m_display);
         XSetErrorHandler(m_old);
     }
         XFlush(m_display);
         XSetErrorHandler(m_old);
     }
+
 private:
     Display *m_display;
     int (*m_old)(Display*, XErrorEvent *);
 private:
     Display *m_display;
     int (*m_old)(Display*, XErrorEvent *);
@@ -101,8 +105,11 @@ void wxSetIconsX11( WXDisplay* display, WXWindow window,
 
     if( size > 0 )
     {
 
     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 )
         {
 
         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:
     }
 
     // it is neccessary to unmap the window, otherwise kwin will ignore us:
+    XSync(display, False);
+    
     bool wasMapped = IsMapped(display, w);
     if (wasMapped)
     bool wasMapped = IsMapped(display, w);
     if (wasMapped)
+    {
         XUnmapWindow(display, w);
         XUnmapWindow(display, w);
+        XSync(display, False);
+    }
+
     XChangeProperty(display, w, _NET_WM_WINDOW_TYPE, XA_ATOM, 32,
                        PropModeReplace, (unsigned char *) &data, lng);
     XChangeProperty(display, w, _NET_WM_WINDOW_TYPE, XA_ATOM, 32,
                        PropModeReplace, (unsigned char *) &data, lng);
+    XSync(display, False);
+
     if (wasMapped)
     if (wasMapped)
+    {
         XMapRaised(display, w);
         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);
     
     wxWMspecSetState(display, rootWnd, w, 
                      fullscreen ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE,
                      _NET_WM_STATE_STAYS_ON_TOP);
+    XSync(display, False);
 
     if (!fullscreen)
     {
 
     if (!fullscreen)
     {
@@ -423,6 +442,7 @@ static void wxSetKDEFullscreen(Display *display, Window rootWnd,
         XMoveResizeWindow(display, w,
                           origRect->x, origRect->y,
                           origRect->width, origRect->height);
         XMoveResizeWindow(display, w,
                           origRect->x, origRect->y,
                           origRect->width, origRect->height);
+        XSync(display, False);
     }
 }
 
     }
 }