summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/extensions/extension_view.cc
diff options
context:
space:
mode:
authorerikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-16 14:57:25 +0000
committererikkay@chromium.org <erikkay@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-16 14:57:25 +0000
commitab32b16c9acd73a2f2d2a92f1e8e5083b51b3953 (patch)
treee3910fea8522ea0a6e34d30b40a0a659c4a9d93f /chrome/browser/views/extensions/extension_view.cc
parent357ff69d8564f44ffb7eb8ff3214d9cf7885dd63 (diff)
downloadchromium_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.cc29
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);
+}