2007-08-10 Holger Hans Peter Freyther Reviewed by Adam. Use the ScrollView/Widget design of the Windows port to only use one native window for the whole page. This will make it possible to implement FrameLoaderClientGdk::createFrame. In contrast to the windows port the ScrollBars are GtkWidgets. To paint them at the right position we need to position them correctly. To not scroll the ScrollBar's belonging to the ScrollView a ScrollViewScrollbar is introduced with a different geometryChanged method. To allow the Gtk+ way of scrolling the ScrollView allows to get GtkAdjustments set. In this case no ScrollViewScrollbar will be created. * platform/ScrollView.h: * platform/Widget.h: * platform/gdk/PlatformScreenGdk.cpp: (WebCore::screenDepth): * platform/gdk/PlatformScrollBar.h: * platform/gdk/PlatformScrollBarGdk.cpp: (PlatformScrollbar::PlatformScrollbar): (PlatformScrollbar::~PlatformScrollbar): (PlatformScrollbar::setRect): (PlatformScrollbar::geometryChanged): * platform/gdk/ScrollViewGdk.cpp: (WebCore::ScrollView::ScrollViewPrivate::ScrollViewPrivate): (WebCore::ScrollView::ScrollViewPrivate::~ScrollViewPrivate): (WebCore::ScrollViewScrollbar::ScrollViewScrollbar): (WebCore::ScrollViewScrollbar::geometryChanged): (WebCore::ScrollView::ScrollViewPrivate::setHasHorizontalScrollbar): (WebCore::ScrollView::ScrollViewPrivate::setHasVerticalScrollbar): (WebCore::ScrollView::ScrollViewPrivate::scrollBackingStore): (WebCore::ScrollView::ScrollViewPrivate::adjustmentChanged): (WebCore::ScrollView::ScrollViewPrivate::valueChanged): (WebCore::ScrollView::ScrollViewPrivate::windowClipRect): (WebCore::ScrollView::setGtkAdjustments): (WebCore::ScrollView::updateContents): (WebCore::ScrollView::update): (WebCore::ScrollView::visibleWidth): (WebCore::ScrollView::resizeContents): (WebCore::ScrollView::contentsX): (WebCore::ScrollView::scrollOffset): (WebCore::ScrollView::maximumScroll): (WebCore::ScrollView::scrollBy): (WebCore::ScrollView::suppressScrollbars): (WebCore::ScrollView::setHScrollbarMode): (WebCore::ScrollView::setVScrollbarMode): (WebCore::ScrollView::setScrollbarsMode): (WebCore::ScrollView::setFrameGeometry): (WebCore::ScrollView::addChild): (WebCore::ScrollView::removeChild): (WebCore::ScrollView::scrollRectIntoViewRecursively): (WebCore::ScrollView::wheelEvent): (WebCore::ScrollView::updateScrollbars): (WebCore::ScrollView::windowToContents): (WebCore::ScrollView::contentsToWindow): (WebCore::ScrollView::scrollbarUnderMouse): (WebCore::ScrollView::convertChildToSelf): (WebCore::ScrollView::convertSelfToChild): (WebCore::ScrollView::paint): (WebCore::ScrollView::geometryChanged): (WebCore::ScrollView::scroll): (WebCore::ScrollView::addToDirtyRegion): (WebCore::ScrollView::scrollBackingStore): (WebCore::ScrollView::updateBackingStore): * platform/gdk/WidgetGdk.cpp: (WebCore::WidgetPrivate::gdkDrawable): (WebCore::Widget::Widget): (WebCore::Widget::setContainingWindow): (WebCore::Widget::containingWindow): (WebCore::Widget::frameGeometry): (WebCore::Widget::setFrameGeometry): (WebCore::Widget::setParent): (WebCore::Widget::parent): (WebCore::Widget::setCursor): (WebCore::Widget::show): (WebCore::Widget::hide): (WebCore::Widget::removeFromParent): (WebCore::Widget::paint): (WebCore::Widget::invalidate): (WebCore::Widget::invalidateRect): (WebCore::Widget::convertToContainingWindow): (WebCore::Widget::convertFromContainingWindow): (WebCore::Widget::convertChildToSelf): (WebCore::Widget::convertSelfToChild): (WebCore::Widget::suppressInvalidation): (WebCore::Widget::setSuppressInvalidation): 2007-08-09 Adele Peterson Fix by Brady, reviewed by me. Fix for connection:willSendRequest:redirectResponse: is called on every NSURLConnection * platform/network/mac/ResourceHandleMac.mm: (-[WebCoreResourceHandleAsDelegate connection:willSendRequest:redirectResponse:]): Work around a behavior change in CFNetwork where willSendRequest gets called more often by returning early. 2007-08-09 Darin Adler Reviewed by Antti. - fix REGRESSION: Selection doesn't continue with drag selecting when autoscrolling vertically (in Notes as well as Safari) The bug doesn't happen inside DumpRenderTree, so I was unable to make an automated regression test. * manual-tests/autoscroll-when-outside-window.html: Added. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::autoscroll): Removed unneeded null check for the layer's renderer and the document, neither of which can be null. Call the new updateSelectionForMouseDrag instead of doing selection updating here. * page/EventHandler.h: * page/EventHandler.cpp: (WebCore::EventHandler::handleMouseDraggedEvent): Refactored most of the logic about updating the selection into updateSelectionForMouseDrag. (WebCore::EventHandler::updateSelectionForMouseDrag): Added. The public version of this function takes no parameters, and is for use from auto-scrolling code. The private version of this function takes node and point parameters and contains the shared code, including everything from updateSelectionForMouseDragOverPosition. Aside from the code motion, variable name changes, and sharing more code, this differs from the old code in RenderLayer::autoscroll in the following ways: 1) The old code did hit testing only in the layer that was auto-scrolling, and the new code instead starts the hit testing at the root layer, which is better because it's the same thing we do for mouse moved events. Further, the code to do this by calling convertToLayerCoords had a bug because the x and y variables were uninitialized. 2) The old code passed false for active to HitTestRequest, which was wrong. The new code passes true. This flag needs to be true for hit testing done while the mouse is down and false for hit testing done while the mouse is up. 3) The old code did not have the SVG-specific logic to match the mouse moved case. 4) The old code wouldn't do any selection updating if the return value from hitTest was false, which is incorrect. The new code ignores the return value as it should. 2007-08-08 Beth Dakin Reviewed by Geoff Garen. Fx for , http://bugs.webkit.org/ show_bug.cgi?id=14268 REGRESSION: Radio buttons don't stay selected due to unclosed