diff options
Diffstat (limited to 'webkit/glue/chromium_bridge_impl.cc')
-rw-r--r-- | webkit/glue/chromium_bridge_impl.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/webkit/glue/chromium_bridge_impl.cc b/webkit/glue/chromium_bridge_impl.cc index c936b30..ff977ef 100644 --- a/webkit/glue/chromium_bridge_impl.cc +++ b/webkit/glue/chromium_bridge_impl.cc @@ -5,13 +5,22 @@ #include "config.h" #include "ChromiumBridge.h" +#include "Cursor.h" +#include "Frame.h" +#include "FrameView.h" #include "HostWindow.h" +#include "Page.h" #include "PlatformWidget.h" #include "ScrollView.h" #include "Widget.h" +#undef LOG +#include "webkit/glue/chrome_client_impl.h" #include "webkit/glue/glue_util.h" +#include "webkit/glue/webcursor.h" #include "webkit/glue/webkit_glue.h" +#include "webkit/glue/webview_impl.h" +#include "webkit/glue/webview_delegate.h" namespace WebCore { @@ -19,6 +28,23 @@ static PlatformWidget ToPlatform(Widget* widget) { return widget ? widget->root()->hostWindow()->platformWindow() : 0; } +static ChromeClientImpl* ToChromeClient(Widget* widget) { + FrameView* view; + if (widget->isFrameView()) { + view = static_cast<FrameView*>(widget); + } else if (widget->parent() && widget->parent()->isFrameView()) { + view = static_cast<FrameView*>(widget->parent()); + } else { + return NULL; + } + + Page* page = view->frame() ? view->frame()->page() : NULL; + if (!page) + return NULL; + + return static_cast<ChromeClientImpl*>(page->chrome()->client()); +} + // Screen --------------------------------------------------------------------- int ChromiumBridge::screenDepth(Widget* widget) { @@ -43,4 +69,18 @@ IntRect ChromiumBridge::screenAvailableRect(Widget* widget) { webkit_glue::GetScreenInfo(ToPlatform(widget)).available_rect); } +// Widget --------------------------------------------------------------------- + +void ChromiumBridge::widgetSetCursor(Widget* widget, const Cursor& cursor) { + ChromeClientImpl* chrome_client = ToChromeClient(widget); + if (chrome_client) + chrome_client->SetCursor(WebCursor(cursor.impl())); +} + +void ChromiumBridge::widgetSetFocus(Widget* widget) { + ChromeClientImpl* chrome_client = ToChromeClient(widget); + if (chrome_client) + chrome_client->focus(); +} + } // namespace WebCore |