Chromium Code Reviews| Index: chrome/browser/ui/panels/detached_panel_strip.cc |
| diff --git a/chrome/browser/ui/panels/detached_panel_strip.cc b/chrome/browser/ui/panels/detached_panel_strip.cc |
| index 44cc362dce49c81c1d207228d03b4b412e146830..59557b64349b6f9b34d3a80ef1320e286c11b092 100644 |
| --- a/chrome/browser/ui/panels/detached_panel_strip.cc |
| +++ b/chrome/browser/ui/panels/detached_panel_strip.cc |
| @@ -6,6 +6,7 @@ |
| #include <algorithm> |
| #include "base/logging.h" |
| +#include "chrome/browser/ui/panels/panel_drag_controller.h" |
| #include "chrome/browser/ui/panels/panel_manager.h" |
| DetachedPanelStrip::DetachedPanelStrip(PanelManager* panel_manager) |
| @@ -79,3 +80,31 @@ void DetachedPanelStrip::RestorePanel(Panel* panel) { |
| NOTIMPLEMENTED(); |
| } |
| +bool DetachedPanelStrip::CanDragPanel(Panel* panel) const { |
| + // All detached panels are draggable. |
| + return true; |
| +} |
| + |
| +void DetachedPanelStrip::StartDraggingPanel(Panel* panel) { |
| + dragging_panel_original_position_ = panel->GetBounds().origin(); |
| +} |
| + |
| +void DetachedPanelStrip::DragPanel(int delta_x, int delta_y) { |
|
jennb
2012/02/17 21:28:45
Maybe we should pass the dragging_panel into this
jianli
2012/02/17 23:52:56
Done.
|
| + Panel* dragging_panel = panel_manager_->drag_controller()->dragging_panel(); |
| + DCHECK(dragging_panel); |
| + |
| + gfx::Rect new_bounds(dragging_panel->GetBounds()); |
| + new_bounds.Offset(delta_x, delta_y); |
|
jennb
2012/02/17 21:28:45
Do we need to adjust the deltas to keep the panel
jianli
2012/02/17 23:52:56
The detached panel should be allowed at any positi
|
| + dragging_panel->SetPanelBounds(new_bounds); |
| +} |
| + |
| +void DetachedPanelStrip::EndDraggingPanel(bool cancelled) { |
| + Panel* dragging_panel = panel_manager_->drag_controller()->dragging_panel(); |
| + DCHECK(dragging_panel); |
| + |
| + if (cancelled) { |
| + gfx::Rect new_bounds(dragging_panel->GetBounds()); |
| + new_bounds.set_origin(dragging_panel_original_position_); |
| + dragging_panel->SetPanelBounds(new_bounds); |
| + } |
| +} |