X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/43c05cf8e19cfbe91720e7a4616fa7fe42fa3b44..fcdd53359135f790b85728c4254b97095a56dad8:/src/x11/window.cpp diff --git a/src/x11/window.cpp b/src/x11/window.cpp index 2e2df49db8..6cae3175d7 100644 --- a/src/x11/window.cpp +++ b/src/x11/window.cpp @@ -122,6 +122,11 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, { wxCHECK_MSG( parent, false, wxT("can't create wxWindow without parent") ); + // Get default border + wxBorder border = GetBorder(style); + style &= ~wxBORDER_MASK; + style |= border; + CreateBase(parent, id, pos, size, style, wxDefaultValidator, name); parent->AddChild(this); @@ -164,7 +169,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, #if wxUSE_TWO_WINDOWS bool need_two_windows = - ((( wxSUNKEN_BORDER | wxRAISED_BORDER | wxSIMPLE_BORDER | wxHSCROLL | wxVSCROLL ) & m_windowStyle) != 0); + ((( wxSUNKEN_BORDER | wxBORDER_THEME | wxRAISED_BORDER | wxSIMPLE_BORDER | wxHSCROLL | wxVSCROLL ) & m_windowStyle) != 0); #else bool need_two_windows = false; #endif @@ -230,7 +235,7 @@ bool wxWindowX11::Create(wxWindow *parent, wxWindowID id, } #endif - if (HasFlag( wxSUNKEN_BORDER) || HasFlag( wxRAISED_BORDER)) + if (HasFlag(wxSUNKEN_BORDER) || HasFlag(wxRAISED_BORDER) || HasFlag(wxBORDER_THEME)) { pos2.x = 2; pos2.y = 2; @@ -676,8 +681,8 @@ void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) if (dx < 0) s_x += -dx; if (dy < 0) s_y += -dy; - if (dx > 0) d_x = dx + offset.x; - if (dy > 0) d_y = dy + offset.y; + if (dx > 0) d_x += dx + offset.x; + if (dy > 0) d_y += dy + offset.y; XCopyArea( xdisplay, xwindow, xwindow, xgc, s_x, s_y, w, h, d_x, d_y ); @@ -1201,12 +1206,12 @@ void wxWindowX11::SendEraseEvents() if (m_clearRegion.IsEmpty()) return; wxClientDC dc( (wxWindow*)this ); - dc.SetClippingRegion( m_clearRegion ); + dc.SetDeviceClippingRegion( m_clearRegion ); wxEraseEvent erase_event( GetId(), &dc ); erase_event.SetEventObject( this ); - if (!GetEventHandler()->ProcessEvent(erase_event) ) + if (!HandleWindowEvent(erase_event) ) { Display *xdisplay = wxGlobalDisplay(); Window xwindow = (Window) GetClientAreaWindow(); @@ -1232,7 +1237,7 @@ void wxWindowX11::SendPaintEvents() wxPaintEvent paint_event( GetId() ); paint_event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( paint_event ); + HandleWindowEvent( paint_event ); m_updateRegion.Clear(); @@ -1274,7 +1279,7 @@ void wxWindowX11::SendNcPaintEvents() wxNcPaintEvent nc_paint_event( GetId() ); nc_paint_event.SetEventObject( this ); - GetEventHandler()->ProcessEvent( nc_paint_event ); + HandleWindowEvent( nc_paint_event ); m_updateNcArea = false; } @@ -1295,7 +1300,7 @@ void wxWindowX11::OnSysColourChanged(wxSysColourChangedEvent& event) { wxSysColourChangedEvent event2; event.SetEventObject(win); - win->GetEventHandler()->ProcessEvent(event2); + win->HandleWindowEvent(event2); } node = node->GetNext(); @@ -1312,7 +1317,7 @@ void wxWindowX11::OnInternalIdle() // This calls the UI-update mechanism (querying windows for // menu/toolbar/control state information) - if (wxUpdateUIEvent::CanUpdate((wxWindow*) this)) + if (wxUpdateUIEvent::CanUpdate((wxWindow*) this) && IsShownOnScreen()) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); // Set the input focus if couldn't do it before @@ -1416,7 +1421,10 @@ WXWindow wxWindowX11::GetClientAreaWindow() const // TranslateXXXEvent() functions // ---------------------------------------------------------------------------- -bool wxTranslateMouseEvent(wxMouseEvent& wxevent, wxWindow *win, Window window, XEvent *xevent) +bool wxTranslateMouseEvent(wxMouseEvent& wxevent, + wxWindow *win, + Window WXUNUSED(window), + XEvent *xevent) { switch (XEventGetType(xevent)) { @@ -1648,7 +1656,8 @@ wxWindow *wxWindowBase::GetCapture() // position. wxWindow* wxFindWindowAtPointer(wxPoint& pt) { - return wxFindWindowAtPoint(wxGetMousePosition()); + pt = wxGetMousePosition(); + return wxFindWindowAtPoint(pt); } void wxGetMouseState(int& rootX, int& rootY, unsigned& maskReturn)