X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f18eaf2687ab42c97ccf469a2617306cadc0c6ef..09e744f55267ee17225f1e25f4fb26f4d8927781:/include/wx/vscroll.h diff --git a/include/wx/vscroll.h b/include/wx/vscroll.h index 1d15edfb5d..f32e90adc7 100644 --- a/include/wx/vscroll.h +++ b/include/wx/vscroll.h @@ -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(); @@ -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,53 +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 = 0; + 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 @@ -642,27 +638,20 @@ 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 // shortcut to avoid checking compatibility modes later -// remove this and all references to wxVarVScrollLegacyAdapter once +// remove this and all references to wxVarVScrollLegacyAdaptor once // wxWidgets 2.6 and 2.8 compatibility is removed -typedef wxVarVScrollLegacyAdapter wxVarVScrollHelper; +typedef wxVarVScrollHelper wxVarVScrollLegacyAdaptor; #endif // WXWIN_COMPATIBILITY_2_8/!WXWIN_COMPATIBILITY_2_8 @@ -691,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: @@ -730,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() @@ -744,7 +736,7 @@ protected: #endif // __WXMAC__ private: - DECLARE_NO_COPY_CLASS(wxVScrolledWindow) + wxDECLARE_NO_COPY_CLASS(wxVScrolledWindow); DECLARE_ABSTRACT_CLASS(wxVScrolledWindow) }; @@ -764,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: @@ -803,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__ @@ -817,7 +803,7 @@ protected: #endif // __WXMAC__ private: - DECLARE_NO_COPY_CLASS(wxHScrolledWindow) + wxDECLARE_NO_COPY_CLASS(wxHScrolledWindow); DECLARE_ABSTRACT_CLASS(wxHScrolledWindow) }; @@ -831,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: @@ -854,7 +840,7 @@ public: long style = 0, const wxString& name = wxPanelNameStr) : wxPanel(), - wxVarHVScrollHelper(this) + wxVarHVScrollHelper(this) { (void)Create(parent, id, pos, size, style, name); } @@ -874,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__ @@ -888,7 +868,7 @@ protected: #endif // __WXMAC__ private: - DECLARE_NO_COPY_CLASS(wxHVScrolledWindow) + wxDECLARE_NO_COPY_CLASS(wxHVScrolledWindow); DECLARE_ABSTRACT_CLASS(wxHVScrolledWindow) };