Index: src/platform/window_manager/panel_bar.cc |
diff --git a/src/platform/window_manager/panel_bar.cc b/src/platform/window_manager/panel_bar.cc |
index bca015f12bfcb2ef0492ce96d46ae8953c7710eb..52c4211149d06876606d3f70ee137f909db3f07c 100644 |
--- a/src/platform/window_manager/panel_bar.cc |
+++ b/src/platform/window_manager/panel_bar.cc |
@@ -343,12 +343,12 @@ bool PanelBar::HandleChromeMessage(const WmIpc::Message& msg) { |
} |
break; |
} |
- case WmIpc::Message::WM_MOVE_PANEL: { |
+ case WmIpc::Message::WM_NOTIFY_PANEL_DRAGGED: { |
XWindow xid = msg.param(0); |
Window* win = wm_->GetWindow(xid); |
if (!win) { |
- LOG(WARNING) << "Ignoring WM_MOVE_PANEL message for unknown window " |
- << XidStr(xid); |
+ LOG(WARNING) << "Ignoring WM_NOTIFY_PANEL_DRAGGED message for unknown " |
+ << "window " << XidStr(xid); |
return true; |
} |
int x = msg.param(1); |
@@ -520,7 +520,10 @@ void PanelBar::MoveDraggedPanel() { |
return; |
const int drag_x = dragged_panel_event_coalescer_.x(); |
- dragged_panel_->MoveX(drag_x + dragged_panel_->titlebar_width(), false, 0); |
+ dragged_panel_->MoveX((wm_->wm_ipc_version() >= 1) ? |
+ drag_x : |
+ drag_x + dragged_panel_->titlebar_width(), |
+ false, 0); |
// When an expanded panel is being dragged, we don't move the other |
// panels to make room for it until the drag is done. |
@@ -533,7 +536,9 @@ void PanelBar::MoveDraggedPanel() { |
CHECK(dragged_it != collapsed_panels_.end()); |
// Next, check if the center of the panel has moved over another panel. |
- const int center_x = drag_x + 0.5 * dragged_panel_->titlebar_width(); |
+ const int center_x = (wm_->wm_ipc_version() >= 1) ? |
+ drag_x - 0.5 * dragged_panel_->titlebar_width() : |
+ drag_x + 0.5 * dragged_panel_->titlebar_width(); |
Panels::iterator it = collapsed_panels_.begin(); |
for (; it != collapsed_panels_.end(); ++it) { |
int snapped_left = 0, snapped_right = 0; |