summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--webkit/tools/test_shell/webwidget_host_gtk.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/webkit/tools/test_shell/webwidget_host_gtk.cc b/webkit/tools/test_shell/webwidget_host_gtk.cc
index 8693cf1..19f25e3 100644
--- a/webkit/tools/test_shell/webwidget_host_gtk.cc
+++ b/webkit/tools/test_shell/webwidget_host_gtk.cc
@@ -58,6 +58,8 @@ class WebWidgetHostGtkWidget {
GDK_KEY_PRESS_MASK |
GDK_KEY_RELEASE_MASK);
GTK_WIDGET_SET_FLAGS(widget, GTK_CAN_FOCUS);
+ g_signal_connect(widget, "size-request",
+ G_CALLBACK(&HandleSizeRequest), host);
g_signal_connect(widget, "size-allocate",
G_CALLBACK(&HandleSizeAllocate), host);
g_signal_connect(widget, "configure-event",
@@ -89,6 +91,22 @@ class WebWidgetHostGtkWidget {
}
private:
+ // Our size was requested. We let the GtkFixed do its normal calculation,
+ // after which this callback is called. The GtkFixed will come up with a
+ // requisition based on its children, which include plugin windows. Since
+ // we don't want to prevent resizing smaller than a plugin window, we need to
+ // control the size ourself.
+ static void HandleSizeRequest(GtkWidget* widget,
+ GtkRequisition* req,
+ WebWidgetHost* host) {
+ // This is arbitrary, but the WebKit scrollbars try to shrink themselves
+ // if the browser window is too small. Give them some space.
+ static const int kMinWidthHeight = 64;
+
+ req->width = kMinWidthHeight;
+ req->height = kMinWidthHeight;
+ }
+
// Our size has changed.
static void HandleSizeAllocate(GtkWidget* widget,
GtkAllocation* allocation,