X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0b0f6f87d5112708311954fa4e9109e8ef77c05f..5a5f305a0f1cdd740d7ca299764755a62108fbda:/src/gtk/scrolwin.cpp diff --git a/src/gtk/scrolwin.cpp b/src/gtk/scrolwin.cpp index 0447f58d42..ef9dfd797c 100644 --- a/src/gtk/scrolwin.cpp +++ b/src/gtk/scrolwin.cpp @@ -36,10 +36,10 @@ // wxScrollHelper implementation // ---------------------------------------------------------------------------- -void wxScrollHelperNative::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, - int noUnitsX, int noUnitsY, - int xPos, int yPos, - bool noRefresh) +void wxScrollHelper::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, + int noUnitsX, int noUnitsY, + int xPos, int yPos, + bool noRefresh) { int xs, ys; GetViewStart(& xs, & ys); @@ -81,13 +81,13 @@ void wxScrollHelperNative::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, } } -void wxScrollHelperNative::DoAdjustScrollbar(GtkRange* range, - int pixelsPerLine, - int winSize, - int virtSize, - int *pos, - int *lines, - int *linesPerPage) +void wxScrollHelper::DoAdjustScrollbar(GtkRange* range, + int pixelsPerLine, + int winSize, + int virtSize, + int *pos, + int *lines, + int *linesPerPage) { int upper; int page_size; @@ -119,7 +119,7 @@ void wxScrollHelperNative::DoAdjustScrollbar(GtkRange* range, *pos = *lines; } -void wxScrollHelperNative::AdjustScrollbars() +void wxScrollHelper::AdjustScrollbars() { int vw, vh; m_targetWindow->GetVirtualSize(&vw, &vh); @@ -163,10 +163,10 @@ void wxScrollHelperNative::AdjustScrollbars() } } -void wxScrollHelperNative::DoScrollOneDir(int orient, - int pos, - int pixelsPerLine, - int *posOld) +void wxScrollHelper::DoScrollOneDir(int orient, + int pos, + int pixelsPerLine, + int *posOld) { if ( pos != -1 && pos != *posOld && pixelsPerLine ) { @@ -181,10 +181,52 @@ void wxScrollHelperNative::DoScrollOneDir(int orient, } } -void wxScrollHelperNative::DoScroll( int x_pos, int y_pos ) +void wxScrollHelper::DoScroll( int x_pos, int y_pos ) { wxCHECK_RET( m_targetWindow != 0, _T("No target window") ); DoScrollOneDir(wxHORIZONTAL, x_pos, m_xScrollPixelsPerLine, &m_xScrollPosition); DoScrollOneDir(wxVERTICAL, y_pos, m_yScrollPixelsPerLine, &m_yScrollPosition); } + +// ---------------------------------------------------------------------------- +// scrollbars visibility +// ---------------------------------------------------------------------------- + +namespace +{ + +GtkPolicyType GtkPolicyFromWX(wxScrollbarVisibility visibility) +{ + GtkPolicyType policy; + switch ( visibility ) + { + case wxSHOW_SB_NEVER: + policy = GTK_POLICY_NEVER; + break; + + case wxSHOW_SB_DEFAULT: + policy = GTK_POLICY_AUTOMATIC; + break; + + case wxSHOW_SB_ALWAYS: + policy = GTK_POLICY_ALWAYS; + break; + } + + return policy; +} + +} // anonymous namespace + +void wxScrollHelper::DoShowScrollbars(wxScrollbarVisibility horz, + wxScrollbarVisibility vert) +{ + GtkScrolledWindow * const scrolled = GTK_SCROLLED_WINDOW(m_win->m_widget); + wxCHECK_RET( scrolled, "window must be created" ); + + gtk_scrolled_window_set_policy(scrolled, + GtkPolicyFromWX(horz), + GtkPolicyFromWX(vert)); +} +