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/detached_panel_strip.h" | 5 #include "chrome/browser/ui/panels/detached_panel_strip.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "chrome/browser/ui/panels/panel_drag_controller.h" | 9 #include "chrome/browser/ui/panels/panel_drag_controller.h" |
10 #include "chrome/browser/ui/panels/panel_manager.h" | 10 #include "chrome/browser/ui/panels/panel_manager.h" |
(...skipping 19 matching lines...) Expand all Loading... | |
30 } | 30 } |
31 | 31 |
32 void DetachedPanelStrip::RefreshLayout() { | 32 void DetachedPanelStrip::RefreshLayout() { |
33 NOTIMPLEMENTED(); | 33 NOTIMPLEMENTED(); |
34 } | 34 } |
35 | 35 |
36 void DetachedPanelStrip::AddPanel(Panel* panel) { | 36 void DetachedPanelStrip::AddPanel(Panel* panel) { |
37 DCHECK_NE(this, panel->panel_strip()); | 37 DCHECK_NE(this, panel->panel_strip()); |
38 panel->set_panel_strip(this); | 38 panel->set_panel_strip(this); |
39 panels_.insert(panel); | 39 panels_.insert(panel); |
40 | |
41 panel->SetAlwaysOnTop(false); | |
40 } | 42 } |
41 | 43 |
42 void DetachedPanelStrip::RemovePanel(Panel* panel) { | 44 void DetachedPanelStrip::RemovePanel(Panel* panel) { |
43 DCHECK_EQ(this, panel->panel_strip()); | 45 DCHECK_EQ(this, panel->panel_strip()); |
44 panel->set_panel_strip(NULL); | 46 panel->set_panel_strip(NULL); |
45 panels_.erase(panel); | 47 panels_.erase(panel); |
46 } | 48 } |
47 | 49 |
48 void DetachedPanelStrip::CloseAll() { | 50 void DetachedPanelStrip::CloseAll() { |
49 // Make a copy as closing panels can modify the iterator. | 51 // Make a copy as closing panels can modify the iterator. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
84 DCHECK_EQ(this, panel->panel_strip()); | 86 DCHECK_EQ(this, panel->panel_strip()); |
85 NOTIMPLEMENTED(); | 87 NOTIMPLEMENTED(); |
86 return false; | 88 return false; |
87 } | 89 } |
88 | 90 |
89 bool DetachedPanelStrip::CanShowPanelAsActive(const Panel* panel) const { | 91 bool DetachedPanelStrip::CanShowPanelAsActive(const Panel* panel) const { |
90 // All detached panels can be shown as active. | 92 // All detached panels can be shown as active. |
91 return true; | 93 return true; |
92 } | 94 } |
93 | 95 |
96 void DetachedPanelStrip::SavePanelPlacement(Panel* panel) { | |
97 DCHECK(!saved_panel_placement_.panel); | |
98 saved_panel_placement_.panel = panel; | |
99 saved_panel_placement_.position = panel->GetBounds().origin(); | |
100 } | |
101 | |
102 void DetachedPanelStrip::RestorePanelToSavedPlacement() { | |
103 DCHECK(saved_panel_placement_.panel); | |
104 | |
105 gfx::Rect new_bounds(saved_panel_placement_.panel->GetBounds()); | |
106 new_bounds.set_origin(saved_panel_placement_.position); | |
107 saved_panel_placement_.panel->SetPanelBounds(new_bounds); | |
108 | |
109 DiscardSavedPanelPlacement(); | |
110 } | |
111 | |
112 void DetachedPanelStrip::DiscardSavedPanelPlacement() { | |
113 DCHECK(saved_panel_placement_.panel); | |
114 saved_panel_placement_.panel = NULL; | |
115 } | |
116 | |
94 bool DetachedPanelStrip::CanDragPanel(const Panel* panel) const { | 117 bool DetachedPanelStrip::CanDragPanel(const Panel* panel) const { |
95 // All detached panels are draggable. | 118 // All detached panels are draggable. |
96 return true; | 119 return true; |
97 } | 120 } |
98 | 121 |
99 void DetachedPanelStrip::StartDraggingPanel(Panel* panel) { | 122 void DetachedPanelStrip::StartDraggingPanelWithinStrip(Panel* panel) { |
jennb
2012/03/08 23:41:09
dcheck panel is in strip?
jianli
2012/03/09 21:48:58
Done.
| |
100 } | 123 } |
101 | 124 |
102 void DetachedPanelStrip::DragPanel(Panel* panel, int delta_x, int delta_y) { | 125 void DetachedPanelStrip::DragPanelWithinStrip(Panel* panel, |
126 int delta_x, | |
127 int delta_y) { | |
103 gfx::Rect new_bounds(panel->GetBounds()); | 128 gfx::Rect new_bounds(panel->GetBounds()); |
104 new_bounds.Offset(delta_x, delta_y); | 129 new_bounds.Offset(delta_x, delta_y); |
105 panel->SetPanelBounds(new_bounds); | 130 panel->SetPanelBounds(new_bounds); |
106 } | 131 } |
107 | 132 |
108 void DetachedPanelStrip::EndDraggingPanel(Panel* panel, bool cancelled) { | 133 void DetachedPanelStrip::EndDraggingPanelWithinStrip(Panel* panel, |
109 if (cancelled) { | 134 bool aborted) { |
110 gfx::Rect new_bounds(panel->GetBounds()); | |
111 new_bounds.set_origin( | |
112 panel_manager_->drag_controller()->dragging_panel_original_position()); | |
113 panel->SetPanelBounds(new_bounds); | |
114 } | |
115 } | 135 } |
116 | 136 |
117 bool DetachedPanelStrip::HasPanel(Panel* panel) const { | 137 bool DetachedPanelStrip::HasPanel(Panel* panel) const { |
118 return panels_.find(panel) != panels_.end(); | 138 return panels_.find(panel) != panels_.end(); |
119 } | 139 } |
OLD | NEW |