protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); BringToFront(); if ((Parent != null) && (e.Button == MouseButtons.Left)) { if (!_selected) { owner.unselectAll(); owner.selectMe(this); } else { // Was part of the selection // owner.unselectNets(); } Rectangle deleteButton = getDeleteButton(); Rectangle shrinkButton = getShrinkButton(); Rectangle activeButton = getActiveButton(); if (deleteButton.Contains(e.Location)) { dragMode = DragMode.DeleteBtn; onDeleteButton = true; Invalidate(); } else if (_canShrink && shrinkButton.Contains(e.Location)) { dragMode = DragMode.ShrinkBtn; onShrinkButton = true; Invalidate(); } else if (_hasActiveSwitch && activeButton.Contains(e.Location)) { dragMode = DragMode.ActiveBtn; onActiveButton = true; Invalidate(); } else { dragPa = (SystemPanel)Parent; dragStart = dragPa.fromScreen(Vector.V(e.X + Location.X, e.Y + Location.Y)); prevPos = center; dragMode = DragMode.Moving; dragPa.initiateMove(this); } } }
protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); switch (dragMode) { case DragMode.Moving: Vector mpos = Vector.V(Location.X + e.X, Location.Y + e.Y); Vector delta = dragPa.fromScreen(mpos) - dragStart; center = prevPos + delta; Vector loc = center - dim / 2; if (shrinked) { loc = center - Vector.V(_shrinkSize) * scale / 2; } // loc.round(20); Location = dragPa.toScreen(loc).Point; dragPa.temporaryMove(this, delta); dragPa.Invalidate(); break; case DragMode.DeleteBtn: Rectangle deleteButton = getDeleteButton(); if (deleteButton.Contains(e.Location)) { if (!onDeleteButton) { onDeleteButton = true; Invalidate(); } } else { if (onDeleteButton) { onDeleteButton = false; Invalidate(); } } break; case DragMode.ShrinkBtn: Rectangle shrinkButton = getShrinkButton(); if (shrinkButton.Contains(e.Location)) { if (!onShrinkButton) { onShrinkButton = true; Invalidate(); } } else { if (onShrinkButton) { onShrinkButton = false; Invalidate(); } } break; case DragMode.ActiveBtn: Rectangle activeButton = getActiveButton(); if (activeButton.Contains(e.Location)) { if (!onActiveButton) { onActiveButton = true; Invalidate(); } } else { if (onActiveButton) { onActiveButton = false; Invalidate(); } } break; } }