From fc9be1cf3553aa085a8154c2e2c913ab30fe3b3a Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Sat, 16 Feb 2002 19:23:59 +0000 Subject: [PATCH] Forgot to move update and clear regions when scrolling. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/x11/window.cpp | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/src/x11/window.cpp b/src/x11/window.cpp index 744cdd6b1d..5a4171b56e 100644 --- a/src/x11/window.cpp +++ b/src/x11/window.cpp @@ -227,7 +227,7 @@ void wxWindowX11::SetFocus() if (wxWindowIsVisible(xwindow)) { - XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToParent, CurrentTime ); + // XSetInputFocus( wxGlobalDisplay(), xwindow, RevertToParent, CurrentTime ); m_needsInputFocus = FALSE; } else @@ -253,6 +253,19 @@ wxWindow *wxWindowBase::FindFocus() return NULL; } +wxWindow *wxWindowX11::GetFocusWidget() +{ + wxWindow *win = (wxWindow*) this; + while (!win->IsTopLevel()) + { + win = win->GetParent(); + if (!win) + return (wxWindow*) NULL; + } + + return win; +} + // Enabling/disabling handled by event loop, and not sending events // if disabled. bool wxWindowX11::Enable(bool enable) @@ -460,6 +473,29 @@ void wxWindowX11::WarpPointer (int x, int y) // Does a physical scroll void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect) { + // No scrolling requested. + if ((dx == 0) && (dy == 0)) return; + + if (!m_updateRegion.IsEmpty()) + { + m_updateRegion.Offset( dx, dy ); + + int cw = 0; + int ch = 0; + GetSize( &cw, &ch ); // GetClientSize() ?? + m_updateRegion.Intersect( 0, 0, cw, ch ); + } + + if (!m_clearRegion.IsEmpty()) + { + m_clearRegion.Offset( dx, dy ); + + int cw = 0; + int ch = 0; + GetSize( &cw, &ch ); // GetClientSize() ?? + m_clearRegion.Intersect( 0, 0, cw, ch ); + } + Window xwindow = (Window) GetMainWindow(); wxCHECK_RET( xwindow, wxT("invalid window") ); -- 2.45.2