X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/687dcff3a46a55c11851b1cabdbbbef5492a2f5f..4c44eb66f34f90787524797472d48f35d98a9e23:/include/wx/vscroll.h diff --git a/include/wx/vscroll.h b/include/wx/vscroll.h index 1cdc9d1e48..33fc7aa1f8 100644 --- a/include/wx/vscroll.h +++ b/include/wx/vscroll.h @@ -5,17 +5,13 @@ // Modified by: // Created: 30.05.03 // RCS-ID: $Id$ -// Copyright: (c) 2003 Vadim Zeitlin +// Copyright: (c) 2003 Vadim Zeitlin // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_VSCROLL_H_ #define _WX_VSCROLL_H_ -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma interface "vscroll.h" -#endif - #include "wx/panel.h" // base class // ---------------------------------------------------------------------------- @@ -95,10 +91,10 @@ public: virtual bool ScrollPages(int pages); // redraw the specified line - void RefreshLine(size_t line); + virtual void RefreshLine(size_t line); // redraw all lines in the specified range (inclusive) - void RefreshLines(size_t from, size_t to); + virtual void RefreshLines(size_t from, size_t to); // return the item at the specified (in physical coordinates) position or. @@ -118,15 +114,29 @@ public: size_t GetLineCount() const { return m_lineMax; } // get the first currently visible line - size_t GetFirstVisibleLine() const { return m_lineFirst; } + size_t GetVisibleBegin() const { return m_lineFirst; } - // get the last currently visible line - size_t GetLastVisibleLine() const { return m_lineFirst + m_nVisible - 1; } + // get the first currently visible line + size_t GetVisibleEnd() const { return m_lineFirst + m_nVisible; } // is this line currently visible? bool IsVisible(size_t line) const - { return line >= m_lineFirst && line <= GetLastVisibleLine(); } + { return line >= GetVisibleBegin() && line < GetVisibleEnd(); } + + + // this is the same as GetVisibleBegin(), exists to match + // GetLastVisibleLine() and for backwards compatibility only + size_t GetFirstVisibleLine() const { return m_lineFirst; } + + // 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 GetVisibleEnd() instead, this one + // is kept for backwards compatibility + size_t GetLastVisibleLine() const { return GetVisibleEnd() - 1; } + // layout the children (including the sizer if needed) + virtual bool Layout(); protected: // this function must be overridden in the derived class and it should @@ -146,7 +156,8 @@ protected: // // finally note that lineMin is inclusive, while lineMax is exclusive, as // usual - virtual void OnGetLinesHint(size_t lineMin, size_t lineMax) const { } + virtual void OnGetLinesHint(size_t WXUNUSED(lineMin), + size_t WXUNUSED(lineMax)) const { } // when the number of lines changes, we try to estimate the total height // of all lines which is a rather expensive operation in terms of lines @@ -162,6 +173,9 @@ protected: // the event handlers void OnSize(wxSizeEvent& event); void OnScroll(wxScrollWinEvent& event); +#if wxUSE_MOUSEWHEEL + void OnMouseWheel(wxMouseEvent& event); +#endif // find the index of the line we need to show at the top of the window such // that the last (fully or partially) visible line is the given one @@ -174,6 +188,9 @@ protected: // update the thumb size shown by the scrollbar void UpdateScrollbar(); + // remove the scrollbar completely because we don't need it + void RemoveScrollbar(); + private: // common part of all ctors void Init(); @@ -192,8 +209,14 @@ private: // partly, visible one) size_t m_nVisible; + // accumulated mouse wheel rotation +#if wxUSE_MOUSEWHEEL + int m_sumWheelRotation; +#endif DECLARE_EVENT_TABLE() + DECLARE_NO_COPY_CLASS(wxVScrolledWindow) + DECLARE_ABSTRACT_CLASS(wxVScrolledWindow) }; #endif // _WX_VSCROLL_H_