X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6362d82b3ed82aa6795e4ad03160820f94c9e4d4..86ac84b8ce086e6bbda58f422d41f84268606e35:/include/wx/scrolwin.h?ds=sidebyside diff --git a/include/wx/scrolwin.h b/include/wx/scrolwin.h index d85a167eb6..f209507d5f 100644 --- a/include/wx/scrolwin.h +++ b/include/wx/scrolwin.h @@ -37,11 +37,11 @@ enum wxScrollbarVisibility // // So we have // -// wxScrollHelper +// wxScrollHelperBase // | // | // \|/ -// wxWindow wxScrollHelperNative +// wxWindow wxScrollHelper // | \ / / // | \ / / // | _| |_ / @@ -56,12 +56,12 @@ enum wxScrollbarVisibility // // ---------------------------------------------------------------------------- -class WXDLLIMPEXP_CORE wxScrollHelper +class WXDLLIMPEXP_CORE wxScrollHelperBase { public: // ctor must be given the associated window - wxScrollHelper(wxWindow *winToScroll); - virtual ~wxScrollHelper(); + wxScrollHelperBase(wxWindow *winToScroll); + virtual ~wxScrollHelperBase(); // configure the scrolling virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, @@ -70,8 +70,12 @@ public: bool noRefresh = false ); // scroll to the given (in logical coords) position - void Scroll(int x, int y) { DoScroll(x, y); } - void Scroll(const wxPoint& pt) { DoScroll(pt.x, pt.y); } + // + // notice that for backwards compatibility reasons Scroll() is virtual as + // the existing code could override it but new code should override + // DoScroll() instead + virtual void Scroll(int x, int y) { DoScroll(x, y); } + virtual void Scroll(const wxPoint& pt) { DoScroll(pt.x, pt.y); } // get/set the page size for this orientation (wxVERTICAL/wxHORIZONTAL) int GetScrollPageSize(int orient) const; @@ -85,15 +89,17 @@ public: void SetScrollRate( int xstep, int ystep ); // get the size of one logical unit in physical ones - virtual void GetScrollPixelsPerUnit(int *pixelsPerUnitX, - int *pixelsPerUnitY) const; + void GetScrollPixelsPerUnit(int *pixelsPerUnitX, int *pixelsPerUnitY) const; // Set scrollbar visibility: it is possible to show scrollbar only if it is // needed (i.e. if our virtual size is greater than the current size of the // associated window), always (as wxALWAYS_SHOW_SB style does) or never (in // which case you should provide some other way to scroll the window as the // user wouldn't be able to do it at all) - void ShowScrollbars(wxScrollbarVisibility horz, wxScrollbarVisibility vert); + void ShowScrollbars(wxScrollbarVisibility horz, wxScrollbarVisibility vert) + { + DoShowScrollbars(horz, vert); + } // Enable/disable Windows scrolling in either direction. If true, wxWidgets // scrolls the canvas and only a bit of the canvas is invalidated; no @@ -136,21 +142,21 @@ public: return p2; } - virtual void DoCalcScrolledPosition(int x, int y, int *xx, int *yy) const; - virtual void DoCalcUnscrolledPosition(int x, int y, int *xx, int *yy) const; + void DoCalcScrolledPosition(int x, int y, int *xx, int *yy) const; + void DoCalcUnscrolledPosition(int x, int y, int *xx, int *yy) const; // Adjust the scrollbars - virtual void AdjustScrollbars(void); + virtual void AdjustScrollbars() = 0; // Calculate scroll increment - virtual int CalcScrollInc(wxScrollWinEvent& event); + int CalcScrollInc(wxScrollWinEvent& event); // Normally the wxScrolledWindow 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 (spreadsheet: only cell area will move). - virtual void SetTargetWindow(wxWindow *target); - virtual wxWindow *GetTargetWindow() const; + void SetTargetWindow(wxWindow *target); + wxWindow *GetTargetWindow() const; void SetTargetRect(const wxRect& rect) { m_rectToScroll = rect; } wxRect GetTargetRect() const { return m_rectToScroll; } @@ -187,9 +193,11 @@ public: #endif // wxUSE_MOUSEWHEEL void HandleOnChildFocus(wxChildFocusEvent& event); - // FIXME: this is needed for now for wxPlot compilation, should be removed - // once it is fixed! - void OnScroll(wxScrollWinEvent& event) { HandleOnScroll(event); } +#if WXWIN_COMPATIBILITY_2_8 + wxDEPRECATED( + void OnScroll(wxScrollWinEvent& event) { HandleOnScroll(event); } + ) +#endif // WXWIN_COMPATIBILITY_2_8 protected: // get pointer to our scroll rect if we use it or NULL @@ -216,9 +224,9 @@ protected: // implementation of public methods with the same name virtual void DoGetViewStart(int *x, int *y) const; - virtual void DoScroll(int x, int y); + virtual void DoScroll(int x, int y) = 0; virtual void DoShowScrollbars(wxScrollbarVisibility horz, - wxScrollbarVisibility vert); + wxScrollbarVisibility vert) = 0; // implementations of various wxWindow virtual methods which should be // forwarded to us (this can be done by WX_FORWARD_TO_SCROLL_HELPER()) @@ -237,17 +245,6 @@ protected: // in wxScrollHelperEvtHandler::ProcessEvent() void ResetDrawnFlag(); - // helper of AdjustScrollbars(): does the work for the single scrollbar - // - // notice that the parameters passed by non-const references are modified - // by this function - void AdjustScrollbar(int orient, - int clientSize, - int virtSize, - int& pixelsPerUnit, - int& scrollUnits, - int& scrollPosition); - // this function should be overridden to return the size available for // m_targetWindow inside m_win of the given size // @@ -293,8 +290,7 @@ protected: wxScrollHelperEvtHandler *m_handler; - - DECLARE_NO_COPY_CLASS(wxScrollHelper) + wxDECLARE_NO_COPY_CLASS(wxScrollHelperBase); }; // this macro can be used in a wxScrollHelper-derived class to forward wxWindow @@ -308,13 +304,14 @@ public: \ virtual wxSize GetBestVirtualSize() const \ { return ScrollGetBestVirtualSize(); } -// include the declaration of wxScrollHelperNative if needed +// include the declaration of the real wxScrollHelper #if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__) #include "wx/gtk/scrolwin.h" #elif defined(__WXGTK__) && !defined(__WXUNIVERSAL__) #include "wx/gtk1/scrolwin.h" #else - typedef wxScrollHelper wxScrollHelperNative; + #define wxHAS_GENERIC_SCROLLWIN + #include "wx/generic/scrolwin.h" #endif // ---------------------------------------------------------------------------- @@ -325,7 +322,7 @@ public: \ struct WXDLLIMPEXP_CORE wxScrolledT_Helper { static wxSize FilterBestSize(const wxWindow *win, - const wxScrollHelperNative *helper, + const wxScrollHelper *helper, const wxSize& origBest); #ifdef __WXMSW__ static WXLRESULT FilterMSWWindowProc(WXUINT nMsg, WXLRESULT origResult); @@ -337,18 +334,18 @@ struct WXDLLIMPEXP_CORE wxScrolledT_Helper // not always desirable. template class WXDLLIMPEXP_CORE wxScrolled : public T, - public wxScrollHelperNative, + public wxScrollHelper, private wxScrolledT_Helper { public: - wxScrolled() : wxScrollHelperNative(this) { } + wxScrolled() : wxScrollHelper(this) { } wxScrolled(wxWindow *parent, wxWindowID winid = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxScrolledWindowStyle, const wxString& name = wxPanelNameStr) - : wxScrollHelperNative(this) + : wxScrollHelper(this) { Create(parent, winid, pos, size, style, name); } @@ -408,7 +405,7 @@ private: // VC++ 6 gives warning for the declaration of template member function // without definition #if !defined(__VISUALC__) || wxCHECK_VISUALC_VERSION(7) - DECLARE_NO_COPY_CLASS(wxScrolled) + wxDECLARE_NO_COPY_CLASS(wxScrolled); #endif };