]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/vscroll.h
activating DrawRectangle optimization
[wxWidgets.git] / include / wx / vscroll.h
index 71679937ae941b955925f7089a7c1748b02ab2b7..6b9fba28c7dcd227008d831a35f111310667645e 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        include/wx/vscroll.h
+// Name:        wx/vscroll.h
 // Purpose:     Variable scrolled windows (wx[V/H/HV]ScrolledWindow)
 // Author:      Vadim Zeitlin
 // Modified by: Brad Anderson, Bryan Petty
@@ -15,7 +15,7 @@
 #include "wx/panel.h"
 #include "wx/position.h"
 
-class WXDLLEXPORT wxVarScrollHelperEvtHandler;
+class WXDLLIMPEXP_FWD_CORE wxVarScrollHelperEvtHandler;
 
 
 // Using the same techniques as the wxScrolledWindow class      |
@@ -59,7 +59,7 @@ class WXDLLEXPORT wxVarScrollHelperEvtHandler;
 // required virtual functions that need to be implemented for any orientation
 // specific work.
 
-class WXDLLEXPORT wxVarScrollHelperBase
+class WXDLLIMPEXP_CORE wxVarScrollHelperBase
 {
 public:
     // constructors and such
@@ -78,7 +78,7 @@ public:
         { m_physicalScrolling = scrolling; }
 
     // wxNOT_FOUND if none, i.e. if it is below the last item
-    virtual int HitTest(wxCoord coord) const;
+    int VirtualHitTest(wxCoord coord) const;
 
     // recalculate all our parameters and redisplay all units
     virtual void RefreshAll();
@@ -236,7 +236,7 @@ protected:
 
 #ifdef __WXMAC__
     // queue mac window update after handling scroll event
-    virtual void UpdateMacScrollWindow() = 0;
+    virtual void UpdateMacScrollWindow() { }
 #endif // __WXMAC__
 
     // change the target window
@@ -297,7 +297,7 @@ private:
 // Provides public API functions targeted for vertical-specific scrolling,
 // wrapping the functionality of wxVarScrollHelperBase.
 
-class WXDLLEXPORT wxVarVScrollHelper : public wxVarScrollHelperBase
+class WXDLLIMPEXP_CORE wxVarVScrollHelper : public wxVarScrollHelperBase
 {
 public:
     // constructors and such
@@ -324,9 +324,6 @@ public:
     virtual void RefreshRows(size_t from, size_t to)
         { RefreshUnits(from, to); }
 
-    virtual int HitTest(wxCoord y) const
-        { return wxVarScrollHelperBase::HitTest(y); }
-
     // accessors
 
     size_t GetRowCount() const                  { return GetUnitCount(); }
@@ -351,7 +348,7 @@ protected:
 
     // forward calls to OnGetRowsHeightHint()
     virtual void OnGetUnitsSizeHint(size_t unitMin, size_t unitMax) const
-        { return OnGetRowsHeightHint(unitMin, unitMax); }
+        { OnGetRowsHeightHint(unitMin, unitMax); }
 
     // again, if not overridden, it will fall back on default method
     virtual wxCoord EstimateTotalHeight() const
@@ -373,7 +370,7 @@ protected:
 // Provides public API functions targeted for horizontal-specific scrolling,
 // wrapping the functionality of wxVarScrollHelperBase.
 
-class WXDLLEXPORT wxVarHScrollHelper : public wxVarScrollHelperBase
+class WXDLLIMPEXP_CORE wxVarHScrollHelper : public wxVarScrollHelperBase
 {
 public:
     // constructors and such
@@ -401,8 +398,6 @@ public:
         { RefreshUnit(column); }
     virtual void RefreshColumns(size_t from, size_t to)
         { RefreshUnits(from, to); }
-    virtual int HitTest(wxCoord x) const
-        { return wxVarScrollHelperBase::HitTest(x); }
 
     // accessors
 
@@ -434,7 +429,7 @@ protected:
 
     // forward calls to OnGetColumnsWidthHint()
     virtual void OnGetUnitsSizeHint(size_t unitMin, size_t unitMax) const
-        { return OnGetColumnsWidthHint(unitMin, unitMax); }
+        { OnGetColumnsWidthHint(unitMin, unitMax); }
 
     // again, if not overridden, it will fall back on default method
     virtual wxCoord EstimateTotalWidth() const { return DoEstimateTotalSize(); }
@@ -458,7 +453,7 @@ protected:
 // functions to make changing values for both orientations at the same time
 // easier.
 
-class WXDLLEXPORT wxVarHVScrollHelper : public wxVarVScrollHelper,
+class WXDLLIMPEXP_CORE wxVarHVScrollHelper : public wxVarVScrollHelper,
                                         public wxVarHScrollHelper
 {
 public:
@@ -514,10 +509,10 @@ public:
                           from.GetColumn(), to.GetColumn());
     }
 
-    // Override wxPanel::HitTest to use our version
-    virtual wxPosition HitTest(wxCoord x, wxCoord y) const;
-    virtual wxPosition HitTest(const wxPoint &pos) const
-        { return HitTest(pos.x, pos.y); }
+    // locate the virtual position from the given device coordinates
+    wxPosition VirtualHitTest(wxCoord x, wxCoord y) const;
+    wxPosition VirtualHitTest(const wxPoint &pos) const
+        { return VirtualHitTest(pos.x, pos.y); }
 
     // change the DC origin according to the scroll position. To properly
     // forward calls to wxWindow::Layout use WX_FORWARD_TO_SCROLL_HELPER()
@@ -566,7 +561,7 @@ public:
 // in not only those classes, but also in wxHVScrolledWindow where functions
 // are inherited from both.
 
-class WXDLLEXPORT wxVarVScrollLegacyAdaptor : public wxVarVScrollHelper
+class WXDLLIMPEXP_CORE wxVarVScrollLegacyAdaptor : public wxVarVScrollHelper
 {
 public:
     // constructors and such
@@ -581,59 +576,54 @@ public:
 
     // this is the same as GetVisibleRowsBegin(), exists to match
     // GetLastVisibleLine() and for backwards compatibility only
-    size_t GetFirstVisibleLine() const { return GetVisibleRowsBegin(); }
+    wxDEPRECATED( size_t GetFirstVisibleLine() const );
 
     // get the last currently visible line
     //
     // this function is unsafe as it returns (size_t)-1 (i.e. a huge positive
     // number) if the control is empty, use GetVisibleRowsEnd() instead, this
     // one is kept for backwards compatibility
-    size_t GetLastVisibleLine() const { return GetVisibleRowsEnd() - 1; }
+    wxDEPRECATED( size_t GetLastVisibleLine() const );
 
     // "line" to "unit" compatibility functions
     // ----------------------------------------
 
     // get the number of lines this window contains (set by SetLineCount())
-    size_t GetLineCount() const { return GetRowCount(); }
+    wxDEPRECATED( size_t GetLineCount() const );
 
     // set the number of lines the helper contains: the derived class must
     // provide the sizes for all lines with indices up to the one given here
     // in its OnGetLineHeight()
-    void SetLineCount(size_t count) { SetRowCount(count); }
+    wxDEPRECATED( void SetLineCount(size_t count) );
 
     // redraw the specified line
-    virtual void RefreshLine(size_t line) { RefreshRow(line); }
+    wxDEPRECATED( virtual void RefreshLine(size_t line) );
 
     // redraw all lines in the specified range (inclusive)
-    virtual void RefreshLines(size_t from, size_t to) { RefreshRows(from, to); }
+    wxDEPRECATED( virtual void RefreshLines(size_t from, size_t to) );
 
     // scroll to the specified line: it will become the first visible line in
     // the window
     //
     // return true if we scrolled the window, false if nothing was done
-    bool ScrollToLine(size_t line) { return ScrollToRow(line); }
+    wxDEPRECATED( bool ScrollToLine(size_t line) );
 
     // scroll by the specified number of lines/pages
-    virtual bool ScrollLines(int lines) { return ScrollRows(lines); }
-    virtual bool ScrollPages(int pages) { return ScrollRowPages(pages); }
+    wxDEPRECATED( virtual bool ScrollLines(int lines) );
+    wxDEPRECATED( virtual bool ScrollPages(int pages) );
 
 protected:
     // unless the code has been updated to override OnGetRowHeight() instead,
     // this function must be overridden in the derived class and it should
     // return the height of the given row in pixels
-    virtual wxCoord OnGetLineHeight(size_t n) const
-    {
-        wxFAIL_MSG( _T("must be overridden if OnGetRowHeight() isn't!") );
-
-        return -1;
-    }
+    wxDEPRECATED_BUT_USED_INTERNALLY(
+        virtual wxCoord OnGetLineHeight(size_t n) const );
 
     // forwards the calls from base class pure virtual function to pure virtual
     // OnGetLineHeight instead (backwards compatible name)
     // note that we don't need to forward OnGetUnitSize() as it is already
     // forwarded to OnGetRowHeight() in wxVarVScrollHelper
-    virtual wxCoord OnGetRowHeight(size_t n) const
-        { return OnGetLineHeight(n); }
+    virtual wxCoord OnGetRowHeight(size_t n) const;
 
     // this function doesn't have to be overridden but it may be useful to do
     // it if calculating the lines heights is a relatively expensive operation
@@ -648,19 +638,12 @@ protected:
     //
     // finally note that lineMin is inclusive, while lineMax is exclusive, as
     // usual
-    virtual void OnGetLinesHint(size_t WXUNUSED(lineMin),
-                                size_t WXUNUSED(lineMax)) const { }
+    wxDEPRECATED_BUT_USED_INTERNALLY( virtual void OnGetLinesHint(
+        size_t lineMin, size_t lineMax) const );
 
     // forwards the calls from base class pure virtual function to pure virtual
     // OnGetLinesHint instead (backwards compatible name)
-    void OnGetRowsHeightHint(size_t rowMin, size_t rowMax) const
-        { return OnGetLinesHint(rowMin, rowMax); }
-
-
-    // get the total height of the lines between lineMin (inclusive) and
-    // lineMax (exclusive)
-    wxCoord GetLinesHeight(size_t lineMin, size_t lineMax) const
-        { return GetRowsHeight(lineMin, lineMax); }
+    void OnGetRowsHeightHint(size_t rowMin, size_t rowMax) const;
 };
 
 #else // !WXWIN_COMPATIBILITY_2_8
@@ -697,7 +680,7 @@ public:                                                                       \
 // wxScrolledWindow features however, notably it can't scroll only a rectangle
 // of the window and not its entire client area.
 
-class WXDLLEXPORT wxVScrolledWindow : public wxPanel,
+class WXDLLIMPEXP_CORE wxVScrolledWindow : public wxPanel,
                                       public wxVarVScrollLegacyAdaptor
 {
 public:
@@ -736,11 +719,14 @@ public:
         return wxPanel::Create(parent, id, pos, size, style | wxVSCROLL, name);
     }
 
+#if WXWIN_COMPATIBILITY_2_8
     // Make sure we prefer our version of HitTest rather than wxWindow's
+    // These functions should no longer be masked in favor of VirtualHitTest()
     int HitTest(wxCoord WXUNUSED(x), wxCoord y) const
-        { return wxVarVScrollHelper::HitTest(y); }
+        { return wxVarVScrollHelper::VirtualHitTest(y); }
     int HitTest(const wxPoint& pt) const
         { return HitTest(pt.x, pt.y); }
+#endif // WXWIN_COMPATIBILITY_2_8
 
     WX_FORWARD_TO_VAR_SCROLL_HELPER()
 
@@ -750,7 +736,7 @@ protected:
 #endif // __WXMAC__
 
 private:
-    DECLARE_NO_COPY_CLASS(wxVScrolledWindow)
+    wxDECLARE_NO_COPY_CLASS(wxVScrolledWindow);
     DECLARE_ABSTRACT_CLASS(wxVScrolledWindow)
 };
 
@@ -770,7 +756,7 @@ private:
 // wxScrolledWindow features however, notably it can't scroll only a rectangle
 // of the window and not its entire client area.
 
-class WXDLLEXPORT wxHScrolledWindow : public wxPanel,
+class WXDLLIMPEXP_CORE wxHScrolledWindow : public wxPanel,
                                       public wxVarHScrollHelper
 {
 public:
@@ -809,12 +795,6 @@ public:
         return wxPanel::Create(parent, id, pos, size, style | wxHSCROLL, name);
     }
 
-    // Make sure we prefer our version of HitTest rather than wxWindow's
-    int HitTest(wxCoord x, wxCoord WXUNUSED(y)) const
-        { return wxVarHScrollHelper::HitTest(x); }
-    int HitTest(const wxPoint& pt) const
-        { return HitTest(pt.x, pt.y); }
-
     WX_FORWARD_TO_VAR_SCROLL_HELPER()
 
 #ifdef __WXMAC__
@@ -823,7 +803,7 @@ protected:
 #endif // __WXMAC__
 
 private:
-    DECLARE_NO_COPY_CLASS(wxHScrolledWindow)
+    wxDECLARE_NO_COPY_CLASS(wxHScrolledWindow);
     DECLARE_ABSTRACT_CLASS(wxHScrolledWindow)
 };
 
