1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/gtk/scrolwin.h
3 // Purpose:     wxScrolledWindow class
4 // Author:      Robert Roebling
5 // Modified by: Vadim Zeitlin (2005-10-10): wxScrolledWindow is now common
6 // Created:     01/02/97
7 // Copyright:   (c) Robert Roebling
8 // Licence:     wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10 
11 #ifndef _WX_GTK_SCROLLWIN_H_
12 #define _WX_GTK_SCROLLWIN_H_
13 
14 // ----------------------------------------------------------------------------
15 // wxScrolledWindow
16 // ----------------------------------------------------------------------------
17 
18 class WXDLLIMPEXP_CORE wxScrollHelper : public wxScrollHelperBase
19 {
20     typedef wxScrollHelperBase base_type;
21 public:
22     // default ctor doesn't do anything
wxScrollHelper(wxWindow * win)23     wxScrollHelper(wxWindow *win) : wxScrollHelperBase(win) { }
24 
25     // implement the base class methods
26     virtual void SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY,
27                                int noUnitsX, int noUnitsY,
28                                int xPos = 0, int yPos = 0,
29                                bool noRefresh = false) wxOVERRIDE;
30     virtual void AdjustScrollbars() wxOVERRIDE;
31 
32     virtual bool IsScrollbarShown(int orient) const wxOVERRIDE;
33 
34 protected:
35     virtual void DoScroll(int x, int y) wxOVERRIDE;
36     virtual void DoShowScrollbars(wxScrollbarVisibility horz,
37                                   wxScrollbarVisibility vert) wxOVERRIDE;
38 
39 private:
40     // this does (each) half of AdjustScrollbars() work
41     void DoAdjustScrollbar(GtkRange* range,
42                            int pixelsPerLine,
43                            int winSize,
44                            int virtSize,
45                            int *pos,
46                            int *lines,
47                            int *linesPerPage);
48 
DoAdjustHScrollbar(int winSize,int virtSize)49     void DoAdjustHScrollbar(int winSize, int virtSize)
50     {
51         DoAdjustScrollbar
52         (
53             m_win->m_scrollBar[wxWindow::ScrollDir_Horz],
54             m_xScrollPixelsPerLine, winSize, virtSize,
55             &m_xScrollPosition, &m_xScrollLines, &m_xScrollLinesPerPage
56         );
57     }
58 
DoAdjustVScrollbar(int winSize,int virtSize)59     void DoAdjustVScrollbar(int winSize, int virtSize)
60     {
61         DoAdjustScrollbar
62         (
63             m_win->m_scrollBar[wxWindow::ScrollDir_Vert],
64             m_yScrollPixelsPerLine, winSize, virtSize,
65             &m_yScrollPosition, &m_yScrollLines, &m_yScrollLinesPerPage
66         );
67     }
68 
69     // and this does the same for Scroll()
70     void DoScrollOneDir(int orient,
71                         int pos,
72                         int pixelsPerLine,
73                         int *posOld);
74 
75     wxDECLARE_NO_COPY_CLASS(wxScrollHelper);
76 };
77 
78 #endif // _WX_GTK_SCROLLWIN_H_
79 
80