X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/13ff9344d600ab38ad5ad4088d4a4797184405d2..1d54b9d29706dbb43de5624bdf4a2aaa74b2350b:/include/wx/scrolwin.h diff --git a/include/wx/scrolwin.h b/include/wx/scrolwin.h index 8bf0404a25..2655c594dd 100644 --- a/include/wx/scrolwin.h +++ b/include/wx/scrolwin.h @@ -22,6 +22,7 @@ class WXDLLEXPORT wxTimer; // wxScrolledWindow and wxScrolledControl. It is a mix-in: just derive from it // to implement scrolling in your class. // ---------------------------------------------------------------------------- +#if !defined(__WXGTK__) || defined(__WXUNIVERSAL__) class WXDLLEXPORT wxScrollHelper { @@ -35,7 +36,7 @@ public: virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, int noUnitsX, int noUnitsY, int xPos = 0, int yPos = 0, - bool noRefresh = FALSE ); + bool noRefresh = false ); // scroll to the given (in logical coords) position virtual void Scroll(int x, int y); @@ -44,13 +45,16 @@ public: int GetScrollPageSize(int orient) const; void SetScrollPageSize(int orient, int pageSize); + // Set the x, y scrolling increments. + void SetScrollRate( int xstep, int ystep ); + // get the size of one logical unit in physical ones virtual void GetScrollPixelsPerUnit(int *pixelsPerUnitX, int *pixelsPerUnitY) const; - // Enable/disable Windows scrolling in either direction. If TRUE, wxWindows + // Enable/disable Windows scrolling in either direction. If true, wxWidgets // scrolls the canvas and only a bit of the canvas is invalidated; no - // Clear() is necessary. If FALSE, the whole canvas is invalidated and a + // Clear() is necessary. If false, the whole canvas is invalidated and a // Clear() is necessary. Disable for when the scroll increment is used to // actually scroll a non-constant distance virtual void EnableScrolling(bool x_scrolling, bool y_scrolling); @@ -58,17 +62,32 @@ public: // Get the view start virtual void GetViewStart(int *x, int *y) const; - // Actual size in pixels when scrolling is taken into account - virtual void GetVirtualSize(int *x, int *y) const; - // Set the scale factor, used in PrepareDC void SetScale(double xs, double ys) { m_scaleX = xs; m_scaleY = ys; } double GetScaleX() const { return m_scaleX; } double GetScaleY() const { return m_scaleY; } // translate between scrolled and unscrolled coordinates - virtual void CalcScrolledPosition(int x, int y, int *xx, int *yy) const; - virtual void CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const; + void CalcScrolledPosition(int x, int y, int *xx, int *yy) const + { DoCalcScrolledPosition(x, y, xx, yy); } + wxPoint CalcScrolledPosition(const wxPoint& pt) const + { + wxPoint p2; + DoCalcScrolledPosition(pt.x, pt.y, &p2.x, &p2.y); + return p2; + } + + void CalcUnscrolledPosition(int x, int y, int *xx, int *yy) const + { DoCalcUnscrolledPosition(x, y, xx, yy); } + wxPoint CalcUnscrolledPosition(const wxPoint& pt) const + { + wxPoint p2; + DoCalcUnscrolledPosition(pt.x, pt.y, &p2.x, &p2.y); + 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; // Adjust the scrollbars virtual void AdjustScrollbars(void); @@ -80,7 +99,7 @@ public: // 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, bool pushEventHandler = FALSE); + virtual void SetTargetWindow(wxWindow *target); virtual wxWindow *GetTargetWindow() const; void SetTargetRect(const wxRect& rect) { m_rectToScroll = rect; } @@ -103,7 +122,7 @@ public: // stop the timer, so it will be called repeatedly and will typically // return different values depending on the current mouse position // - // the base class version just returns TRUE + // the base class version just returns true virtual bool SendAutoScrollEvents(wxScrollWinEvent& event) const; // the methods to be called from the window event handlers @@ -121,9 +140,14 @@ public: // once it is fixed! void OnScroll(wxScrollWinEvent& event) { HandleOnScroll(event); } +#if WXWIN_COMPATIBILITY_2_2 + // Compatibility only, don't use + wxDEPRECATED( void ViewStart(int *x, int *y) const ); +#endif // WXWIN_COMPATIBILITY_2_2 + protected: // get pointer to our scroll rect if we use it or NULL - const wxRect *GetRect() const + const wxRect *GetScrollRect() const { return m_rectToScroll.width != 0 ? &m_rectToScroll : NULL; } @@ -146,11 +170,14 @@ protected: // change just the target window (unlike SetWindow which changes m_win as // well) - void DoSetTargetWindow(wxWindow *target, bool pushEventHandler = FALSE); + void DoSetTargetWindow(wxWindow *target); // delete the event handler we installed void DeleteEvtHandler(); + double m_scaleX; + double m_scaleY; + wxWindow *m_win, *m_targetWindow; @@ -170,16 +197,17 @@ protected: bool m_xScrollingEnabled; bool m_yScrollingEnabled; - double m_scaleX; - double m_scaleY; - #if wxUSE_MOUSEWHEEL int m_wheelRotation; #endif // wxUSE_MOUSEWHEEL wxScrollHelperEvtHandler *m_handler; + + DECLARE_NO_COPY_CLASS(wxScrollHelper) }; +#endif + // ---------------------------------------------------------------------------- // wxScrolledWindow: a wxWindow which knows how to scroll // ---------------------------------------------------------------------------- @@ -194,17 +222,17 @@ protected: public: wxScrolledWindow() { } wxScrolledWindow(wxWindow *parent, - wxWindowID id = -1, + wxWindowID winid = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxScrolledWindowStyle, const wxString& name = wxPanelNameStr) - : wxGenericScrolledWindow(parent, id, pos, size, style, name) + : wxGenericScrolledWindow(parent, winid, pos, size, style, name) { } private: - DECLARE_CLASS(wxScrolledWindow) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxScrolledWindow) }; #define wxSCROLLED_WINDOW_IS_GENERIC 1 @@ -212,3 +240,4 @@ protected: #endif // _WX_SCROLWIN_H_BASE_ +