X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b28d3abf7eb85e8a8d056076d2812977105a28e1..59c962bf54667cab735353b2ec3b7a2438464f22:/src/x11/popupwin.cpp diff --git a/src/x11/popupwin.cpp b/src/x11/popupwin.cpp index 6f9c4b7e50..debfbf577b 100644 --- a/src/x11/popupwin.cpp +++ b/src/x11/popupwin.cpp @@ -19,6 +19,8 @@ #include "wx/app.h" #include "wx/x11/private.h" +#include "X11/Xatom.h" +#include "X11/Xutil.h" //----------------------------------------------------------------------------- // wxPopupWindow @@ -40,6 +42,9 @@ bool wxPopupWindow::Create( wxWindow *parent, int style ) // All dialogs should really have this style m_windowStyle = style; m_windowStyle |= wxTAB_TRAVERSAL; + + wxPoint pos( 20,20 ); + wxSize size( 20,20 ); m_parent = parent; if (m_parent) m_parent->AddChild( this ); @@ -56,12 +61,14 @@ bool wxPopupWindow::Create( wxWindow *parent, int style ) XWMHints wm_hints; long xattributes_mask = - CWEventMask | + CWOverrideRedirect | + CWSaveUnder | CWBorderPixel | CWBackPixel; xattributes.background_pixel = BlackPixel( xdisplay, xscreen ); xattributes.border_pixel = BlackPixel( xdisplay, xscreen ); - xattributes.override_redirect = False; - + xattributes.override_redirect = True; + xattributes.save_under = True; + Window xwindow = XCreateWindow( xdisplay, xparent, pos.x, pos.y, size.x, size.y, 0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes ); @@ -71,11 +78,14 @@ bool wxPopupWindow::Create( wxWindow *parent, int style ) KeymapStateMask | FocusChangeMask | ColormapChangeMask | StructureNotifyMask | PropertyChangeMask ); - m_mainWindow = (WXWindow) xwindow; + m_mainWidget = (WXWindow) xwindow; wxAddWindowToTable( xwindow, (wxWindow*) this ); - - XSetTransientForHint( xdisplay, xwindow, xparent ); - + + // Probably shouldn't be here for an unmanaged window + //XSetTransientForHint( xdisplay, xwindow, xparent ); + + // TODO: Will these calls cause decoration?? + size_hints.flags = PSize; size_hints.width = size.x; size_hints.height = size.y; @@ -85,11 +95,14 @@ bool wxPopupWindow::Create( wxWindow *parent, int style ) wm_hints.input = True; wm_hints.initial_state = NormalState; XSetWMHints( xdisplay, xwindow, &wm_hints); - + + // No decorations for this window +#if 0 Atom wm_delete_window = XInternAtom( xdisplay, "WM_DELETE_WINDOW", False); XSetWMProtocols( xdisplay, xwindow, &wm_delete_window, 1); wxSetWMDecorations((Window) GetMainWindow(), style); +#endif return TRUE; } @@ -106,7 +119,7 @@ void wxPopupWindow::DoSetSize( int x, int y, int width, int height, int sizeFlag bool wxPopupWindow::Show( bool show ) { - return wxWindow11::Show( show ); + return wxWindowX11::Show( show ); } #endif // wxUSE_POPUPWIN