]> git.saurik.com Git - wxWidgets.git/commitdiff
Forgot to move update and clear regions when scrolling.
authorRobert Roebling <robert@roebling.de>
Sat, 16 Feb 2002 19:23:59 +0000 (19:23 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 16 Feb 2002 19:23:59 +0000 (19:23 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/x11/window.cpp

index 744cdd6b1d6be79dd43bf19c89e232895a40adcc..5a4171b56e336c92fe836e287737a8224fd4c9fd 100644 (file)
@@ -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") );