| OLD | NEW |
| 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/panel_manager.h" | 5 #include "chrome/browser/ui/panels/panel_manager.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/message_loop.h" | 11 #include "base/message_loop.h" |
| 12 #include "chrome/browser/ui/panels/detached_panel_collection.h" | 12 #include "chrome/browser/ui/panels/detached_panel_collection.h" |
| 13 #include "chrome/browser/ui/panels/docked_panel_collection.h" | 13 #include "chrome/browser/ui/panels/docked_panel_collection.h" |
| 14 #include "chrome/browser/ui/panels/panel_drag_controller.h" | 14 #include "chrome/browser/ui/panels/panel_drag_controller.h" |
| 15 #include "chrome/browser/ui/panels/panel_mouse_watcher.h" | 15 #include "chrome/browser/ui/panels/panel_mouse_watcher.h" |
| 16 #include "chrome/browser/ui/panels/panel_resize_controller.h" | 16 #include "chrome/browser/ui/panels/panel_resize_controller.h" |
| 17 #include "chrome/browser/ui/panels/stacked_panel_collection.h" |
| 17 #include "chrome/common/chrome_notification_types.h" | 18 #include "chrome/common/chrome_notification_types.h" |
| 18 #include "chrome/common/chrome_switches.h" | 19 #include "chrome/common/chrome_switches.h" |
| 19 #include "chrome/common/chrome_version_info.h" | 20 #include "chrome/common/chrome_version_info.h" |
| 20 #include "content/public/browser/notification_service.h" | 21 #include "content/public/browser/notification_service.h" |
| 21 #include "content/public/browser/notification_source.h" | 22 #include "content/public/browser/notification_source.h" |
| 22 | 23 |
| 23 #if defined(TOOLKIT_GTK) | 24 #if defined(TOOLKIT_GTK) |
| 24 #include "ui/base/x/x11_util.h" | 25 #include "ui/base/x/x11_util.h" |
| 25 #endif | 26 #endif |
| 26 | 27 |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 } | 133 } |
| 133 | 134 |
| 134 void PanelManager::OnDisplayAreaChanged(const gfx::Rect& display_area) { | 135 void PanelManager::OnDisplayAreaChanged(const gfx::Rect& display_area) { |
| 135 if (display_area == display_area_) | 136 if (display_area == display_area_) |
| 136 return; | 137 return; |
| 137 gfx::Rect old_display_area = display_area_; | 138 gfx::Rect old_display_area = display_area_; |
| 138 display_area_ = display_area; | 139 display_area_ = display_area; |
| 139 | 140 |
| 140 docked_collection_->OnDisplayAreaChanged(old_display_area); | 141 docked_collection_->OnDisplayAreaChanged(old_display_area); |
| 141 detached_collection_->OnDisplayAreaChanged(old_display_area); | 142 detached_collection_->OnDisplayAreaChanged(old_display_area); |
| 143 for (Stacks::const_iterator iter = stacks_.begin(); |
| 144 iter != stacks_.end(); iter++) |
| 145 (*iter)->OnDisplayAreaChanged(old_display_area); |
| 142 } | 146 } |
| 143 | 147 |
| 144 void PanelManager::OnFullScreenModeChanged(bool is_full_screen) { | 148 void PanelManager::OnFullScreenModeChanged(bool is_full_screen) { |
| 145 docked_collection_->OnFullScreenModeChanged(is_full_screen); | 149 docked_collection_->OnFullScreenModeChanged(is_full_screen); |
| 146 } | 150 } |
| 147 | 151 |
| 148 int PanelManager::GetMaxPanelWidth() const { | 152 int PanelManager::GetMaxPanelWidth() const { |
| 149 return static_cast<int>(display_area_.width() * kPanelMaxWidthFactor); | 153 return static_cast<int>(display_area_.width() * kPanelMaxWidthFactor); |
| 150 } | 154 } |
| 151 | 155 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 drag_controller_->OnPanelClosed(panel); | 239 drag_controller_->OnPanelClosed(panel); |
| 236 resize_controller_->OnPanelClosed(panel); | 240 resize_controller_->OnPanelClosed(panel); |
| 237 panel->collection()->RemovePanel(panel); | 241 panel->collection()->RemovePanel(panel); |
| 238 | 242 |
| 239 content::NotificationService::current()->Notify( | 243 content::NotificationService::current()->Notify( |
| 240 chrome::NOTIFICATION_PANEL_CLOSED, | 244 chrome::NOTIFICATION_PANEL_CLOSED, |
| 241 content::Source<Panel>(panel), | 245 content::Source<Panel>(panel), |
| 242 content::NotificationService::NoDetails()); | 246 content::NotificationService::NoDetails()); |
| 243 } | 247 } |
| 244 | 248 |
| 249 StackedPanelCollection* PanelManager::CreateStack() { |
| 250 StackedPanelCollection* stack = new StackedPanelCollection(this); |
| 251 stacks_.push_back(stack); |
| 252 return stack; |
| 253 } |
| 254 |
| 255 void PanelManager::RemoveStack(StackedPanelCollection* stack) { |
| 256 DCHECK_EQ(0, stack->num_panels()); |
| 257 stacks_.remove(stack); |
| 258 stack->CloseAll(); |
| 259 } |
| 260 |
| 245 void PanelManager::StartDragging(Panel* panel, | 261 void PanelManager::StartDragging(Panel* panel, |
| 246 const gfx::Point& mouse_location) { | 262 const gfx::Point& mouse_location) { |
| 247 drag_controller_->StartDragging(panel, mouse_location); | 263 drag_controller_->StartDragging(panel, mouse_location); |
| 248 } | 264 } |
| 249 | 265 |
| 250 void PanelManager::Drag(const gfx::Point& mouse_location) { | 266 void PanelManager::Drag(const gfx::Point& mouse_location) { |
| 251 drag_controller_->Drag(mouse_location); | 267 drag_controller_->Drag(mouse_location); |
| 252 } | 268 } |
| 253 | 269 |
| 254 void PanelManager::EndDragging(bool cancelled) { | 270 void PanelManager::EndDragging(bool cancelled) { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 } | 324 } |
| 309 | 325 |
| 310 void PanelManager::CloseAll() { | 326 void PanelManager::CloseAll() { |
| 311 DCHECK(!drag_controller_->is_dragging()); | 327 DCHECK(!drag_controller_->is_dragging()); |
| 312 | 328 |
| 313 detached_collection_->CloseAll(); | 329 detached_collection_->CloseAll(); |
| 314 docked_collection_->CloseAll(); | 330 docked_collection_->CloseAll(); |
| 315 } | 331 } |
| 316 | 332 |
| 317 int PanelManager::num_panels() const { | 333 int PanelManager::num_panels() const { |
| 318 return detached_collection_->num_panels() + docked_collection_->num_panels(); | 334 int count = detached_collection_->num_panels() + |
| 335 docked_collection_->num_panels(); |
| 336 for (Stacks::const_iterator iter = stacks_.begin(); |
| 337 iter != stacks_.end(); iter++) |
| 338 count += (*iter)->num_panels(); |
| 339 return count; |
| 319 } | 340 } |
| 320 | 341 |
| 321 std::vector<Panel*> PanelManager::panels() const { | 342 std::vector<Panel*> PanelManager::panels() const { |
| 322 std::vector<Panel*> panels; | 343 std::vector<Panel*> panels; |
| 323 for (DetachedPanelCollection::Panels::const_iterator iter = | 344 for (DetachedPanelCollection::Panels::const_iterator iter = |
| 324 detached_collection_->panels().begin(); | 345 detached_collection_->panels().begin(); |
| 325 iter != detached_collection_->panels().end(); ++iter) | 346 iter != detached_collection_->panels().end(); ++iter) |
| 326 panels.push_back(*iter); | 347 panels.push_back(*iter); |
| 327 for (DockedPanelCollection::Panels::const_iterator iter = | 348 for (DockedPanelCollection::Panels::const_iterator iter = |
| 328 docked_collection_->panels().begin(); | 349 docked_collection_->panels().begin(); |
| 329 iter != docked_collection_->panels().end(); ++iter) | 350 iter != docked_collection_->panels().end(); ++iter) |
| 330 panels.push_back(*iter); | 351 panels.push_back(*iter); |
| 352 for (Stacks::const_iterator stack_iter = stacks_.begin(); |
| 353 stack_iter != stacks_.end(); stack_iter++) { |
| 354 for (StackedPanelCollection::Panels::const_iterator iter = |
| 355 (*stack_iter)->panels().begin(); |
| 356 iter != (*stack_iter)->panels().end(); ++stack_iter) { |
| 357 panels.push_back(*iter); |
| 358 } |
| 359 } |
| 331 return panels; | 360 return panels; |
| 332 } | 361 } |
| 333 | 362 |
| 363 std::vector<Panel*> PanelManager::GetDetachedAndStackedPanels() const { |
| 364 std::vector<Panel*> panels; |
| 365 for (DetachedPanelCollection::Panels::const_iterator iter = |
| 366 detached_collection_->panels().begin(); |
| 367 iter != detached_collection_->panels().end(); ++iter) |
| 368 panels.push_back(*iter); |
| 369 for (Stacks::const_iterator stack_iter = stacks_.begin(); |
| 370 stack_iter != stacks_.end(); stack_iter++) { |
| 371 for (StackedPanelCollection::Panels::const_iterator iter = |
| 372 (*stack_iter)->panels().begin(); |
| 373 iter != (*stack_iter)->panels().end(); ++iter) { |
| 374 panels.push_back(*iter); |
| 375 } |
| 376 } |
| 377 return panels; |
| 378 } |
| 379 |
| 334 void PanelManager::SetMouseWatcher(PanelMouseWatcher* watcher) { | 380 void PanelManager::SetMouseWatcher(PanelMouseWatcher* watcher) { |
| 335 panel_mouse_watcher_.reset(watcher); | 381 panel_mouse_watcher_.reset(watcher); |
| 336 } | 382 } |
| 337 | 383 |
| 338 void PanelManager::OnPanelAnimationEnded(Panel* panel) { | 384 void PanelManager::OnPanelAnimationEnded(Panel* panel) { |
| 339 content::NotificationService::current()->Notify( | 385 content::NotificationService::current()->Notify( |
| 340 chrome::NOTIFICATION_PANEL_BOUNDS_ANIMATIONS_FINISHED, | 386 chrome::NOTIFICATION_PANEL_BOUNDS_ANIMATIONS_FINISHED, |
| 341 content::Source<Panel>(panel), | 387 content::Source<Panel>(panel), |
| 342 content::NotificationService::NoDetails()); | 388 content::NotificationService::NoDetails()); |
| 343 } | 389 } |
| OLD | NEW |