-void wxScrolledWindow::Init()
-{
-    m_xScrollPixelsPerLine = 0;
-    m_yScrollPixelsPerLine = 0;
-    m_xScrollingEnabled = TRUE;
-    m_yScrollingEnabled = TRUE;
-    m_xScrollPosition = 0;
-    m_yScrollPosition = 0;
-    m_xScrollLinesPerPage = 0;
-    m_yScrollLinesPerPage = 0;
-    m_targetWindow = (wxWindow*) NULL;
-    m_scaleX = 1.0;
-    m_scaleY = 1.0;
-    m_hasScrolling = TRUE;
-}
-
-bool wxScrolledWindow::Create(wxWindow *parent,
-                              wxWindowID id,
-                              const wxPoint& pos,
-                              const wxSize& size,
-                              long style,
-                              const wxString& name)
-{
-    Init();
-
-    if (!PreCreation( parent, pos, size ) ||
-        !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name ))
-    {
-        wxFAIL_MSG( wxT("wxWindow creation failed") );
-        return FALSE;
-    }
-
-    m_insertCallback = wxInsertChildInScrolledWindow;
-
-    m_targetWindow = this;
-
-    m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
-    GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
-
-    GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(m_widget);
-
-    GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT_GET_CLASS(m_widget) );
-    scroll_class->scrollbar_spacing = 0;
-
-    gtk_scrolled_window_set_policy( scrolledWindow, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC );
-
-    m_hAdjust = gtk_range_get_adjustment( GTK_RANGE(scrolledWindow->hscrollbar) );
-    m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(scrolledWindow->vscrollbar) );
-
-    m_wxwindow = gtk_pizza_new();
-
-    gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
-
-    GtkPizza *pizza = GTK_PIZZA(m_wxwindow);
-
-    if (HasFlag(wxRAISED_BORDER))
-    {
-        gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_OUT );
-    }
-    else if (HasFlag(wxSUNKEN_BORDER))
-    {
-        gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_IN );
-    }
-    else if (HasFlag(wxSIMPLE_BORDER))
-    {
-        gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_THIN );
-    }
-    else
-    {
-        gtk_pizza_set_shadow_type( pizza, GTK_MYSHADOW_NONE );
-    }
-
-    GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
-    m_acceptsFocus = TRUE;
-
-    // I _really_ don't want scrollbars in the beginning
-    m_vAdjust->lower = 0.0;
-    m_vAdjust->upper = 1.0;
-    m_vAdjust->value = 0.0;
-    m_vAdjust->step_increment = 1.0;
-    m_vAdjust->page_increment = 2.0;
-    gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" );
-    m_hAdjust->lower = 0.0;
-    m_hAdjust->upper = 1.0;
-    m_hAdjust->value = 0.0;
-    m_hAdjust->step_increment = 1.0;
-    m_hAdjust->page_increment = 2.0;
-    gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" );
-
-    // Handlers for new scrollbar values
-    GtkVConnectEvent();
-    GtkHConnectEvent();
-
-    // these handlers block mouse events to any window during scrolling such as
-    // motion events and prevent GTK and wxWidgets from fighting over where the
-    // slider should be
-
-    gtk_signal_connect( GTK_OBJECT(scrolledWindow->vscrollbar), "button_press_event",
-          (GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this );
-
-    gtk_signal_connect( GTK_OBJECT(scrolledWindow->hscrollbar), "button_press_event",
-          (GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this );
-
-    gtk_signal_connect( GTK_OBJECT(scrolledWindow->vscrollbar), "button_release_event",
-          (GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this );
-
-    gtk_signal_connect( GTK_OBJECT(scrolledWindow->hscrollbar), "button_release_event",
-          (GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this );
-
-    gtk_widget_show( m_wxwindow );
-
-    if (m_parent)
-        m_parent->DoAddChild( this );
-
-    m_focusWidget = m_wxwindow;
-
-    PostCreation();
-
-    Show( TRUE );
-    
-    return TRUE;
-}
-
-// ----------------------------------------------------------------------------
-// setting scrolling parameters
-// ----------------------------------------------------------------------------
-
-void wxScrolledWindow::DoSetVirtualSize( int x, int y )
-{
-    wxPanel::DoSetVirtualSize( x, y );
-    AdjustScrollbars();
-
-    if (GetAutoLayout())
-        Layout();
-}
-
-// wxWindow's GetBestVirtualSize returns the actual window size,
-// whereas we want to return the virtual size
-wxSize wxScrolledWindow::GetBestVirtualSize() const
-{
-    wxSize  clientSize( GetClientSize() );
-    if (GetSizer())
-    {
-        wxSize minSize( GetSizer()->CalcMin() );
-
-        return wxSize( wxMax( clientSize.x, minSize.x ), wxMax( clientSize.y, minSize.y ) );
-    }
-    else
-        return clientSize;
-}
-
-// return the size best suited for the current window
-// (this isn't a virtual size, this is a sensible size for the window)
-wxSize wxScrolledWindow::DoGetBestSize() const
-{
-    wxSize best;
-
-    if ( GetSizer() )
-    {
-        wxSize b = GetSizer()->GetMinSize();
-
-        // Only use the content to set the window size in the direction
-        // where there's no scrolling; otherwise we're going to get a huge
-        // window in the direction in which scrolling is enabled
-        int ppuX, ppuY;
-        GetScrollPixelsPerUnit(& ppuX, & ppuY);
-
-        wxSize minSize;
-        if ( GetMinSize().IsFullySpecified() )
-            minSize = GetMinSize();
-        else
-            minSize = GetSize();
-
-        if (ppuX > 0)
-            b.x = minSize.x;
-        if (ppuY > 0)
-            b.y = minSize.y;
-        best = b;
-    }
-    else
-        return wxWindow::DoGetBestSize();
-
-    // Add any difference between size and client size
-    wxSize diff = GetSize() - GetClientSize();
-    best.x += wxMax(0, diff.x);
-    best.y += wxMax(0, diff.y);
-
-    return best;
-}
-
-/*
- * pixelsPerUnitX/pixelsPerUnitY: number of pixels per unit (e.g. pixels per text line)
- * noUnitsX/noUnitsY:        : no. units per scrollbar
- */
-void wxScrolledWindow::SetScrollbars( int pixelsPerUnitX, int pixelsPerUnitY,
-                                      int noUnitsX, int noUnitsY,
-                                      int xPos, int yPos, bool noRefresh )