X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0fe0275981e662b56d9df1e5847932326f04cf0b..642446e3bfa9364d8d2971f2f53a2d5588608c19:/src/x11/window.cpp diff --git a/src/x11/window.cpp b/src/x11/window.cpp index deccc1ef5b..000e1721e1 100644 --- a/src/x11/window.cpp +++ b/src/x11/window.cpp @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "window.h" -#endif - #include "wx/setup.h" #include "wx/menu.h" #include "wx/dc.h" @@ -370,7 +366,11 @@ void wxWindowX11::SetFocus() wxCHECK_RET( xwindow, wxT("invalid window") ); - wxCHECK_RET( AcceptsFocus(), wxT("set focus on window that doesn't accept the focus") ); + // Don't assert; we might be trying to set the focus for a panel + // with only static controls, so the panel returns false from AcceptsFocus. + // The app should be not be expected to deal with this. + if (!AcceptsFocus()) + return; #if 0 if (GetName() == "scrollBar") @@ -667,6 +667,26 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) } XFreeGC( xdisplay, xgc ); + + // Move Clients, but not the scrollbars + // FIXME: There may be a better method to move a lot of Windows within X11 + wxScrollBar *sbH = ((wxWindow *) this)->GetScrollbar( wxHORIZONTAL ); + wxScrollBar *sbV = ((wxWindow *) this)->GetScrollbar( wxVERTICAL ); + wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); + while ( node ) + { + // Only propagate to non-top-level windows + wxWindow *win = node->GetData(); + if ( win->GetParent() && win != sbH && win != sbV ) + { + wxPoint pos = win->GetPosition(); + // Add the delta to the old Position + pos.x += dx; + pos.y += dy; + win->SetPosition(pos); + } + node = node->GetNext(); + } } // --------------------------------------------------------------------------- @@ -873,13 +893,6 @@ void wxWindowX11::DoSetClientSize(int width, int height) } } -// For implementation purposes - sometimes decorations make the client area -// smaller -wxPoint wxWindowX11::GetClientAreaOrigin() const -{ - return wxPoint(0, 0); -} - void wxWindowX11::DoMoveWindow(int x, int y, int width, int height) { Window xwindow = (Window) m_mainWindow; @@ -940,7 +953,7 @@ void wxWindowX11::DoMoveWindow(int x, int y, int width, int height) #endif } -void wxWindowX11::SetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH) +void wxWindowX11::DoSetSizeHints(int minW, int minH, int maxW, int maxH, int incW, int incH) { m_minWidth = minW; m_minHeight = minH; @@ -1252,7 +1265,7 @@ void wxWindowX11::OnSysColourChanged(wxSysColourChangedEvent& event) if ( win->GetParent() ) { wxSysColourChangedEvent event2; - event.m_eventObject = win; + event.SetEventObject(win); win->GetEventHandler()->ProcessEvent(event2); }