/////////////////////////////////////////////////////////////////////////////
-// Name: gtk/scrolwin.cpp
+// Name: src/gtk/scrolwin.cpp
// Purpose: wxScrolledWindow implementation
// Author: Robert Roebling
// Modified by: Ron Lee
// Vadim Zeitlin: removed 90% of duplicated common code
// Created: 01/02/97
-// RCS-ID: $Id$
// Copyright: (c) Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/scrolwin.h"
#include <gtk/gtk.h>
+#include "wx/gtk/private/gtk2-compat.h"
// ----------------------------------------------------------------------------
// wxScrollHelper implementation
int xPos, int yPos,
bool noRefresh)
{
- m_win->m_scrollBar[wxWindow::ScrollDir_Horz]->adjustment->value = xPos;
- m_win->m_scrollBar[wxWindow::ScrollDir_Vert]->adjustment->value = yPos;
+ // prevent programmatic position changes from causing scroll events
+ m_win->SetScrollPos(wxHORIZONTAL, xPos);
+ m_win->SetScrollPos(wxVERTICAL, yPos);
+
base_type::SetScrollbars(
pixelsPerUnitX, pixelsPerUnitY, noUnitsX, noUnitsY, xPos, yPos, noRefresh);
}
int *lines,
int *linesPerPage)
{
+ if (!range)
+ return;
+
int upper;
int page_size;
if (pixelsPerLine > 0 && winSize > 0 && winSize < virtSize)
*linesPerPage = 0;
}
- GtkAdjustment* adj = range->adjustment;
- adj->step_increment = 1;
- adj->page_increment =
- adj->page_size = page_size;
+ gtk_range_set_increments(range, 1, page_size);
+ gtk_adjustment_set_page_size(gtk_range_get_adjustment(range), page_size);
gtk_range_set_range(range, 0, upper);
// ensure that the scroll position is always in valid range
void wxScrollHelper::DoScroll( int x_pos, int y_pos )
{
- wxCHECK_RET( m_targetWindow != 0, _T("No target window") );
+ wxCHECK_RET( m_targetWindow != 0, wxT("No target window") );
DoScrollOneDir(wxHORIZONTAL, x_pos, m_xScrollPixelsPerLine, &m_xScrollPosition);
DoScrollOneDir(wxVERTICAL, y_pos, m_yScrollPixelsPerLine, &m_yScrollPosition);
policy = GTK_POLICY_AUTOMATIC;
break;
+ default:
+ wxFAIL_MSG( wxS("unknown scrollbar visibility") );
+ // fall through
+
case wxSHOW_SB_ALWAYS:
policy = GTK_POLICY_ALWAYS;
break;