]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/popupwin.cpp
hide tree root on wxMSW in wxHtmlHelpController
[wxWidgets.git] / src / x11 / popupwin.cpp
index 4ce0694c674d30ebcf8fe3d5b08e398f5d395cc4..818b86fc64f0c8ca32fb6c79dd11f31552fa360a 100644 (file)
@@ -54,6 +54,9 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
     Visual *xvisual = DefaultVisual( xdisplay, xscreen );
     Window xparent = RootWindow( xdisplay, xscreen );
     
+#if wxUSE_NANOX
+    long xattributes_mask = 0;
+#else
     XSetWindowAttributes xattributes;
     
     long xattributes_mask =
@@ -64,7 +67,8 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
     xattributes.border_pixel = BlackPixel( xdisplay, xscreen );
     xattributes.override_redirect = True;
     xattributes.save_under = True;
-
+#endif
+    
     Window xwindow = XCreateWindow( xdisplay, xparent, pos.x, pos.y, size.x, size.y, 
        0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes );
     
@@ -77,20 +81,29 @@ bool wxPopupWindow::Create( wxWindow *parent, int style )
     m_mainWidget = (WXWindow) xwindow;
     wxAddWindowToTable( xwindow, (wxWindow*) this );
 
+    // Set background to None which will prevent X11 from clearing the
+    // background comletely.
+    XSetWindowBackgroundPixmap( xdisplay, xwindow, None );
+
     XSetTransientForHint( xdisplay, xwindow, xparent );
 
+#if wxUSE_NANOX
+    // Switch off WM
+    wxSetWMDecorations(xwindow, 0);
+#else
     XWMHints wm_hints;
     wm_hints.flags = InputHint | StateHint /* | WindowGroupHint */;
     wm_hints.input = True;
     wm_hints.initial_state = NormalState;
     XSetWMHints( xdisplay, xwindow, &wm_hints);
+#endif
+    
     return TRUE;
 }
 
-void wxPopupWindow::DoMoveWindow(int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(width), int WXUNUSED(height) )
+void wxPopupWindow::DoMoveWindow(int x, int y, int width, int height )
 {
-    wxFAIL_MSG( wxT("DoMoveWindow called for wxPopupWindow") );
+    wxWindowX11::DoMoveWindow( x, y, width, height );
 }
 
 void wxPopupWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
@@ -102,11 +115,7 @@ bool wxPopupWindow::Show( bool show )
 {
     bool ret = wxWindowX11::Show( show );
 
-#if 0    
-    int x,y;
-    GetSize( &x, &y );
-    printf( "popup size %d, %d\n", x, y );
-#endif
+    Raise();
     
     return ret;
 }