]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/vscroll.h
fixing overrelease and out-of-bounds write, fixes #13725
[wxWidgets.git] / include / wx / vscroll.h
index 189c34c334a737f91e66c94d180cfae25ed86c9d..6b9fba28c7dcd227008d831a35f111310667645e 100644 (file)
@@ -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
 // 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"
 
 #include "wx/panel.h"
 #include "wx/position.h"
 
-class WXDLLEXPORT wxVarScrollHelperEvtHandler;
+class WXDLLIMPEXP_FWD_CORE wxVarScrollHelperEvtHandler;
 
 
 // Using the same techniques as the wxScrolledWindow class      |
 
 
 // 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.
 
 // required virtual functions that need to be implemented for any orientation
 // specific work.
 
-class WXDLLEXPORT wxVarScrollHelperBase
+class WXDLLIMPEXP_CORE wxVarScrollHelperBase
 {
 public:
     // constructors and such
 {
 public:
     // constructors and such
@@ -236,7 +236,7 @@ protected:
 
 #ifdef __WXMAC__
     // queue mac window update after handling scroll event
 
 #ifdef __WXMAC__
     // queue mac window update after handling scroll event
-    virtual void UpdateMacScrollWindow() = 0;
+    virtual void UpdateMacScrollWindow() { }
 #endif // __WXMAC__
 
     // change the target window
 #endif // __WXMAC__
 
     // change the target window
@@ -297,7 +297,7 @@ private:
 // Provides public API functions targeted for vertical-specific scrolling,
 // wrapping the functionality of wxVarScrollHelperBase.
 
 // 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
 {
 public:
     // constructors and such
@@ -370,7 +370,7 @@ protected:
 // Provides public API functions targeted for horizontal-specific scrolling,
 // wrapping the functionality of wxVarScrollHelperBase.
 
 // 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
 {
 public:
     // constructors and such
@@ -453,7 +453,7 @@ protected:
 // functions to make changing values for both orientations at the same time
 // easier.
 
 // 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:
                                         public wxVarHScrollHelper
 {
 public:
@@ -561,7 +561,7 @@ public:
 // in not only those classes, but also in wxHVScrolledWindow where functions
 // are inherited from both.
 
 // 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
 {
 public:
     // constructors and such
@@ -623,8 +623,7 @@ protected:
     // OnGetLineHeight instead (backwards compatible name)
     // note that we don't need to forward OnGetUnitSize() as it is already
     // forwarded to OnGetRowHeight() in wxVarVScrollHelper
     // 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
 
     // 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
@@ -644,8 +643,7 @@ protected:
 
     // forwards the calls from base class pure virtual function to pure virtual
     // OnGetLinesHint instead (backwards compatible name)
 
     // 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
-        { OnGetLinesHint(rowMin, rowMax); }
+    void OnGetRowsHeightHint(size_t rowMin, size_t rowMax) const;
 };
 
 #else // !WXWIN_COMPATIBILITY_2_8
 };
 
 #else // !WXWIN_COMPATIBILITY_2_8
@@ -682,7 +680,7 @@ public:                                                                       \
 // wxScrolledWindow features however, notably it can't scroll only a rectangle
 // of the window and not its entire client area.
 
 // 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:
                                       public wxVarVScrollLegacyAdaptor
 {
 public:
@@ -738,7 +736,7 @@ protected:
 #endif // __WXMAC__
 
 private:
 #endif // __WXMAC__
 
 private:
-    DECLARE_NO_COPY_CLASS(wxVScrolledWindow)
+    wxDECLARE_NO_COPY_CLASS(wxVScrolledWindow);
     DECLARE_ABSTRACT_CLASS(wxVScrolledWindow)
 };
 
     DECLARE_ABSTRACT_CLASS(wxVScrolledWindow)
 };
 
@@ -758,7 +756,7 @@ private:
 // wxScrolledWindow features however, notably it can't scroll only a rectangle
 // of the window and not its entire client area.
 
 // 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:
                                       public wxVarHScrollHelper
 {
 public:
@@ -805,7 +803,7 @@ protected:
 #endif // __WXMAC__
 
 private:
 #endif // __WXMAC__
 
 private:
-    DECLARE_NO_COPY_CLASS(wxHScrolledWindow)
+    wxDECLARE_NO_COPY_CLASS(wxHScrolledWindow);
     DECLARE_ABSTRACT_CLASS(wxHScrolledWindow)
 };
 
     DECLARE_ABSTRACT_CLASS(wxHScrolledWindow)
 };
 
@@ -819,7 +817,7 @@ private:
 // scrolled windows automatically handling everything needed to scroll both
 // axis simultaneously.
 
 // 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:
                                        public wxVarHVScrollHelper
 {
 public:
@@ -842,7 +840,7 @@ public:
                        long style = 0,
                        const wxString& name = wxPanelNameStr)
         : wxPanel(),
                        long style = 0,
                        const wxString& name = wxPanelNameStr)
         : wxPanel(),
-          wxVarHVScrollHelper(this) 
+          wxVarHVScrollHelper(this)
     {
         (void)Create(parent, id, pos, size, style, name);
     }
     {
         (void)Create(parent, id, pos, size, style, name);
     }
@@ -870,7 +868,7 @@ protected:
 #endif // __WXMAC__
 
 private:
 #endif // __WXMAC__
 
 private:
-    DECLARE_NO_COPY_CLASS(wxHVScrolledWindow)
+    wxDECLARE_NO_COPY_CLASS(wxHVScrolledWindow);
     DECLARE_ABSTRACT_CLASS(wxHVScrolledWindow)
 };
 
     DECLARE_ABSTRACT_CLASS(wxHVScrolledWindow)
 };