Commit 3449540e authored by xan@webkit.org's avatar xan@webkit.org

2009-04-21 Xan Lopez <xlopez@igalia.com>

        Reviewed by Gustavo Noronha.

        https://bugs.webkit.org/show_bug.cgi?id=21546
        [GTK] ATK accessibility enhancements

        Implement window<->screen coordinate transformation functions.

        * WebCoreSupport/ChromeClientGtk.cpp:
        (WebKit::widgetScreenPosition):
        (WebKit::ChromeClient::windowToScreen):
        (WebKit::ChromeClient::screenToWindow):

git-svn-id: svn://svn.chromium.org/blink/trunk@42703 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 39e44d6d
2009-04-21 Xan Lopez <xlopez@igalia.com>
Reviewed by Gustavo Noronha.
https://bugs.webkit.org/show_bug.cgi?id=21546
[GTK] ATK accessibility enhancements
Implement window<->screen coordinate transformation functions.
* WebCoreSupport/ChromeClientGtk.cpp:
(WebKit::widgetScreenPosition):
(WebKit::ChromeClient::windowToScreen):
(WebKit::ChromeClient::screenToWindow):
2009-04-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> 2009-04-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
Reviewed by Xan Lopez. Reviewed by Xan Lopez.
......
...@@ -334,16 +334,38 @@ void ChromeClient::scroll(const IntSize& delta, const IntRect& rectToScroll, con ...@@ -334,16 +334,38 @@ void ChromeClient::scroll(const IntSize& delta, const IntRect& rectToScroll, con
gdk_region_destroy(invalidRegion); gdk_region_destroy(invalidRegion);
} }
// FIXME: this does not take into account the WM decorations
static IntPoint widgetScreenPosition(GtkWidget* widget)
{
GtkWidget* window = gtk_widget_get_toplevel(widget);
int widgetX = 0, widgetY = 0;
gtk_widget_translate_coordinates(widget, window, 0, 0, &widgetX, &widgetY);
IntPoint result(widgetX, widgetY);
int originX, originY;
gdk_window_get_origin(window->window, &originX, &originY);
result.move(originX, originY);
return result;
}
IntRect ChromeClient::windowToScreen(const IntRect& rect) const IntRect ChromeClient::windowToScreen(const IntRect& rect) const
{ {
notImplemented(); IntRect result(rect);
return rect; IntPoint screenPosition = widgetScreenPosition(GTK_WIDGET(m_webView));
result.move(screenPosition.x(), screenPosition.y());
return result;
} }
IntPoint ChromeClient::screenToWindow(const IntPoint& point) const IntPoint ChromeClient::screenToWindow(const IntPoint& point) const
{ {
notImplemented(); IntPoint result(point);
return point; IntPoint screenPosition = widgetScreenPosition(GTK_WIDGET(m_webView));
result.move(-screenPosition.x(), -screenPosition.y());
return result;
} }
PlatformWidget ChromeClient::platformWindow() const PlatformWidget ChromeClient::platformWindow() const
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment