]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/scrlwing.cpp
added missing export declarations for wxGTK internal functions needed outside of...
[wxWidgets.git] / src / generic / scrlwing.cpp
index d46d0a017cbd59d588bc94e069215d57622c365f..9eb9d41825cae0ba8642c6a030b5f34d2bb99df8 100644 (file)
@@ -277,10 +277,14 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event)
         m_scrollHelper->HandleOnMouseLeave((wxMouseEvent &)event);
     }
 #if wxUSE_MOUSEWHEEL
+    // Use GTK's own scroll wheel handling in GtkScrolledWindow
+#ifndef __WXGTK20__
     else if ( evType == wxEVT_MOUSEWHEEL )
     {
         m_scrollHelper->HandleOnMouseWheel((wxMouseEvent &)event);
+        return true;
     }
+#endif
 #endif // wxUSE_MOUSEWHEEL
     else if ( evType == wxEVT_CHAR )
     {
@@ -468,22 +472,6 @@ wxWindow *wxScrollHelper::GetTargetWindow() const
     return m_targetWindow;
 }
 
-#ifdef __WXMAC__
-static bool wxScrolledWindowHasChildren(wxWindow* win)
-{
-    wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst();
-    while ( node )
-    {
-        wxWindow* child = node->GetData();
-        if ( !child->IsKindOf(CLASSINFO(wxScrollBar)) )
-            return true;
-
-        node = node->GetNext();
-    }
-    return false;
-}
-#endif
-
 // ----------------------------------------------------------------------------
 // scrolling implementation itself
 // ----------------------------------------------------------------------------
@@ -500,11 +488,6 @@ void wxScrollHelper::HandleOnScroll(wxScrollWinEvent& event)
     }
 
     bool needsRefresh = false;
-#ifdef __WXMAC__
-    // OS X blocks on immediate redraws, so make this a refresh
-    if (!wxScrolledWindowHasChildren(m_targetWindow))
-      needsRefresh = true;
-#endif
     int dx = 0,
         dy = 0;
     int orient = event.GetOrientation();
@@ -536,7 +519,12 @@ void wxScrollHelper::HandleOnScroll(wxScrollWinEvent& event)
         // flush all pending repaints before we change m_{x,y}ScrollPosition, as
         // otherwise invalidated area could be updated incorrectly later when
         // ScrollWindow() makes sure they're repainted before scrolling them
+#ifdef __WXMAC__
+        // wxWindowMac is taking care of making sure the update area is correctly
+        // set up, while not forcing an immediate redraw
+#else
         m_targetWindow->Update();
+#endif
     }
 
     if (orient == wxHORIZONTAL)
@@ -613,49 +601,36 @@ int wxScrollHelper::CalcScrollInc(wxScrollWinEvent& event)
 
     if (orient == wxHORIZONTAL)
     {
-        if (m_xScrollPixelsPerLine > 0)
+        if ( m_xScrollPosition + nScrollInc < 0 )
         {
-            if ( m_xScrollPosition + nScrollInc < 0 )
-            {
-                // As -ve as we can go
-                nScrollInc = -m_xScrollPosition;
-            }
-            else // check for the other bound
+            // As -ve as we can go
+            nScrollInc = -m_xScrollPosition;
+        }
+        else // check for the other bound
+        {
+            const int posMax = m_xScrollLines - m_xScrollLinesPerPage;
+            if ( m_xScrollPosition + nScrollInc > posMax )
             {
-                const int posMax = m_xScrollLines - m_xScrollLinesPerPage;
-                if ( m_xScrollPosition + nScrollInc > posMax )
-                {
-                    // As +ve as we can go
-                    nScrollInc = posMax - m_xScrollPosition;
-                }
+                // As +ve as we can go
+                nScrollInc = posMax - m_xScrollPosition;
             }
         }
-        else
-            m_targetWindow->Refresh(true, GetScrollRect());
     }
-    else
+    else // wxVERTICAL
     {
-        if ( m_yScrollPixelsPerLine > 0 )
+        if ( m_yScrollPosition + nScrollInc < 0 )
         {
-            if ( m_yScrollPosition + nScrollInc < 0 )
-            {
-                // As -ve as we can go
-                nScrollInc = -m_yScrollPosition;
-            }
-            else // check for the other bound
-            {
-                const int posMax = m_yScrollLines - m_yScrollLinesPerPage;
-                if ( m_yScrollPosition + nScrollInc > posMax )
-                {
-                    // As +ve as we can go
-                    nScrollInc = posMax - m_yScrollPosition;
-                }
-            }
+            // As -ve as we can go
+            nScrollInc = -m_yScrollPosition;
         }
-        else
+        else // check for the other bound
         {
-            // VZ: why do we do this? (FIXME)
-            m_targetWindow->Refresh(true, GetScrollRect());
+            const int posMax = m_yScrollLines - m_yScrollLinesPerPage;
+            if ( m_yScrollPosition + nScrollInc > posMax )
+            {
+                // As +ve as we can go
+                nScrollInc = posMax - m_yScrollPosition;
+            }
         }
     }