Chromium Code Reviews| Index: chrome/browser/ui/panels/docked_panel_strip.cc |
| diff --git a/chrome/browser/ui/panels/docked_panel_strip.cc b/chrome/browser/ui/panels/docked_panel_strip.cc |
| index 67a31d8e8c4218ccafd2b89553701777fbcc5bac..224d4133a5694af80025bfe9b9d9808e2cb0dea9 100644 |
| --- a/chrome/browser/ui/panels/docked_panel_strip.cc |
| +++ b/chrome/browser/ui/panels/docked_panel_strip.cc |
| @@ -180,6 +180,7 @@ void DockedPanelStrip::InsertExistingPanelAtKnownPosition(Panel* panel) { |
| if (x > (*iter)->GetBounds().x()) |
| break; |
| panels_.insert(iter, panel); |
| + UpdateMinimizedPanelCount(); |
| // This will automatically update all affected panels due to the insertion. |
| if (iter != panels_.end()) |
| @@ -195,7 +196,6 @@ void DockedPanelStrip::InsertExistingPanelAtDefaultPosition( |
| int width = restored_size.width(); |
| int x = FitPanelWithWidth(width); |
| - |
| if (update_bounds) { |
| Panel::ExpansionState expansion_state_to_restore; |
| if (panel->expansion_state() == Panel::EXPANDED) { |
| @@ -208,7 +208,6 @@ void DockedPanelStrip::InsertExistingPanelAtDefaultPosition( |
| expansion_state_to_restore = Panel::MINIMIZED; |
| height = Panel::kMinimizedPanelHeight; |
| } |
| - IncrementMinimizedPanels(); |
| } |
| int y = |
| GetBottomPositionForExpansionState(expansion_state_to_restore) - height; |
| @@ -221,6 +220,8 @@ void DockedPanelStrip::InsertExistingPanelAtDefaultPosition( |
| } |
| panels_.push_back(panel); |
| + |
|
jennb
2012/03/14 20:11:40
nit: delete blank line
|
| + UpdateMinimizedPanelCount(); |
| } |
| int DockedPanelStrip::GetMaxPanelWidth() const { |
| @@ -244,9 +245,6 @@ void DockedPanelStrip::RemovePanel(Panel* panel) { |
| DCHECK_EQ(this, panel->panel_strip()); |
| panel->SetPanelStrip(NULL); |
| - if (panel->expansion_state() != Panel::EXPANDED) |
| - DecrementMinimizedPanels(); |
| - |
| if (panel->has_temporary_layout()) { |
| panels_in_temporary_layout_.erase(panel); |
| return; |
| @@ -287,6 +285,9 @@ void DockedPanelStrip::RemovePanel(Panel* panel) { |
| RefreshLayout(); |
| } |
| + |
| + if (panel->expansion_state() != Panel::EXPANDED) |
| + UpdateMinimizedPanelCount(); |
| } |
| bool DockedPanelStrip::CanShowPanelAsActive(const Panel* panel) const { |
| @@ -447,26 +448,23 @@ void DockedPanelStrip::EndDraggingPanelWithinStrip(Panel* panel, bool aborted) { |
| void DockedPanelStrip::OnPanelExpansionStateChanged(Panel* panel) { |
| gfx::Size size = panel->restored_size(); |
| Panel::ExpansionState expansion_state = panel->expansion_state(); |
| - Panel::ExpansionState old_state = panel->old_expansion_state(); |
| switch (expansion_state) { |
| case Panel::EXPANDED: |
| - if (old_state == Panel::TITLE_ONLY || old_state == Panel::MINIMIZED) |
| - DecrementMinimizedPanels(); |
| + |
| break; |
| case Panel::TITLE_ONLY: |
| size.set_height(panel->TitleOnlyHeight()); |
| - if (old_state == Panel::EXPANDED) |
| - IncrementMinimizedPanels(); |
| + |
| break; |
| case Panel::MINIMIZED: |
| size.set_height(Panel::kMinimizedPanelHeight); |
| - if (old_state == Panel::EXPANDED) |
| - IncrementMinimizedPanels(); |
| + |
| break; |
| default: |
| NOTREACHED(); |
| break; |
| } |
| + UpdateMinimizedPanelCount(); |
| int bottom = GetBottomPositionForExpansionState(expansion_state); |
| gfx::Rect bounds = panel->GetBounds(); |
| @@ -517,18 +515,21 @@ bool DockedPanelStrip::IsPanelMinimized(const Panel* panel) const { |
| return panel->expansion_state() != Panel::EXPANDED; |
| } |
| -void DockedPanelStrip::IncrementMinimizedPanels() { |
| - minimized_panel_count_++; |
| - if (minimized_panel_count_ == 1) |
| - panel_manager_->mouse_watcher()->AddObserver(this); |
| - DCHECK_LE(minimized_panel_count_, num_panels()); |
| -} |
| +void DockedPanelStrip::UpdateMinimizedPanelCount() { |
| + int prev_minimized_panel_count = minimized_panel_count_; |
| + minimized_panel_count_ = 0; |
| + for (Panels::const_iterator panel_iter = panels_.begin(); |
| + panel_iter != panels_.end(); ++panel_iter) { |
| + if ((*panel_iter)->expansion_state() != Panel::EXPANDED) |
| + minimized_panel_count_++; |
| + } |
| -void DockedPanelStrip::DecrementMinimizedPanels() { |
| - minimized_panel_count_--; |
| - DCHECK_GE(minimized_panel_count_, 0); |
| - if (minimized_panel_count_ == 0) |
| + if (prev_minimized_panel_count == 0 && minimized_panel_count_ > 0) |
| + panel_manager_->mouse_watcher()->AddObserver(this); |
| + if (prev_minimized_panel_count > 0 && minimized_panel_count_ == 0) |
|
jennb
2012/03/14 20:11:40
else if?
|
| panel_manager_->mouse_watcher()->RemoveObserver(this); |
| + |
| + DCHECK_LE(minimized_panel_count_, num_panels()); |
| } |
| void DockedPanelStrip::ResizePanelWindow( |