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..7eb137d823ea9bc0f64a5691c0583f4cf967d759 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,25 @@ void DetachedPanelStrip::RestorePanel(Panel* panel) { |
NOTIMPLEMENTED(); |
} |
+bool DetachedPanelStrip::CanDragPanel(const Panel* panel) const { |
+ // All detached panels are draggable. |
+ return true; |
+} |
+ |
+void DetachedPanelStrip::StartDraggingPanel(Panel* panel) { |
+} |
+ |
+void DetachedPanelStrip::DragPanel(Panel* panel, int delta_x, int delta_y) { |
+ gfx::Rect new_bounds(panel->GetBounds()); |
+ new_bounds.Offset(delta_x, delta_y); |
+ panel->SetPanelBounds(new_bounds); |
+} |
+ |
+void DetachedPanelStrip::EndDraggingPanel(Panel* panel, bool cancelled) { |
+ if (cancelled) { |
+ gfx::Rect new_bounds(panel->GetBounds()); |
+ new_bounds.set_origin( |
+ panel_manager_->drag_controller()->dragging_panel_original_position()); |
+ panel->SetPanelBounds(new_bounds); |
+ } |
+} |