@@ -837,7 +817,7 @@ private:
 // scrolled windows automatically handling everything needed to scroll both
 // axis simultaneously.
 
-class WXDLLEXPORT wxHVScrolledWindow : public wxPanel,
+class WXDLLIMPEXP_CORE wxHVScrolledWindow : public wxPanel,
                                        public wxVarHVScrollHelper
 {
 public:
@@ -860,7 +840,7 @@ public:
                        long style = 0,
                        const wxString& name = wxPanelNameStr)
         : wxPanel(),
-          wxVarHVScrollHelper(this) 
+          wxVarHVScrollHelper(this)
     {
         (void)Create(parent, id, pos, size, style, name);
     }
@@ -880,12 +860,6 @@ public:
                                style | wxVSCROLL | wxHSCROLL, name);
     }
 
-    // Make sure we prefer our version of HitTest rather than wxWindow's
-    wxPosition HitTest(wxCoord x, wxCoord y) const
-        { return wxVarHVScrollHelper::HitTest(x, y); }
-    wxPosition HitTest(const wxPoint &pt) const
-        { return HitTest(pt.x, pt.y); }
-
     WX_FORWARD_TO_VAR_SCROLL_HELPER()
 
 #ifdef __WXMAC__
@@ -894,7 +868,7 @@ protected:
 #endif // __WXMAC__
 
 private:
-    DECLARE_NO_COPY_CLASS(wxHVScrolledWindow)
+    wxDECLARE_NO_COPY_CLASS(wxHVScrolledWindow);
     DECLARE_ABSTRACT_CLASS(wxHVScrolledWindow)
 };