X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae3c17b4013e80b99976c750c19fca47729517f6..9e9574fe45b176ee74bba8fad7574cf9906145d1:/interface/wx/vscroll.h diff --git a/interface/wx/vscroll.h b/interface/wx/vscroll.h index c5acde34e3..35ae0a9414 100644 --- a/interface/wx/vscroll.h +++ b/interface/wx/vscroll.h @@ -2,13 +2,11 @@ // Name: vscroll.h // Purpose: interface of wxVarHScrollHelper // Author: wxWidgets team -// RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /** @class wxVarScrollHelperBase - @wxheader{vscroll.h} This class provides all common base functionality for scroll calculations shared among all variable scrolled window implementations as well as @@ -75,21 +73,6 @@ public: */ void EnablePhysicalScrolling(bool scrolling = true); - /** - When the number of scroll units change, we try to estimate the total - size of all units when the full window size is needed (i.e. to - calculate the scrollbar thumb size). This is a rather expensive - operation in terms of unit access, so if the user code may estimate the - average size better or faster than we do, it should override this - function to implement its own logic. This function should return the - best guess for the total virtual window size. - - @note Although returning a totally wrong value would still work, it - risks resulting in very strange scrollbar behaviour so this - function should really try to make the best guess possible. - */ - virtual wxCoord EstimateTotalSize() const; - /** This function needs to be overridden in the in the derived class to return the window size with respect to the opposing orientation. If @@ -97,13 +80,13 @@ public: @see GetOrientationTargetSize() */ - virtual int GetNonOrientationTargetSize() const; + virtual int GetNonOrientationTargetSize() const = 0; /** This function need to be overridden to return the orientation that this helper is working with, either @c wxHORIZONTAL or @c wxVERTICAL. */ - virtual wxOrientation GetOrientation() const; + virtual wxOrientation GetOrientation() const = 0; /** This function needs to be overridden in the in the derived class to @@ -113,7 +96,7 @@ public: @see GetNonOrientationTargetSize() */ - virtual int GetOrientationTargetSize() const; + virtual int GetOrientationTargetSize() const = 0; /** This function will return the target window this helper class is @@ -121,7 +104,7 @@ public: @see SetTargetWindow() */ - wxWindow* GetTargetWindow() const; + virtual wxWindow* GetTargetWindow() const; /** Returns the index of the first visible unit based on the scroll @@ -143,10 +126,34 @@ public: bool IsVisible(size_t unit) const; /** - This function must be overridden in the derived class, and should - return the size of the given unit in pixels. + Recalculate all parameters and repaint all units. */ - virtual wxCoord OnGetUnitSize(size_t unit) const; + virtual void RefreshAll(); + + /** + Normally the window will scroll itself, but in some rare occasions you + might want it to scroll (part of) another window (e.g. a child of it in + order to scroll only a portion the area between the scrollbars like a + spreadsheet where only the cell area will move). + + @see GetTargetWindow() + */ + virtual void SetTargetWindow(wxWindow* target); + + /** + Update the thumb size shown by the scrollbar. + */ + virtual void UpdateScrollbar(); + + /** + Returns the virtual scroll unit under the device unit given accounting + for scroll position or @c wxNOT_FOUND if none (i.e. if it is below the + last item). + */ + int VirtualHitTest(wxCoord coord) const; + + +protected: /** This function doesn't have to be overridden but it may be useful to do @@ -166,38 +173,31 @@ public: virtual void OnGetUnitsSizeHint(size_t unitMin, size_t unitMax) const; /** - Recalculate all parameters and repaint all units. - */ - virtual void RefreshAll(); - - /** - Normally the window will scroll itself, but in some rare occasions you - might want it to scroll (part of) another window (e.g. a child of it in - order to scroll only a portion the area between the scrollbars like a - spreadsheet where only the cell area will move). - - @see GetTargetWindow() - */ - void SetTargetWindow(wxWindow* target); + When the number of scroll units change, we try to estimate the total + size of all units when the full window size is needed (i.e. to + calculate the scrollbar thumb size). This is a rather expensive + operation in terms of unit access, so if the user code may estimate the + average size better or faster than we do, it should override this + function to implement its own logic. This function should return the + best guess for the total virtual window size. - /** - Update the thumb size shown by the scrollbar. + @note Although returning a totally wrong value would still work, it + risks resulting in very strange scrollbar behaviour so this + function should really try to make the best guess possible. */ - virtual void UpdateScrollbar(); + virtual wxCoord EstimateTotalSize() const; /** - Returns the virtual scroll unit under the device unit given accounting - for scroll position or @c wxNOT_FOUND if none (i.e. if it is below the - last item). + This function must be overridden in the derived class, and should + return the size of the given unit in pixels. */ - int VirtualHitTest(wxCoord coord) const; + virtual wxCoord OnGetUnitSize(size_t unit) const = 0; }; /** @class wxVarVScrollHelper - @wxheader{vscroll.h} This class provides functions wrapping the wxVarScrollHelperBase class, targeted for vertical-specific scrolling. @@ -223,17 +223,6 @@ public: */ wxVarVScrollHelper(wxWindow* winToScroll); - /** - This class forwards calls from EstimateTotalSize() to this function so - derived classes can override either just the height or the width - estimation, or just estimate both differently if desired in any - wxHVScrolledWindow derived class. - - @note This function will not be called if EstimateTotalSize() is - overridden in your derived class. - */ - virtual wxCoord EstimateTotalHeight() const; - /** Returns the number of rows the target window contains. @@ -259,29 +248,6 @@ public: */ bool IsRowVisible(size_t row) const; - /** - This function must be overridden in the derived class, and should - return the height of the given row in pixels. - */ - virtual wxCoord OnGetRowHeight(size_t row) const; - - /** - This function doesn't have to be overridden but it may be useful to do - so if calculating the rows' sizes is a relatively expensive operation - as it gives your code a chance to calculate several of them at once and - cache the result if necessary. - - OnGetRowsHeightHint() is normally called just before OnGetRowHeight() - but you shouldn't rely on the latter being called for all rows in the - interval specified here. It is also possible that OnGetRowHeight() will - be called for units outside of this interval, so this is really just a - hint, not a promise. - - Finally, note that @a rowMin is inclusive, while @a rowMax is - exclusive. - */ - virtual void OnGetRowsHeightHint(size_t rowMin, size_t rowMax) const; - /** Triggers a refresh for just the given row's area of the window if it's visible. @@ -326,13 +292,48 @@ public: @see GetRowCount() */ void SetRowCount(size_t rowCount); + +protected: + + /** + This function doesn't have to be overridden but it may be useful to do + so if calculating the rows' sizes is a relatively expensive operation + as it gives your code a chance to calculate several of them at once and + cache the result if necessary. + + OnGetRowsHeightHint() is normally called just before OnGetRowHeight() + but you shouldn't rely on the latter being called for all rows in the + interval specified here. It is also possible that OnGetRowHeight() will + be called for units outside of this interval, so this is really just a + hint, not a promise. + + Finally, note that @a rowMin is inclusive, while @a rowMax is + exclusive. + */ + virtual void OnGetRowsHeightHint(size_t rowMin, size_t rowMax) const; + + /** + This class forwards calls from EstimateTotalSize() to this function so + derived classes can override either just the height or the width + estimation, or just estimate both differently if desired in any + wxHVScrolledWindow derived class. + + @note This function will not be called if EstimateTotalSize() is + overridden in your derived class. + */ + virtual wxCoord EstimateTotalHeight() const; + + /** + This function must be overridden in the derived class, and should + return the height of the given row in pixels. + */ + virtual wxCoord OnGetRowHeight(size_t row) const = 0; }; /** @class wxVarHScrollHelper - @wxheader{vscroll.h} This class provides functions wrapping the wxVarScrollHelperBase class, targeted for horizontal-specific scrolling. @@ -358,17 +359,6 @@ public: */ wxVarHScrollHelper(wxWindow* winToScroll); - /** - This class forwards calls from EstimateTotalSize() to this function so - derived classes can override either just the height or the width - estimation, or just estimate both differently if desired in any - wxHVScrolledWindow derived class. - - @note This function will not be called if EstimateTotalSize() is - overridden in your derived class. - */ - virtual wxCoord EstimateTotalWidth() const; - /** Returns the number of columns the target window contains. @@ -395,30 +385,6 @@ public: */ bool IsColumnVisible(size_t column) const; - /** - This function must be overridden in the derived class, and should - return the width of the given column in pixels. - */ - virtual wxCoord OnGetColumnWidth(size_t column) const; - - /** - This function doesn't have to be overridden but it may be useful to do - so if calculating the columns' sizes is a relatively expensive - operation as it gives your code a chance to calculate several of them - at once and cache the result if necessary. - - OnGetColumnsWidthHint() is normally called just before - OnGetColumnWidth() but you shouldn't rely on the latter being called - for all columns in the interval specified here. It is also possible - that OnGetColumnWidth() will be called for units outside of this - interval, so this is really just a hint, not a promise. - - Finally, note that @a columnMin is inclusive, while @a columnMax is - exclusive. - */ - virtual void OnGetColumnsWidthHint(size_t columnMin, - size_t columnMax) const; - /** Triggers a refresh for just the given column's area of the window if it's visible. @@ -463,13 +429,49 @@ public: @see GetColumnCount() */ void SetColumnCount(size_t columnCount); + +protected: + + /** + This class forwards calls from EstimateTotalSize() to this function so + derived classes can override either just the height or the width + estimation, or just estimate both differently if desired in any + wxHVScrolledWindow derived class. + + @note This function will not be called if EstimateTotalSize() is + overridden in your derived class. + */ + virtual wxCoord EstimateTotalWidth() const; + + /** + This function doesn't have to be overridden but it may be useful to do + so if calculating the columns' sizes is a relatively expensive + operation as it gives your code a chance to calculate several of them + at once and cache the result if necessary. + + OnGetColumnsWidthHint() is normally called just before + OnGetColumnWidth() but you shouldn't rely on the latter being called + for all columns in the interval specified here. It is also possible + that OnGetColumnWidth() will be called for units outside of this + interval, so this is really just a hint, not a promise. + + Finally, note that @a columnMin is inclusive, while @a columnMax is + exclusive. + */ + virtual void OnGetColumnsWidthHint(size_t columnMin, + size_t columnMax) const; + + /** + This function must be overridden in the derived class, and should + return the width of the given column in pixels. + */ + virtual wxCoord OnGetColumnWidth(size_t column) const = 0; }; /** @class wxVarHVScrollHelper - @wxheader{vscroll.h} This class provides functions wrapping the wxVarHScrollHelper and wxVarVScrollHelper classes, targeted for scrolling a window in both axis. @@ -604,7 +606,6 @@ public: /** @class wxVScrolledWindow - @wxheader{vscroll.h} In the name of this class, "V" may stand for "variable" because it can be used for scrolling rows of variable heights; "virtual", because it is not @@ -627,7 +628,7 @@ public: shifted so the first visible row always appears at the point (0, 0) in physical as well as logical coordinates. - @section wxWidgets 2.8 Compatibility Functions + @section vscrolledwindow_compat wxWidgets 2.8 Compatibility Functions The following functions provide backwards compatibility for applications originally built using wxVScrolledWindow in 2.6 or 2.8. Originally, @@ -713,7 +714,7 @@ public: const wxString& name = wxPanelNameStr); /** - Same as the non-default constuctor, but returns a status code: @true if + Same as the non-default constructor, but returns a status code: @true if ok, @false if the window couldn't be created. Just as with the constructor, the @c wxVSCROLL style is always used, @@ -729,7 +730,6 @@ public: /** @class wxHScrolledWindow - @wxheader{vscroll.h} In the name of this class, "H" stands for "horizontal" because it can be used for scrolling columns of variable widths. It is not necessary to know @@ -790,7 +790,7 @@ public: const wxString& name = wxPanelNameStr); /** - Same as the non-default constuctor, but returns a status code: @true if + Same as the non-default constructor, but returns a status code: @true if ok, @false if the window couldn't be created. Just as with the constructor, the @c wxHSCROLL style is always used, @@ -806,7 +806,6 @@ public: /** @class wxHVScrolledWindow - @wxheader{vscroll.h} This window inherits all functionality of both vertical and horizontal, variable scrolled windows. It automatically handles everything needed to @@ -868,7 +867,7 @@ public: const wxString& name = wxPanelNameStr); /** - Same as the non-default constuctor, but returns a status code: @true if + Same as the non-default constructor, but returns a status code: @true if ok, @false if the window couldn't be created. Just as with the constructor, the @c wxHSCROLL and @c wxVSCROLL styles