Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: chrome/browser/ui/panels/docked_panel_strip.cc

Issue 10260028: Update Panel mininimize/restore button on strip and expansion state change. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: feedback changes Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/panels/docked_panel_strip.h" 5 #include "chrome/browser/ui/panels/docked_panel_strip.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 92
93 RefreshLayout(); 93 RefreshLayout();
94 } 94 }
95 95
96 void DockedPanelStrip::AddPanel(Panel* panel, 96 void DockedPanelStrip::AddPanel(Panel* panel,
97 PositioningMask positioning_mask) { 97 PositioningMask positioning_mask) {
98 // This method does not handle minimized panels. 98 // This method does not handle minimized panels.
99 DCHECK_EQ(Panel::EXPANDED, panel->expansion_state()); 99 DCHECK_EQ(Panel::EXPANDED, panel->expansion_state());
100 100
101 DCHECK_NE(this, panel->panel_strip()); 101 DCHECK_NE(this, panel->panel_strip());
102 panel->SetPanelStrip(this); 102 panel->set_panel_strip(this);
103 103
104 bool known_position = (positioning_mask & KNOWN_POSITION) != 0; 104 bool known_position = (positioning_mask & KNOWN_POSITION) != 0;
105 bool update_bounds = (positioning_mask & DO_NOT_UPDATE_BOUNDS) == 0; 105 bool update_bounds = (positioning_mask & DO_NOT_UPDATE_BOUNDS) == 0;
106 106
107 if (!panel->initialized()) { 107 if (!panel->initialized()) {
108 DCHECK(!known_position && update_bounds); 108 DCHECK(!known_position && update_bounds);
109 InsertNewlyCreatedPanel(panel); 109 InsertNewlyCreatedPanel(panel);
110 } else if (known_position) { 110 } else if (known_position) {
111 DCHECK(update_bounds); 111 DCHECK(update_bounds);
112 InsertExistingPanelAtKnownPosition(panel); 112 InsertExistingPanelAtKnownPosition(panel);
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 return display_area_.right(); 210 return display_area_.right();
211 } 211 }
212 212
213 int DockedPanelStrip::GetRightMostAvailablePosition() const { 213 int DockedPanelStrip::GetRightMostAvailablePosition() const {
214 return panels_.empty() ? StartingRightPosition() : 214 return panels_.empty() ? StartingRightPosition() :
215 (panels_.back()->GetBounds().x() - kPanelsHorizontalSpacing); 215 (panels_.back()->GetBounds().x() - kPanelsHorizontalSpacing);
216 } 216 }
217 217
218 void DockedPanelStrip::RemovePanel(Panel* panel) { 218 void DockedPanelStrip::RemovePanel(Panel* panel) {
219 DCHECK_EQ(this, panel->panel_strip()); 219 DCHECK_EQ(this, panel->panel_strip());
220 panel->SetPanelStrip(NULL); 220 panel->set_panel_strip(NULL);
221 221
222 // Removing an element from the list will invalidate the iterator that refers 222 // Removing an element from the list will invalidate the iterator that refers
223 // to it. We need to update the iterator in that case. 223 // to it. We need to update the iterator in that case.
224 DCHECK(dragging_panel_current_iterator_ == panels_.end() || 224 DCHECK(dragging_panel_current_iterator_ == panels_.end() ||
225 *dragging_panel_current_iterator_ != panel); 225 *dragging_panel_current_iterator_ != panel);
226 226
227 // Optimize for the common case of removing the last panel. 227 // Optimize for the common case of removing the last panel.
228 DCHECK(!panels_.empty()); 228 DCHECK(!panels_.empty());
229 if (panels_.back() == panel) { 229 if (panels_.back() == panel) {
230 panels_.pop_back(); 230 panels_.pop_back();
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 // Update limits if the panel is still autosizable, in case the limit has 876 // Update limits if the panel is still autosizable, in case the limit has
877 // changed. If the panel is not autoresizable, then it was resized 877 // changed. If the panel is not autoresizable, then it was resized
878 // by the user or by the app via API. 878 // by the user or by the app via API.
879 if (panel->auto_resizable()) { 879 if (panel->auto_resizable()) {
880 int max_panel_width = GetMaxPanelWidth(); 880 int max_panel_width = GetMaxPanelWidth();
881 int max_panel_height = GetMaxPanelHeight(); 881 int max_panel_height = GetMaxPanelHeight();
882 panel->SetSizeRange(gfx::Size(kPanelMinWidth, kPanelMinHeight), 882 panel->SetSizeRange(gfx::Size(kPanelMinWidth, kPanelMinHeight),
883 gfx::Size(max_panel_width, max_panel_height)); 883 gfx::Size(max_panel_width, max_panel_height));
884 } 884 }
885 panel->set_attention_mode(Panel::USE_PANEL_ATTENTION); 885 panel->set_attention_mode(Panel::USE_PANEL_ATTENTION);
886 panel->SetAppIconVisibility(true);
887 panel->SetAlwaysOnTop(true); 886 panel->SetAlwaysOnTop(true);
888 panel->EnableResizeByMouse(true); 887 panel->EnableResizeByMouse(true);
888 panel->UpdateMinimizeRestoreButtonVisibility();
889 } 889 }
890 890
891 void DockedPanelStrip::OnPanelActiveStateChanged(Panel* panel) { 891 void DockedPanelStrip::OnPanelActiveStateChanged(Panel* panel) {
892 // Refresh layout, but wait till active states settle. 892 // Refresh layout, but wait till active states settle.
893 // This lets us avoid refreshing too many times when one panel loses 893 // This lets us avoid refreshing too many times when one panel loses
894 // focus and another gains it. 894 // focus and another gains it.
895 refresh_action_factory_.InvalidateWeakPtrs(); 895 refresh_action_factory_.InvalidateWeakPtrs();
896 MessageLoop::current()->PostDelayedTask( 896 MessageLoop::current()->PostDelayedTask(
897 FROM_HERE, 897 FROM_HERE,
898 base::Bind(&DockedPanelStrip::RefreshLayout, 898 base::Bind(&DockedPanelStrip::RefreshLayout,
899 refresh_action_factory_.GetWeakPtr()), 899 refresh_action_factory_.GetWeakPtr()),
900 base::TimeDelta::FromMilliseconds(PanelManager::AdjustTimeInterval( 900 base::TimeDelta::FromMilliseconds(PanelManager::AdjustTimeInterval(
901 kRefreshLayoutAfterActivePanelChangeDelayMs))); 901 kRefreshLayoutAfterActivePanelChangeDelayMs)));
902 } 902 }
903 903
904 bool DockedPanelStrip::HasPanel(Panel* panel) const { 904 bool DockedPanelStrip::HasPanel(Panel* panel) const {
905 return find(panels_.begin(), panels_.end(), panel) != panels_.end(); 905 return find(panels_.begin(), panels_.end(), panel) != panels_.end();
906 } 906 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/detached_panel_strip.cc ('k') | chrome/browser/ui/panels/native_panel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698