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); |
+ } |
+} |