]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/window.cpp
use wxHashMap, not wxHashTable in wxXPMDecoder
[wxWidgets.git] / src / x11 / window.cpp
index 5e15ddd3a2c24b3aac40f6f450dcf00e134e2bba..da1a164a6da4d0b4a13f8c25e1636daff257d580 100644 (file)
@@ -121,11 +121,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
 
     CreateBase(parent, id, pos, size, style, wxDefaultValidator, name);
 
-    if (parent)
-        parent->AddChild(this);
-
-    m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
-    m_foregroundColour = *wxBLACK;
+    parent->AddChild(this);
 
     int w = size.GetWidth();
     int h = size.GetHeight();
@@ -136,18 +132,26 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id,
     if (x == -1) x = 0;
     if (y == -1) y = 0;
 
-    int screen = DefaultScreen(wxGlobalDisplay());
+    Display *xdisplay = (Display*) wxGlobalDisplay();
+    int xscreen = DefaultScreen( xdisplay );
+    Colormap cm = DefaultColormap( xdisplay, xscreen );
 
-    Window parentWindow;
-    if (parent)
-        parentWindow = (Window) parent->GetMainWindow();
-    else
-        parentWindow = RootWindow(wxGlobalDisplay(), screen);
+    m_backgroundColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE);
+    m_backgroundColour.CalcPixel( (WXColormap) cm ); 
+    
+    m_foregroundColour = *wxBLACK;
+    m_foregroundColour.CalcPixel( (WXColormap) cm ); 
+    
+
+    Window parentWindow = (Window) parent->GetMainWindow();
 
-    Window window = XCreateSimpleWindow(wxGlobalDisplay(), parentWindow,
-        x, y, w, h, 0,
-        m_backgroundColour.AllocColour(wxGlobalDisplay()),
-        m_foregroundColour.AllocColour(wxGlobalDisplay()));
+    Window window = XCreateSimpleWindow( 
+        xdisplay, parentWindow,
+        x, y, w, h, 0, 
+        m_backgroundColour.GetPixel(),
+        m_foregroundColour.GetPixel() );
+        
+    m_mainWidget = (WXWindow) window;
 
     // Select event types wanted
     XSelectInput(wxGlobalDisplay(), window,
@@ -410,6 +414,7 @@ void wxWindowX11::WarpPointer (int x, int y)
 // Does a physical scroll
 void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect)
 {
+#if 0
     int x, y, w, h;
     if (rect)
     {
@@ -572,10 +577,7 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect)
         delete rect;
         node = node->Next();
     }
-    
-    // TODO
-
-    // XmUpdateDisplay((Widget) GetMainWidget());
+#endif
 }
 
 // ---------------------------------------------------------------------------
@@ -696,7 +698,7 @@ void wxWindowX11::DoGetClientSize(int *x, int *y) const
     if (window)
     {
         XWindowAttributes attr;
-        Status status = XGetWindowAttributes(wxGlobalDisplay(), window, & attr);
+        Status status = XGetWindowAttributes( wxGlobalDisplay(), window, &attr );
         wxASSERT(status);
         
         if (status)
@@ -964,7 +966,8 @@ void wxWindowX11::X11SendPaintEvents()
             wxRegionIterator upd( m_clearRegion );
             while (upd)
             {
-                // XClearArea( ... , upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight() );
+                XClearArea( wxGlobalDisplay(), (Window) m_mainWidget, 
+                            upd.GetX(), upd.GetY(), upd.GetWidth(), upd.GetHeight(), False );
                 upd ++;
             }
         }
@@ -1313,9 +1316,15 @@ bool wxWindowX11::SetBackgroundColour(const wxColour& col)
     if (!GetMainWindow())
         return FALSE;
 
+    Display *xdisplay = (Display*) wxGlobalDisplay();
+    int xscreen = DefaultScreen( xdisplay );
+    Colormap cm = DefaultColormap( xdisplay, xscreen );
+
     wxColour colour( col );
+    colour.CalcPixel( (WXColormap) cm );
+    
     XSetWindowAttributes attrib;
-    attrib.background_pixel = colour.AllocColour(wxGlobalDisplay());
+    attrib.background_pixel = colour.GetPixel();
 
     XChangeWindowAttributes(wxGlobalDisplay(),
         (Window) GetMainWindow(),