]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/toplevel.cpp
don't use -q option with egrep, Solaris doesn't have it (bug 517145)
[wxWidgets.git] / src / x11 / toplevel.cpp
index 101ef8e4462d2daa0514e94cf4ba417b65bca757..b610b7f0a5fcdc540778c2a541750aed7a504673 100644 (file)
@@ -39,7 +39,9 @@
     #include "wx/statusbr.h"
 #endif //WX_PRECOMP
 
+#include "wx/settings.h"
 #include "wx/x11/private.h"
+#include "X11/Xutil.h"
 
 bool wxMWMIsRunning(Window w);
 
@@ -88,7 +90,13 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
     int xscreen = DefaultScreen( xdisplay );
     Visual *xvisual = DefaultVisual( xdisplay, xscreen );
     Window xparent = RootWindow( xdisplay, xscreen );
+    Colormap cm = DefaultColormap( xdisplay, xscreen );
     
+    // TODO: For dialogs, this should be wxSYS_COLOUR_3DFACE
+    m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE);
+    m_backgroundColour.CalcPixel( (WXColormap) cm );
+    m_hasBgCol = TRUE;
+       
     XSetWindowAttributes xattributes;
     XSizeHints size_hints;
     XWMHints wm_hints;
@@ -96,8 +104,11 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent,
     long xattributes_mask =
         CWOverrideRedirect |
         CWBorderPixel | CWBackPixel;
-    xattributes.background_pixel = BlackPixel( xdisplay, xscreen );
+    xattributes.background_pixel = m_backgroundColour.GetPixel();
     xattributes.border_pixel = BlackPixel( xdisplay, xscreen );
+
+    // TODO: if we want no border, caption etc.,
+    // I think we set this to True to remove decorations
     xattributes.override_redirect = False;
     
     Window xwindow = XCreateWindow( xdisplay, xparent, pos.x, pos.y, size.x, size.y, 
@@ -249,7 +260,7 @@ void wxTopLevelWindowX11::SetIcon(const wxIcon& icon)
         if (icon.GetMask())
         {
             wmHints->flags |= IconMaskHint;
-            wmHints->icon_mask = (Pixmap) icon.GetMask()->GetPixmap();
+            wmHints->icon_mask = (Pixmap) icon.GetMask()->GetBitmap();
         }
 
         XSetWMHints(wxGlobalDisplay(), (Window) GetMainWindow(), wmHints);
@@ -401,18 +412,24 @@ bool wxMWMIsRunning(Window w)
 // smaller
 wxPoint wxTopLevelWindowX11::GetClientAreaOrigin() const
 {
+    // In fact wxFrame::GetClientAreaOrigin
+    // does the required calculation already.
+#if 0
     if (this->IsKindOf(CLASSINFO(wxFrame)))
     {
        wxFrame* frame = (wxFrame*) this;
        if (frame->GetMenuBar())
            return wxPoint(0, frame->GetMenuBar()->GetSize().y);
     }
+#endif
     return wxPoint(0, 0);
 }
 
 void wxTopLevelWindowX11::DoGetClientSize( int *width, int *height ) const
 {
     wxWindowX11::DoGetClientSize(width, height);
+    // Done by wxTopLevelWindow
+#if 0
     if (this->IsKindOf(CLASSINFO(wxFrame)))
     {
        wxFrame* frame = (wxFrame*) this;
@@ -421,11 +438,11 @@ void wxTopLevelWindowX11::DoGetClientSize( int *width, int *height ) const
        if (frame->GetStatusBar())
            (*height) -= frame->GetStatusBar()->GetSize().y;
     }
+#endif
 }
 
 void wxTopLevelWindowX11::DoSetClientSize(int width, int height)
 {
-    // TODO - take menubar and status line into account
     wxWindowX11::DoSetClientSize(width, height);
 #if 0
     if (!GetMainWindow())