- if (g_isIdle)
- wxapp_install_idle_handler();
-
- g_blockEventsOnScroll = TRUE;
-
- // FIXME: there is no slider field any more, what was meant here?
-#ifndef __WXGTK20__
- win->m_isScrolling = (gdk_event->window == widget->slider);
-#endif
-
- return FALSE;
-}
-
-//-----------------------------------------------------------------------------
-// "button_release_event" from scrollbar
-//-----------------------------------------------------------------------------
-
-static gint gtk_scrollbar_button_release_callback( GtkRange *widget,
- GdkEventButton *WXUNUSED(gdk_event),
- wxWindowGTK *win)
-{
-// don't test here as we can release the mouse while being over
-// a different window than the slider
-//
-// if (gdk_event->window != widget->slider) return FALSE;
-
- g_blockEventsOnScroll = FALSE;
-
- if (win->m_isScrolling)
- {
- wxEventType command = wxEVT_SCROLLWIN_THUMBRELEASE;
- int value = -1;
- int dir = -1;
-
- GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
- if (widget == GTK_RANGE(scrolledWindow->hscrollbar))
- {
- value = (int)(win->m_hAdjust->value+0.5);
- dir = wxHORIZONTAL;
- }
- if (widget == GTK_RANGE(scrolledWindow->vscrollbar))
- {
- value = (int)(win->m_vAdjust->value+0.5);
- dir = wxVERTICAL;
- }
-
- wxScrollWinEvent event( command, value, dir );
- event.SetEventObject( win );
- win->GetEventHandler()->ProcessEvent( event );
- }
-
- win->m_isScrolling = FALSE;
-
- return FALSE;
-}
-
-//-----------------------------------------------------------------------------
-// InsertChild for wxScrolledWindow
-//-----------------------------------------------------------------------------
-
-static void wxInsertChildInScrolledWindow( wxWindow* parent, wxWindow* child )
-{
- // The window might have been scrolled already, do we
- // have to adapt the position.
- GtkPizza *pizza = GTK_PIZZA(parent->m_wxwindow);
- child->m_x += pizza->xoffset;
- child->m_y += pizza->yoffset;
-
- gtk_pizza_put( GTK_PIZZA(parent->m_wxwindow),
- GTK_WIDGET(child->m_widget),
- child->m_x,
- child->m_y,
- child->m_width,
- child->m_height );
-}
-
-// ----------------------------------------------------------------------------
-// wxScrolledWindow creation
-// ----------------------------------------------------------------------------
-
-void wxScrolledWindow::Init()
-{
- m_xScrollPixelsPerLine = 0;
- m_yScrollPixelsPerLine = 0;
- m_xScrollingEnabled = TRUE;
- m_yScrollingEnabled = TRUE;
- m_xScrollPosition = 0;
- m_yScrollPosition = 0;
- m_xScrollLines = 0;
- m_yScrollLines = 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);