| Index: chrome/browser/ui/panels/panel.cc
|
| diff --git a/chrome/browser/ui/panels/panel.cc b/chrome/browser/ui/panels/panel.cc
|
| index ed3cca0caf6c3ced9b9b3d28217a608c968b1d5b..69192b40bb83c155a5d6e9616d5f6ce5afd4c094 100644
|
| --- a/chrome/browser/ui/panels/panel.cc
|
| +++ b/chrome/browser/ui/panels/panel.cc
|
| @@ -48,8 +48,8 @@ Panel::Panel(Browser* browser, const gfx::Size& requested_size)
|
| restored_size_(requested_size),
|
| auto_resizable_(false),
|
| draggable_(true),
|
| + strip_owner_(DOCKED),
|
| expansion_state_(EXPANDED),
|
| - old_expansion_state_(EXPANDED),
|
| app_icon_visible_(true) {
|
| }
|
|
|
| @@ -79,7 +79,7 @@ const Extension* Panel::GetExtension() const {
|
| }
|
|
|
| void Panel::SetPanelBounds(const gfx::Rect& bounds) {
|
| - if (expansion_state_ == Panel::EXPANDED)
|
| + if (strip_owner_ == DOCKED && expansion_state_ == EXPANDED)
|
| restored_size_ = bounds.size();
|
|
|
| native_panel_->SetPanelBounds(bounds);
|
| @@ -91,7 +91,7 @@ void Panel::SetPanelBounds(const gfx::Rect& bounds) {
|
| }
|
|
|
| void Panel::SetPanelBoundsInstantly(const gfx::Rect& bounds) {
|
| - if (expansion_state_ == Panel::EXPANDED)
|
| + if (strip_owner_ == DOCKED && expansion_state_ == EXPANDED)
|
| restored_size_ = bounds.size();
|
|
|
| native_panel_->SetPanelBoundsInstantly(bounds);
|
| @@ -137,16 +137,30 @@ void Panel::SetAppIconVisibility(bool visible) {
|
| native_panel_->SetPanelAppIconVisibility(visible);
|
| }
|
|
|
| +void Panel::SetStripOwner(StripOwner new_owner) {
|
| + if (strip_owner_ == new_owner)
|
| + return;
|
| + StripOwner old_owner = strip_owner_;
|
| + strip_owner_ = new_owner;
|
| +
|
| + manager()->OnPanelStripOwnerChanged(this, old_owner);
|
| +
|
| + content::NotificationService::current()->Notify(
|
| + chrome::NOTIFICATION_PANEL_CHANGED_STRIP_OWNER,
|
| + content::Source<Panel>(this),
|
| + content::NotificationService::NoDetails());
|
| +}
|
| +
|
| void Panel::SetExpansionState(ExpansionState new_state) {
|
| if (expansion_state_ == new_state)
|
| return;
|
| - old_expansion_state_ = expansion_state_;
|
| + ExpansionState old_state = expansion_state_;
|
| expansion_state_ = new_state;
|
|
|
| - manager()->OnPanelExpansionStateChanged(this);
|
| + manager()->OnPanelExpansionStateChanged(this, old_state);
|
|
|
| // The minimized panel should not get the focus.
|
| - if (expansion_state_ == MINIMIZED)
|
| + if (expansion_state_ == MINIMIZED && strip_owner_ == DOCKED)
|
| Deactivate();
|
|
|
| content::NotificationService::current()->Notify(
|
| @@ -165,7 +179,7 @@ void Panel::FullScreenModeChanged(bool is_full_screen) {
|
|
|
| void Panel::Show() {
|
| // Don't show panel as active if it is in overflow state.
|
| - if (expansion_state_ == IN_OVERFLOW)
|
| + if (strip_owner_ == IN_OVERFLOW)
|
| ShowInactive();
|
| else
|
| native_panel_->ShowPanel();
|
| @@ -190,6 +204,7 @@ void Panel::Activate() {
|
| // Make sure the panel is expanded when activated programmatically,
|
| // so the user input does not go into collapsed window.
|
| SetExpansionState(Panel::EXPANDED);
|
| + SetStripOwner(Panel::DOCKED);
|
| native_panel_->ActivatePanel();
|
| }
|
|
|
|
|