summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/extensions/extension_view.cc
diff options
context:
space:
mode:
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);
+}