]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/scrolwin.h
process one event at once in wxEvtHandler::ProcessPendingEvents() to prevent crashes...
[wxWidgets.git] / include / wx / scrolwin.h
index 111136f453bae20575866864d73e2bdda6e6b798..9612721763f957bba5764fd22549674d11264c21 100644 (file)
 #ifndef _WX_SCROLWIN_H_BASE_
 #define _WX_SCROLWIN_H_BASE_
 
 #ifndef _WX_SCROLWIN_H_BASE_
 #define _WX_SCROLWIN_H_BASE_
 
-#include "wx/window.h"
+#include "wx/panel.h"
 
 
-class WXDLLEXPORT wxScrollHelperEvtHandler;
-class WXDLLEXPORT wxTimer;
-
-WXDLLEXPORT_DATA(extern const wxChar*) wxPanelNameStr;
+class WXDLLIMPEXP_FWD_CORE wxScrollHelperEvtHandler;
+class WXDLLIMPEXP_FWD_BASE wxTimer;
 
 // default scrolled window style: scroll in both directions
 #define wxScrolledWindowStyle (wxHSCROLL | wxVSCROLL)
 
 // default scrolled window style: scroll in both directions
 #define wxScrolledWindowStyle (wxHSCROLL | wxVSCROLL)
@@ -70,6 +68,10 @@ public:
     int GetScrollPageSize(int orient) const;
     void SetScrollPageSize(int orient, int pageSize);
 
     int GetScrollPageSize(int orient) const;
     void SetScrollPageSize(int orient, int pageSize);
 
+    // get the number of lines the window can scroll, 
+    // returns 0 if no scrollbars are there.
+    int GetScrollLines( int orient ) const;
+
     // Set the x, y scrolling increments.
     void SetScrollRate( int xstep, int ystep );
 
     // Set the x, y scrolling increments.
     void SetScrollRate( int xstep, int ystep );
 
@@ -160,6 +162,7 @@ public:
 #if wxUSE_MOUSEWHEEL
     void HandleOnMouseWheel(wxMouseEvent& event);
 #endif // wxUSE_MOUSEWHEEL
 #if wxUSE_MOUSEWHEEL
     void HandleOnMouseWheel(wxMouseEvent& event);
 #endif // wxUSE_MOUSEWHEEL
+    void HandleOnChildFocus(wxChildFocusEvent& event);
 
     // FIXME: this is needed for now for wxPlot compilation, should be removed
     //        once it is fixed!
 
     // FIXME: this is needed for now for wxPlot compilation, should be removed
     //        once it is fixed!
@@ -179,7 +182,7 @@ protected:
                                          : m_targetWindow->GetClientSize();
     }
 
                                          : m_targetWindow->GetClientSize();
     }
 
-    void GetTargetSize(int *w, int *h)
+    void GetTargetSize(int *w, int *h) const
     {
         wxSize size = GetTargetSize();
         if ( w )
     {
         wxSize size = GetTargetSize();
         if ( w )
@@ -193,7 +196,6 @@ protected:
     bool ScrollLayout();
     void ScrollDoSetVirtualSize(int x, int y);
     wxSize ScrollGetBestVirtualSize() const;
     bool ScrollLayout();
     void ScrollDoSetVirtualSize(int x, int y);
     wxSize ScrollGetBestVirtualSize() const;
-    wxSize ScrollGetWindowSizeForVirtualSize(const wxSize& size) const;
 
     // change just the target window (unlike SetWindow which changes m_win as
     // well)
 
     // change just the target window (unlike SetWindow which changes m_win as
     // well)
@@ -237,18 +239,19 @@ protected:
 // this macro can be used in a wxScrollHelper-derived class to forward wxWindow
 // methods to corresponding wxScrollHelper methods
 #define WX_FORWARD_TO_SCROLL_HELPER()                                         \
 // this macro can be used in a wxScrollHelper-derived class to forward wxWindow
 // methods to corresponding wxScrollHelper methods
 #define WX_FORWARD_TO_SCROLL_HELPER()                                         \
+public:                                                                       \
     virtual void PrepareDC(wxDC& dc) { DoPrepareDC(dc); }                     \
     virtual bool Layout() { return ScrollLayout(); }                          \
     virtual void DoSetVirtualSize(int x, int y)                               \
         { ScrollDoSetVirtualSize(x, y); }                                     \
     virtual wxSize GetBestVirtualSize() const                                 \
     virtual void PrepareDC(wxDC& dc) { DoPrepareDC(dc); }                     \
     virtual bool Layout() { return ScrollLayout(); }                          \
     virtual void DoSetVirtualSize(int x, int y)                               \
         { ScrollDoSetVirtualSize(x, y); }                                     \
     virtual wxSize GetBestVirtualSize() const                                 \
-        { return ScrollGetBestVirtualSize(); }                                \
-    virtual wxSize GetWindowSizeForVirtualSize(const wxSize& size) const      \
-        { return ScrollGetWindowSizeForVirtualSize(size); }
+        { return ScrollGetBestVirtualSize(); }
 
 // include the declaration of wxScrollHelperNative if needed
 
 // include the declaration of wxScrollHelperNative if needed
-#if defined(__WXGTK__) && !defined(__WXUNIVERSAL__)
+#if defined(__WXGTK20__) && !defined(__WXUNIVERSAL__)
     #include "wx/gtk/scrolwin.h"
     #include "wx/gtk/scrolwin.h"
+#elif defined(__WXGTK__) && !defined(__WXUNIVERSAL__)
+    #include "wx/gtk1/scrolwin.h"
 #else
     typedef wxScrollHelper wxScrollHelperNative;
 #endif
 #else
     typedef wxScrollHelper wxScrollHelperNative;
 #endif
@@ -282,19 +285,21 @@ public:
                 long style = wxScrolledWindowStyle,
                 const wxString& name = wxPanelNameStr);
 
                 long style = wxScrolledWindowStyle,
                 const wxString& name = wxPanelNameStr);
 
+    // we need to return a special WM_GETDLGCODE value to process just the
+    // arrows but let the other navigation characters through
+#ifdef __WXMSW__
+    virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
+#endif // __WXMSW__
+
     WX_FORWARD_TO_SCROLL_HELPER()
 
 protected:
     WX_FORWARD_TO_SCROLL_HELPER()
 
 protected:
+    virtual wxSize DoGetBestSize() const;
+
     // this is needed for wxEVT_PAINT processing hack described in
     // wxScrollHelperEvtHandler::ProcessEvent()
     void OnPaint(wxPaintEvent& event);
 
     // this is needed for wxEVT_PAINT processing hack described in
     // wxScrollHelperEvtHandler::ProcessEvent()
     void OnPaint(wxPaintEvent& event);
 
-    // we need to return a special WM_GETDLGCODE value to process just the
-    // arrows but let the other navigation characters through
-#ifdef __WXMSW__
-    virtual WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
-#endif // __WXMSW__
-
 private:
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxScrolledWindow)
     DECLARE_EVENT_TABLE()
 private:
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxScrolledWindow)
     DECLARE_EVENT_TABLE()