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

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

Issue 9546001: Support detaching/attaching panels via inter-strip drags. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch to land Created 8 years, 9 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
« no previous file with comments | « chrome/browser/ui/panels/overflow_panel_strip.h ('k') | chrome/browser/ui/panels/panel.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/overflow_panel_strip.h" 5 #include "chrome/browser/ui/panels/overflow_panel_strip.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/ui/panels/panel_manager.h" 8 #include "chrome/browser/ui/panels/panel_manager.h"
9 #include "chrome/browser/ui/panels/panel_mouse_watcher.h" 9 #include "chrome/browser/ui/panels/panel_mouse_watcher.h"
10 #include "chrome/browser/ui/panels/panel_overflow_indicator.h" 10 #include "chrome/browser/ui/panels/panel_overflow_indicator.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 kHeightRatioForMaxVisibleOverflowPanelsOnHover * 71 kHeightRatioForMaxVisibleOverflowPanelsOnHover *
72 display_area_.height() / 72 display_area_.height() /
73 panels_.front()->IconOnlySize().height(); 73 panels_.front()->IconOnlySize().height();
74 } 74 }
75 75
76 void OverflowPanelStrip::UpdateCurrentWidth() { 76 void OverflowPanelStrip::UpdateCurrentWidth() {
77 current_display_width_ = are_overflow_titles_shown_ ? kOverflowAreaHoverWidth 77 current_display_width_ = are_overflow_titles_shown_ ? kOverflowAreaHoverWidth
78 : display_area_.width(); 78 : display_area_.width();
79 } 79 }
80 80
81 void OverflowPanelStrip::AddPanel(Panel* panel) { 81 void OverflowPanelStrip::AddPanel(Panel* panel,
82 PositioningMask positioning_mask) {
82 // TODO(jianli): consider using other container to improve the perf for 83 // TODO(jianli): consider using other container to improve the perf for
83 // inserting to the front. http://crbug.com/106222 84 // inserting to the front. http://crbug.com/106222
84 DCHECK_NE(this, panel->panel_strip()); 85 DCHECK_NE(this, panel->panel_strip());
85 panel->SetPanelStrip(this); 86 panel->SetPanelStrip(this);
86 87
87 // Newly created panels that were temporarily in the panel strip 88 // Newly created panels that were temporarily in the panel strip
88 // are added to the back of the overflow, whereas panels that are 89 // are added to the back of the overflow, whereas panels that are
89 // bumped from the panel strip by other panels go to the front 90 // bumped from the panel strip by other panels go to the front
90 // of overflow. 91 // of overflow.
91 if (panel->has_temporary_layout()) { 92 if (panel->has_temporary_layout()) {
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 } 159 }
159 160
160 void OverflowPanelStrip::OnPanelAttentionStateChanged(Panel* panel) { 161 void OverflowPanelStrip::OnPanelAttentionStateChanged(Panel* panel) {
161 DCHECK_EQ(this, panel->panel_strip()); 162 DCHECK_EQ(this, panel->panel_strip());
162 UpdateOverflowIndicatorAttention(); 163 UpdateOverflowIndicatorAttention();
163 } 164 }
164 165
165 void OverflowPanelStrip::ActivatePanel(Panel* panel) { 166 void OverflowPanelStrip::ActivatePanel(Panel* panel) {
166 DCHECK_EQ(this, panel->panel_strip()); 167 DCHECK_EQ(this, panel->panel_strip());
167 // Activating an overflow panel moves it to the docked panel strip. 168 // Activating an overflow panel moves it to the docked panel strip.
168 panel_manager_->MovePanelToStrip(panel, PanelStrip::DOCKED); 169 panel_manager_->MovePanelToStrip(panel,
170 PanelStrip::DOCKED,
171 PanelStrip::DEFAULT_POSITION);
169 panel->panel_strip()->ActivatePanel(panel); 172 panel->panel_strip()->ActivatePanel(panel);
170 } 173 }
171 174
172 void OverflowPanelStrip::MinimizePanel(Panel* panel) { 175 void OverflowPanelStrip::MinimizePanel(Panel* panel) {
173 DCHECK_EQ(this, panel->panel_strip()); 176 DCHECK_EQ(this, panel->panel_strip());
174 // Overflow is already a minimized mode for a panel. Nothing more to do. 177 // Overflow is already a minimized mode for a panel. Nothing more to do.
175 } 178 }
176 179
177 void OverflowPanelStrip::RestorePanel(Panel* panel) { 180 void OverflowPanelStrip::RestorePanel(Panel* panel) {
178 DCHECK_EQ(this, panel->panel_strip()); 181 DCHECK_EQ(this, panel->panel_strip());
179 panel_manager_->MovePanelToStrip(panel, PanelStrip::DOCKED); 182 panel_manager_->MovePanelToStrip(panel,
183 PanelStrip::DOCKED,
184 PanelStrip::DEFAULT_POSITION);
180 panel->panel_strip()->RestorePanel(panel); 185 panel->panel_strip()->RestorePanel(panel);
181 } 186 }
182 187
183 bool OverflowPanelStrip::IsPanelMinimized(const Panel* panel) const { 188 bool OverflowPanelStrip::IsPanelMinimized(const Panel* panel) const {
184 // All overflow panels are considered minimized. 189 // All overflow panels are considered minimized.
185 return true; 190 return true;
186 } 191 }
187 192
188 bool OverflowPanelStrip::CanShowPanelAsActive(const Panel* panel) const { 193 bool OverflowPanelStrip::CanShowPanelAsActive(const Panel* panel) const {
189 // All overflow panels cannot be shown as active. 194 // All overflow panels cannot be shown as active.
190 return false; 195 return false;
191 } 196 }
192 197
198 void OverflowPanelStrip::SavePanelPlacement(Panel* panel) {
199 NOTREACHED();
200 }
201
202 void OverflowPanelStrip::RestorePanelToSavedPlacement() {
203 NOTREACHED();
204 }
205
206 void OverflowPanelStrip::DiscardSavedPanelPlacement() {
207 NOTREACHED();
208 }
209
193 bool OverflowPanelStrip::CanDragPanel(const Panel* panel) const { 210 bool OverflowPanelStrip::CanDragPanel(const Panel* panel) const {
194 // All overflow panels are not draggable. 211 // All overflow panels are not draggable.
195 return false; 212 return false;
196 } 213 }
197 214
198 void OverflowPanelStrip::StartDraggingPanel(Panel* panel) { 215 void OverflowPanelStrip::StartDraggingPanelWithinStrip(Panel* panel) {
199 NOTREACHED(); 216 NOTREACHED();
200 } 217 }
201 218
202 void OverflowPanelStrip::DragPanel(Panel* panel, int delta_x, int delta_y) { 219 void OverflowPanelStrip::DragPanelWithinStrip(Panel* panel,
220 int delta_x,
221 int delta_y) {
203 NOTREACHED(); 222 NOTREACHED();
204 } 223 }
205 224
206 void OverflowPanelStrip::EndDraggingPanel(Panel* panel, bool cancelled) { 225 void OverflowPanelStrip::EndDraggingPanelWithinStrip(Panel* panel,
226 bool aborted) {
207 NOTREACHED(); 227 NOTREACHED();
208 } 228 }
209 229
210 void OverflowPanelStrip::RefreshLayout() { 230 void OverflowPanelStrip::RefreshLayout() {
211 if (panels_.empty()) 231 if (panels_.empty())
212 return; 232 return;
213 DoRefresh(0, panels_.size() - 1); 233 DoRefresh(0, panels_.size() - 1);
214 } 234 }
215 235
216 void OverflowPanelStrip::DoRefresh(size_t start_index, size_t end_index) { 236 void OverflowPanelStrip::DoRefresh(size_t start_index, size_t end_index) {
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 // expanded overflow panels when in full screen mode so no need 429 // expanded overflow panels when in full screen mode so no need
410 // to detect when mouse hovers over the overflow strip. 430 // to detect when mouse hovers over the overflow strip.
411 if (is_full_screen) 431 if (is_full_screen)
412 panel_manager_->mouse_watcher()->RemoveObserver(this); 432 panel_manager_->mouse_watcher()->RemoveObserver(this);
413 else 433 else
414 panel_manager_->mouse_watcher()->AddObserver(this); 434 panel_manager_->mouse_watcher()->AddObserver(this);
415 435
416 for (size_t i = 0; i < panels_.size(); ++i) 436 for (size_t i = 0; i < panels_.size(); ++i)
417 panels_[i]->FullScreenModeChanged(is_full_screen); 437 panels_[i]->FullScreenModeChanged(is_full_screen);
418 } 438 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/overflow_panel_strip.h ('k') | chrome/browser/ui/panels/panel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698