Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/panel_manager.h" | 5 #include "chrome/browser/ui/panels/panel_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 32 // Horizontal spacing between two panels. | 32 // Horizontal spacing between two panels. |
| 33 const int kPanelsHorizontalSpacing = 4; | 33 const int kPanelsHorizontalSpacing = 4; |
| 34 | 34 |
| 35 // Single instance of PanelManager. | 35 // Single instance of PanelManager. |
| 36 scoped_ptr<PanelManager> panel_instance; | 36 scoped_ptr<PanelManager> panel_instance; |
| 37 } // namespace | 37 } // namespace |
| 38 | 38 |
| 39 // static | 39 // static |
| 40 PanelManager* PanelManager::GetInstance() { | 40 PanelManager* PanelManager::GetInstance() { |
| 41 if (!panel_instance.get()) { | 41 if (!panel_instance.get()) { |
| 42 panel_instance.reset(new PanelManager()); | 42 panel_instance.reset(PanelManager::Create()); |
| 43 } | 43 } |
| 44 return panel_instance.get(); | 44 return panel_instance.get(); |
| 45 } | 45 } |
| 46 | 46 |
| 47 // static | |
| 48 #if !defined(OS_WIN) | |
| 49 PanelManager* PanelManager::Create() { | |
|
jennb
2011/06/27 23:18:02
Why only when not Windows?
jianli
2011/06/29 01:28:12
Not needed. Reverted.
| |
| 50 return new PanelManager(); | |
| 51 } | |
| 52 #endif | |
| 53 | |
| 47 PanelManager::PanelManager() | 54 PanelManager::PanelManager() |
| 48 : max_width_(0), | 55 : max_width_(0), |
| 49 max_height_(0), | 56 max_height_(0), |
| 50 min_x_(0), | 57 min_x_(0), |
| 51 current_x_(0), | 58 current_x_(0), |
| 52 bottom_edge_y_(0), | 59 bottom_edge_y_(0), |
| 53 dragging_panel_index_(kInvalidPanelIndex), | 60 dragging_panel_index_(kInvalidPanelIndex), |
| 54 dragging_panel_original_x_(0) { | 61 dragging_panel_original_x_(0) { |
| 55 OnDisplayChanged(); | 62 OnDisplayChanged(); |
| 56 } | 63 } |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 311 | 318 |
| 312 if (x < min_x_) | 319 if (x < min_x_) |
| 313 return false; | 320 return false; |
| 314 | 321 |
| 315 current_x_ -= width + kPanelsHorizontalSpacing; | 322 current_x_ -= width + kPanelsHorizontalSpacing; |
| 316 | 323 |
| 317 bounds->SetRect(x, y, width, height); | 324 bounds->SetRect(x, y, width, height); |
| 318 return true; | 325 return true; |
| 319 } | 326 } |
| 320 | 327 |
| 328 void PanelManager::Minimize(Panel* panel) { | |
| 329 panel->Minimize(); | |
| 330 } | |
| 331 | |
| 332 void PanelManager::Restore(Panel* panel, bool titlebar_only) { | |
| 333 panel->Restore(titlebar_only); | |
| 334 } | |
| 335 | |
| 321 void PanelManager::MinimizeAll() { | 336 void PanelManager::MinimizeAll() { |
| 322 for (ActivePanels::const_iterator iter = active_panels_.begin(); | 337 for (ActivePanels::const_iterator iter = active_panels_.begin(); |
| 323 iter != active_panels_.end(); ++iter) { | 338 iter != active_panels_.end(); ++iter) { |
| 324 (*iter)->Minimize(); | 339 Minimize(*iter); |
| 325 } | 340 } |
| 326 } | 341 } |
| 327 | 342 |
| 328 void PanelManager::RestoreAll() { | 343 void PanelManager::RestoreAll() { |
| 329 for (ActivePanels::const_iterator iter = active_panels_.begin(); | 344 for (ActivePanels::const_iterator iter = active_panels_.begin(); |
| 330 iter != active_panels_.end(); ++iter) { | 345 iter != active_panels_.end(); ++iter) { |
| 331 (*iter)->Restore(); | 346 Restore(*iter, false); |
| 332 } | 347 } |
| 333 } | 348 } |
| 334 | 349 |
| 335 void PanelManager::RemoveAllActive() { | 350 void PanelManager::RemoveAllActive() { |
| 336 // This should not be called when we're in the process of dragging. | 351 // This should not be called when we're in the process of dragging. |
| 337 DCHECK(dragging_panel_index_ == kInvalidPanelIndex); | 352 DCHECK(dragging_panel_index_ == kInvalidPanelIndex); |
| 338 | 353 |
| 339 // Start from the bottom to avoid reshuffling. | 354 // Start from the bottom to avoid reshuffling. |
| 340 for (int i = static_cast<int>(active_panels_.size()) -1; i >= 0; --i) | 355 for (int i = static_cast<int>(active_panels_.size()) -1; i >= 0; --i) |
| 341 active_panels_[i]->Close(); | 356 active_panels_[i]->Close(); |
| 342 | 357 |
| 343 ProcessPending(); | 358 ProcessPending(); |
| 344 } | 359 } |
| OLD | NEW |