diff options
author | scottbyer@chromium.org <scottbyer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-20 22:33:51 +0000 |
---|---|---|
committer | scottbyer@chromium.org <scottbyer@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-20 22:33:51 +0000 |
commit | 101747a964502501506c2903983b14b2e741d230 (patch) | |
tree | 0e952fa7ca99fb91dbfa58982afe49076d5d0464 /views/widget/widget_gtk.cc | |
parent | c6a7b86c54d8b920943c97d990268ba1aee7b04b (diff) | |
download | chromium_src-101747a964502501506c2903983b14b2e741d230.zip chromium_src-101747a964502501506c2903983b14b2e741d230.tar.gz chromium_src-101747a964502501506c2903983b14b2e741d230.tar.bz2 |
Add in a browser test for dialog resizing, which was catching an issue with the way we were using GTK in toolkit views. Possibly related to 27365 or 38785.
http://code.google.com/p/chromium-os/issues/detail?id=4126
BUG=chromium-os:4126
TEST=HtmlDialogBrowserTest.SizeWindow
Review URL: http://codereview.chromium.org/2768006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56919 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/widget/widget_gtk.cc')
-rw-r--r-- | views/widget/widget_gtk.cc | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/views/widget/widget_gtk.cc b/views/widget/widget_gtk.cc index 1f7afb2..f74eef13 100644 --- a/views/widget/widget_gtk.cc +++ b/views/widget/widget_gtk.cc @@ -331,7 +331,7 @@ void WidgetGtk::RemoveChild(GtkWidget* child) { // closed. if (GTK_IS_CONTAINER(window_contents_)) { gtk_container_remove(GTK_CONTAINER(window_contents_), child); - gtk_views_fixed_set_use_allocated_size(child, false); + gtk_views_fixed_set_widget_size(child, 0, 0); } } @@ -340,9 +340,7 @@ void WidgetGtk::ReparentChild(GtkWidget* child) { } void WidgetGtk::PositionChild(GtkWidget* child, int x, int y, int w, int h) { - GtkAllocation alloc = { x, y, w, h }; - gtk_widget_size_allocate(child, &alloc); - gtk_views_fixed_set_use_allocated_size(child, true); + gtk_views_fixed_set_widget_size(child, w, h); gtk_fixed_move(GTK_FIXED(window_contents_), child, x, y); } @@ -429,6 +427,18 @@ RootView* WidgetGtk::GetRootViewForWidget(GtkWidget* widget) { return static_cast<RootView*>(user_data); } +void WidgetGtk::GetRequestedSize(gfx::Size* out) const { + int width, height; + if (GTK_IS_VIEWS_FIXED(widget_) && + gtk_views_fixed_get_widget_size(GetNativeView(), &width, &height)) { + out->SetSize(width, height); + } else { + GtkRequisition requisition; + gtk_widget_get_child_requisition(GetNativeView(), &requisition); + out->SetSize(requisition.width, requisition.height); + } +} + //////////////////////////////////////////////////////////////////////////////// // WidgetGtk, ActiveWindowWatcherX::Observer implementation: |