// To handle the dragging of panels private static void PanelDrag(object sender, MouseEventArgs e) { foreach (Panel p in panels) { if (p.centered) { p.Center(); } if (!ResizeGrip.IsResizing() && p.dragging && !p.centered) { // if predrag returns true, move the panel if (p.PreDrag(e.X - p.dragOffsetX, e.Y - p.dragOffsetY)) { p.SetPos(e.X - p.dragOffsetX, e.Y - p.dragOffsetY, !VirtualKeys.IsKeyPressed(VirtualKeyStates.VK_TAB)); p.PostDrag(); RefreshProperties(); if (!VirtualKeys.IsKeyPressed(VirtualKeyStates.VK_CONTROL)) { continue; } List <Panel> panelsOver = GetPanelsMouseIsOver(); foreach (Panel pan in panelsOver) { if (pan != p && pan.canBeParent == true && p.parent != pan && p.canBeChild == true && (!p.parent || p.parent.z < pan.z)) { if (p.hasParent && p.parent) { if (p.parent.z < pan.z && pan.parent != p) { pan.highlighted = true; break; } } else { pan.highlighted = true; break; } } } } } } }
private static void MouseDown(object sender, MouseEventArgs e) { foreach (Panel p in panels) { if (ResizeGrip.Resize_MouseDown(sender, e)) { break; } SelectedItem_MouseHandler(sender, e); if (!p.locked && p == GetSelected() && e.Button == MouseButtons.Left && MouseIsOverPanel(p)) { p.dragOffsetX = e.X - p.x; p.dragOffsetY = e.Y - p.y; p.dragging = true; } if (Derma.MouseIsOverPanel(p) && p.MouseDownHandler != null) { p.MouseDownHandler(p, e); break; } } }