]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/scrlwing.cpp
switching to new renderer API
[wxWidgets.git] / src / generic / scrlwing.cpp
index e05ecbda17a3e6fdc62db89d660022b3fb3db980..be460077749407c266978a12f696b4c9c2dfa2f6 100644 (file)
@@ -311,6 +311,8 @@ wxScrollHelper::wxScrollHelper(wxWindow *win)
     m_handler = NULL;
 
     m_win = win;
+    
+    m_win->SetScrollHelper( this );
 
     // by default, the associated window is also the target window
     DoSetTargetWindow(win);
@@ -813,8 +815,17 @@ void wxScrollHelper::AdjustScrollbars()
 void wxScrollHelper::DoPrepareDC(wxDC& dc)
 {
     wxPoint pt = dc.GetDeviceOrigin();
-    dc.SetDeviceOrigin( pt.x - m_xScrollPosition * m_xScrollPixelsPerLine,
-                        pt.y - m_yScrollPosition * m_yScrollPixelsPerLine );
+#ifdef __WXGTK__
+    // It may actually be correct to always query
+    // the m_sign from the DC here, but I leve the
+    // #ifdef GTK for now.
+    if (m_win->GetLayoutDirection() == wxLayout_RightToLeft)
+        dc.SetDeviceOrigin( pt.x + m_xScrollPosition * m_xScrollPixelsPerLine,
+                            pt.y - m_yScrollPosition * m_yScrollPixelsPerLine );
+    else
+#endif
+        dc.SetDeviceOrigin( pt.x - m_xScrollPosition * m_xScrollPixelsPerLine,
+                            pt.y - m_yScrollPosition * m_yScrollPixelsPerLine );
     dc.SetUserScale( m_scaleX, m_scaleY );
 }
 
@@ -947,33 +958,7 @@ void wxScrollHelper::GetViewStart (int *x, int *y) const
 void wxScrollHelper::DoCalcScrolledPosition(int x, int y, int *xx, int *yy) const
 {
     if ( xx )
-    {
-        if ((m_xScrollLines == 0) || (m_xScrollPixelsPerLine == 0))
-        {
-            // nothing to do
-            *xx = x;
-        }
-        else
-        {
-#ifdef __WXGTK__
-            if (m_win->GetLayoutDirection() == wxLayout_RightToLeft)
-            {
-                int w = 0, h = 0;
-                GetTargetSize(&w, &h);
-
-                // Calculate page size i.e. number of scroll units you get on the
-                // current client window
-                int noPagePositions = w/m_xScrollPixelsPerLine;
-                if (noPagePositions < 1) noPagePositions = 1;
-                *xx = x - ((m_xScrollLines - noPagePositions - m_xScrollPosition) * m_xScrollPixelsPerLine);
-            }
-            else
-#endif
-            {
-                *xx = x - m_xScrollPosition * m_xScrollPixelsPerLine;
-            }
-        }
-    }
+        *xx = x - m_xScrollPosition * m_xScrollPixelsPerLine;
     if ( yy )
         *yy = y - m_yScrollPosition * m_yScrollPixelsPerLine;
 }
@@ -981,33 +966,7 @@ void wxScrollHelper::DoCalcScrolledPosition(int x, int y, int *xx, int *yy) cons
 void wxScrollHelper::DoCalcUnscrolledPosition(int x, int y, int *xx, int *yy) const
 {
     if ( xx )
-    {
-        if ((m_xScrollLines == 0) || (m_xScrollPixelsPerLine == 0))
-        {
-            // nothing to do
-            *xx = x;
-        }
-        else
-        {
-#ifdef __WXGTK__
-            if (m_win->GetLayoutDirection() == wxLayout_RightToLeft)
-            {
-                int w = 0, h = 0;
-                GetTargetSize(&w, &h);
-
-                // Calculate page size i.e. number of scroll units you get on the
-                // current client window
-                int noPagePositions = w/m_xScrollPixelsPerLine;
-                if (noPagePositions < 1) noPagePositions = 1;
-                *xx = x + ((m_xScrollLines - noPagePositions - m_xScrollPosition) * m_xScrollPixelsPerLine);
-            }
-            else
-#endif
-            {
-                *xx = x + m_xScrollPosition * m_xScrollPixelsPerLine;
-            }
-        }
-    }
+        *xx = x + m_xScrollPosition * m_xScrollPixelsPerLine;
     if ( yy )
         *yy = y + m_yScrollPosition * m_yScrollPixelsPerLine;
 }