X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/952ebeba3401d7778d3bcee437b5d9c1f5954c15..3dbe38c3700099a9c3d8423131eff0a8f394a0a4:/src/x11/toplevel.cpp?ds=sidebyside diff --git a/src/x11/toplevel.cpp b/src/x11/toplevel.cpp index 779bb40699..e139ee21a4 100644 --- a/src/x11/toplevel.cpp +++ b/src/x11/toplevel.cpp @@ -38,23 +38,9 @@ #endif //WX_PRECOMP #include "wx/x11/private.h" -#include "X11/Xatom.h" -#include "X11/Xutil.h" -// Set the window manager decorations according to the -// given wxWindows style -#if 0 -static bool SetWMDecorations(Widget w, long style); -#endif -static bool MWMIsRunning(Window w); - - -// ---------------------------------------------------------------------------- -// globals -// ---------------------------------------------------------------------------- -// list of all frames and modeless dialogs -// wxWindowList wxModelessWindows; +bool wxMWMIsRunning(Window w); // ---------------------------------------------------------------------------- // wxTopLevelWindowX11 creation @@ -74,22 +60,6 @@ void wxTopLevelWindowX11::Init() m_fsIsShowing = FALSE; } -bool wxTopLevelWindowX11::CreateDialog(const wxString& title, - const wxPoint& pos, - const wxSize& size) -{ - // TODO - return FALSE; -} - -bool wxTopLevelWindowX11::CreateFrame(const wxString& title, - const wxPoint& pos, - const wxSize& size) -{ - // TODO - return FALSE; -} - bool wxTopLevelWindowX11::Create(wxWindow *parent, wxWindowID id, const wxString& title, @@ -102,11 +72,15 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent, Init(); m_windowStyle = style; + m_parent = parent; SetName(name); m_windowId = id == -1 ? NewControlId() : id; + if (parent) + parent->AddChild(this); + wxTopLevelWindows.Append(this); Display *xdisplay = wxGlobalDisplay(); @@ -119,7 +93,7 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent, XWMHints wm_hints; long xattributes_mask = - CWEventMask | + CWOverrideRedirect | CWBorderPixel | CWBackPixel; xattributes.background_pixel = BlackPixel( xdisplay, xscreen ); xattributes.border_pixel = BlackPixel( xdisplay, xscreen ); @@ -127,6 +101,7 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent, Window xwindow = XCreateWindow( xdisplay, xparent, pos.x, pos.y, size.x, size.y, 0, DefaultDepth(xdisplay,xscreen), InputOutput, xvisual, xattributes_mask, &xattributes ); + m_mainWidget = (WXWindow) xwindow; XSelectInput( xdisplay, xwindow, ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | @@ -151,9 +126,7 @@ bool wxTopLevelWindowX11::Create(wxWindow *parent, Atom wm_delete_window = XInternAtom( xdisplay, "WM_DELETE_WINDOW", False); XSetWMProtocols( xdisplay, xwindow, &wm_delete_window, 1); -#if 0 - SetWMDecorations((Window) GetMainWindow(), style); -#endif + wxSetWMDecorations((Window) GetMainWindow(), style); SetTitle(title); @@ -164,9 +137,6 @@ wxTopLevelWindowX11::~wxTopLevelWindowX11() { wxTopLevelWindows.DeleteObject(this); - if ( wxModelessWindows.Find(this) ) - wxModelessWindows.DeleteObject(this); - // If this is the last top-level window, exit. if ( wxTheApp && (wxTopLevelWindows.Number() == 0) ) { @@ -186,9 +156,6 @@ wxTopLevelWindowX11::~wxTopLevelWindowX11() bool wxTopLevelWindowX11::Show(bool show) { - if ( !wxWindowBase::Show(show) ) - return FALSE; - return wxWindowX11::Show(show); } @@ -273,22 +240,19 @@ void wxTopLevelWindowX11::SetIcon(const wxIcon& icon) if (icon.Ok() && GetMainWindow()) { -#if 0 XWMHints *wmHints = XAllocWMHints(); - wmHints.icon_pixmap = (Pixmap) icon.GetPixmap(); + wmHints->icon_pixmap = (Pixmap) icon.GetPixmap(); - wmHints.flags = IconPixmapHint; + wmHints->flags = IconPixmapHint; if (icon.GetMask()) { - wmHints.flags |= IconMaskHint; - wmHints.icon_mask = (Pixmap) icon.GetMask()->GetPixmap(); + wmHints->flags |= IconMaskHint; + wmHints->icon_mask = (Pixmap) icon.GetMask()->GetPixmap(); } - XSetWMHints(wxGlobalDisplay(), (Window) GetMainWindow(), - wmHints); + XSetWMHints(wxGlobalDisplay(), (Window) GetMainWindow(), wmHints); XFree(wmHints); -#endif } } @@ -301,6 +265,8 @@ void wxTopLevelWindowX11::SetTitle(const wxString& title) (const char*) title); XSetIconName(wxGlobalDisplay(), (Window) GetMainWindow(), (const char*) title); + + // Use this if the platform doesn't supply the above functions. #if 0 XTextProperty textProperty; textProperty.value = (unsigned char*) title; @@ -346,10 +312,9 @@ struct MwmHints { // Set the window manager decorations according to the // given wxWindows style -#if 0 -static bool SetWMDecorations(Widget w, long style) +bool wxSetWMDecorations(Window w, long style) { - if (!MWMIsRunning(w)) + if (!wxMWMIsRunning(w)) return FALSE; Atom mwm_wm_hints = XInternAtom(wxGlobalDisplay(),"_MOTIF_WM_HINTS", False); @@ -403,15 +368,14 @@ static bool SetWMDecorations(Widget w, long style) XChangeProperty(wxGlobalDisplay(), w, - mwm_wm_hints, mem_wm_hints, + mwm_wm_hints, mwm_wm_hints, 32, PropModeReplace, (unsigned char *) &hints, PROP_MOTIF_WM_HINTS_ELEMENTS); return TRUE; } -#endif -static bool MWMIsRunning(Window w) +bool wxMWMIsRunning(Window w) { Display *dpy = (Display*)wxGetDisplay(); Atom motifWmInfo = XInternAtom(dpy, "_MOTIF_WM_INFO", False); @@ -431,4 +395,4 @@ static bool MWMIsRunning(Window w) return (ret == Success); } - \ No newline at end of file +