diff options
author | erikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-16 14:57:25 +0000 |
---|---|---|
committer | erikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-16 14:57:25 +0000 |
commit | ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953 (patch) | |
tree | e3910fea8522ea0a6e34d30b40a0a659c4a9d93f /chrome/browser/views/extensions/extension_view.cc | |
parent | 357ff69d8564f44ffb7eb8ff3214d9cf7885dd63 (diff) | |
download | chromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.zip chromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.tar.gz chromium_src-ab32b16c9acd73a2f2d2a92f1e8e5083b51b3953.tar.bz2 |
Popup width and height are now dynamic.
BUG=24471
TEST=none
Review URL: http://codereview.chromium.org/273046
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29274 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/extensions/extension_view.cc')
-rw-r--r-- | chrome/browser/views/extensions/extension_view.cc | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/chrome/browser/views/extensions/extension_view.cc b/chrome/browser/views/extensions/extension_view.cc index f59d1a4..1d0cfc5 100644 --- a/chrome/browser/views/extensions/extension_view.cc +++ b/chrome/browser/views/extensions/extension_view.cc @@ -13,8 +13,10 @@ #include "views/widget/widget.h" ExtensionView::ExtensionView(ExtensionHost* host, Browser* browser) - : host_(host), browser_(browser), - initialized_(false), pending_preferred_width_(0), container_(NULL), + : host_(host), + browser_(browser), + initialized_(false), + container_(NULL), is_clipped_(false) { host_->set_view(this); } @@ -110,7 +112,8 @@ void ExtensionView::ShowIfCompletelyLoaded() { return; } SetVisible(true); - UpdatePreferredWidth(pending_preferred_width_); + + UpdatePreferredSize(pending_preferred_size_); } } @@ -131,17 +134,17 @@ void ExtensionView::SetBackground(const SkBitmap& background) { ShowIfCompletelyLoaded(); } -void ExtensionView::UpdatePreferredWidth(int pref_width) { +void ExtensionView::UpdatePreferredSize(const gfx::Size& new_size) { // Don't actually do anything with this information until we have been shown. // Size changes will not be honored by lower layers while we are hidden. - gfx::Size preferred_size = GetPreferredSize(); if (!IsVisible()) { - pending_preferred_width_ = pref_width; - } else if (pref_width > 0 && pref_width != preferred_size.width()) { - if (preferred_size.height() == 0) - preferred_size.set_height(height()); - SetPreferredSize(gfx::Size(pref_width, preferred_size.height())); + pending_preferred_size_ = new_size; + return; } + + gfx::Size preferred_size = GetPreferredSize(); + if (new_size != preferred_size) + SetPreferredSize(new_size); } void ExtensionView::ViewHierarchyChanged(bool is_add, @@ -168,3 +171,9 @@ void ExtensionView::RenderViewCreated() { pending_background_.reset(); } } + +void ExtensionView::SetPreferredSize(const gfx::Size& size) { + views::NativeViewHost::SetPreferredSize(size); + if (container_) + container_->OnExtensionPreferredSizeChanged(this); +} |