diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-25 15:09:11 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-25 15:09:11 +0200 |
commit | a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd (patch) | |
tree | b7abd9f49ae1d4d2e426a5883bfccd42b8e2ee12 /Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp | |
parent | 8d473cf9743f1d30a16a27114e93bd5af5648d23 (diff) | |
download | qtwebkit-a89b2ebb8e192c5e8cea21079bda2ee2c0c7dddd.tar.gz |
Imported WebKit commit eb5c1b8fe4d4b1b90b5137433fc58a91da0e6878 (http://svn.webkit.org/repository/webkit/trunk@118516)
Diffstat (limited to 'Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp')
-rw-r--r-- | Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp | 61 |
1 files changed, 51 insertions, 10 deletions
diff --git a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp index b2cdde564..4faa75fb0 100644 --- a/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp +++ b/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp @@ -36,6 +36,7 @@ #include "WebContext.h" #include "WebEventFactory.h" #include "WebFullScreenClientGtk.h" +#include "WebInspectorProxy.h" #include "WebKitPrivate.h" #include "WebKitWebViewBaseAccessible.h" #include "WebKitWebViewBasePrivate.h" @@ -87,10 +88,15 @@ struct _WebKitWebViewBasePrivate { bool fullScreenModeActive; WebFullScreenClientGtk fullScreenClient; #endif + GtkWidget* inspectorView; + unsigned inspectorViewHeight; }; G_DEFINE_TYPE(WebKitWebViewBase, webkit_web_view_base, GTK_TYPE_CONTAINER) +// Keep this in sync with the value minimumAttachedHeight in WebInspectorProxy. +static const unsigned gMinimumAttachedInspectorHeight = 250; + static void webkitWebViewBaseNotifyResizerSizeForWindow(WebKitWebViewBase* webViewBase, GtkWindow* window) { gboolean resizerVisible; @@ -170,9 +176,16 @@ static void webkitWebViewBaseContainerAdd(GtkContainer* container, GtkWidget* wi WebKitWebViewBase* webView = WEBKIT_WEB_VIEW_BASE(container); WebKitWebViewBasePrivate* priv = webView->priv; - GtkAllocation childAllocation; - gtk_widget_get_allocation(widget, &childAllocation); - priv->children.set(widget, childAllocation); + if (WEBKIT_IS_WEB_VIEW_BASE(widget) + && WebInspectorProxy::isInspectorPage(WEBKIT_WEB_VIEW_BASE(widget)->priv->pageProxy.get())) { + ASSERT(priv->inspectorView); + priv->inspectorView = widget; + priv->inspectorViewHeight = gMinimumAttachedInspectorHeight; + } else { + GtkAllocation childAllocation; + gtk_widget_get_allocation(widget, &childAllocation); + priv->children.set(widget, childAllocation); + } gtk_widget_set_parent(widget, GTK_WIDGET(container)); } @@ -183,11 +196,16 @@ static void webkitWebViewBaseContainerRemove(GtkContainer* container, GtkWidget* WebKitWebViewBasePrivate* priv = webView->priv; GtkWidget* widgetContainer = GTK_WIDGET(container); - ASSERT(priv->children.contains(widget)); gboolean wasVisible = gtk_widget_get_visible(widget); gtk_widget_unparent(widget); - priv->children.remove(widget); + if (priv->inspectorView == widget) { + priv->inspectorView = 0; + priv->inspectorViewHeight = 0; + } else { + ASSERT(priv->children.contains(widget)); + priv->children.remove(widget); + } if (wasVisible && gtk_widget_get_visible(widgetContainer)) gtk_widget_queue_resize(widgetContainer); } @@ -201,6 +219,9 @@ static void webkitWebViewBaseContainerForall(GtkContainer* container, gboolean i WebKitWebViewChildrenMap::const_iterator end = children.end(); for (WebKitWebViewChildrenMap::const_iterator current = children.begin(); current != end; ++current) (*callback)(current->first, callbackData); + + if (includeInternals && priv->inspectorView) + (*callback)(priv->inspectorView, callbackData); } void webkitWebViewBaseChildMoveResize(WebKitWebViewBase* webView, GtkWidget* child, const IntRect& childRect) @@ -282,9 +303,19 @@ static void resizeWebKitWebViewBaseFromAllocation(WebKitWebViewBase* webViewBase { gtk_container_foreach(GTK_CONTAINER(webViewBase), webkitWebViewBaseChildAllocate, webViewBase); + IntRect viewRect(allocation->x, allocation->y, allocation->width, allocation->height); WebKitWebViewBasePrivate* priv = webViewBase->priv; + if (priv->inspectorView) { + GtkAllocation childAllocation = viewRect; + childAllocation.y = allocation->height - priv->inspectorViewHeight; + childAllocation.height = priv->inspectorViewHeight; + gtk_widget_size_allocate(priv->inspectorView, &childAllocation); + + viewRect.setHeight(allocation->height - priv->inspectorViewHeight); + } + if (priv->pageProxy->drawingArea()) - priv->pageProxy->drawingArea()->setSize(IntSize(allocation->width, allocation->height), IntSize()); + priv->pageProxy->drawingArea()->setSize(viewRect.size(), IntSize()); GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(webViewBase)); if (widgetIsOnscreenToplevelWindow(toplevel)) @@ -404,7 +435,7 @@ static gboolean webkitWebViewBaseButtonPressEvent(GtkWidget* widget, GdkEventBut return TRUE; priv->pageProxy->handleMouseEvent(NativeWebMouseEvent(reinterpret_cast<GdkEvent*>(buttonEvent), priv->clickCounter.clickCountForGdkButtonEvent(widget, buttonEvent))); - return FALSE; + return TRUE; } static gboolean webkitWebViewBaseButtonReleaseEvent(GtkWidget* widget, GdkEventButton* event) @@ -415,7 +446,7 @@ static gboolean webkitWebViewBaseButtonReleaseEvent(GtkWidget* widget, GdkEventB gtk_widget_grab_focus(widget); priv->pageProxy->handleMouseEvent(NativeWebMouseEvent(reinterpret_cast<GdkEvent*>(event), 0 /* currentClickCount */)); - return FALSE; + return TRUE; } static gboolean webkitWebViewBaseScrollEvent(GtkWidget* widget, GdkEventScroll* event) @@ -425,7 +456,7 @@ static gboolean webkitWebViewBaseScrollEvent(GtkWidget* widget, GdkEventScroll* priv->pageProxy->handleWheelEvent(NativeWebWheelEvent(reinterpret_cast<GdkEvent*>(event))); - return FALSE; + return TRUE; } static gboolean webkitWebViewBaseMotionNotifyEvent(GtkWidget* widget, GdkEventMotion* event) @@ -435,7 +466,7 @@ static gboolean webkitWebViewBaseMotionNotifyEvent(GtkWidget* widget, GdkEventMo priv->pageProxy->handleMouseEvent(NativeWebMouseEvent(reinterpret_cast<GdkEvent*>(event), 0 /* currentClickCount */)); - return FALSE; + return TRUE; } static gboolean webkitWebViewBaseQueryTooltip(GtkWidget* widget, gint x, gint y, gboolean keyboardMode, GtkTooltip* tooltip) @@ -718,3 +749,13 @@ void webkitWebViewBaseInitializeFullScreenClient(WebKitWebViewBase* webkitWebVie { webkitWebViewBase->priv->fullScreenClient.initialize(wkClient); } + +void webkitWebViewBaseSetInspectorViewHeight(WebKitWebViewBase* webkitWebViewBase, unsigned height) +{ + if (!webkitWebViewBase->priv->inspectorView) + return; + if (webkitWebViewBase->priv->inspectorViewHeight == height) + return; + webkitWebViewBase->priv->inspectorViewHeight = height; + gtk_widget_queue_resize_no_redraw(GTK_WIDGET(webkitWebViewBase)); +} |