[GTK] Send onscroll events for the main FrameView

2009-05-10  Holger Hans Peter Freyther  <zecke@selfish.org>

        Reviewed by Dave Hyatt.

        https://bugs.webkit.org/show_bug.cgi?id=25646

        [GTK] Send onscroll events for the main FrameView

        WebKit/GTK+ is currently not sending any onscroll
        events for a frame with external adjustments. This is
        due the fact that the value-changed signal of the GtkAdjustment
        is handled by WebCore::ScrollView directly and is not going through
        the WebCore::Scrollbar -> WebCore::ScrollbarClient ->
        WebCore::FrameView::valueChanged -> WebCore::ScrollView::valueChanged
        path.

        Fix the above problem by wrapping the GtkAdjustment we get
        assigned from GTK+ in a ScrollbarGtk that will not have any
        visual appearance. Remove code from ScrollView that knows
        about adjustments and create a special case for
        WebCore::ScrollView::createScrollbar that will create such
        a special WebCore::ScrollbarGtk.

        * platform/ScrollView.cpp: Remove adjustment code
        (WebCore::ScrollView::setHasHorizontalScrollbar):
        (WebCore::ScrollView::setHasVerticalScrollbar):
        (WebCore::ScrollView::updateScrollbars):
        (WebCore::ScrollView::wheelEvent):
        * platform/ScrollView.h: Remove adjustment code
        * platform/gtk/ScrollViewGtk.cpp:
        (WebCore::ScrollView::platformDestroy):
        (WebCore::ScrollView::createScrollbar):
        (WebCore::ScrollView::setGtkAdjustments):
        * platform/gtk/ScrollbarGtk.cpp:
        (ScrollbarGtk::createScrollbar): Special case.
        (ScrollbarGtk::ScrollbarGtk):  New ctor and work on the adjustment
        (ScrollbarGtk::~ScrollbarGtk): Disconnect signal
        (ScrollbarGtk::frameRectsChanged): Do nothing when we lack a platformWidget
        * platform/gtk/ScrollbarGtk.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@44177 268f45cc-cd09-0410-ab3c-d52691b4dbfc
6 files changed