protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (Locked) { return; } ObjectCollection selectedObjects = new ObjectCollection(); Designer.SelectedObjects.CopyTo(selectedObjects); HideToolTip(); FEventArgs.X = e.X - Offset.X; FEventArgs.Y = e.Y - Offset.Y; FEventArgs.Button = e.Button; FEventArgs.Mode = FMode2; FEventArgs.Handled = false; if (FMode2 == WorkspaceMode2.Move || FMode2 == WorkspaceMode2.Size) { // serve all objects for (int i = 0; i < Designer.Objects.Count; i++) { ComponentBase c = Designer.Objects[i] as ComponentBase; if (c != null) { c.HandleMouseUp(FEventArgs); } } // remove objects with zero size if (FMode1 == WorkspaceMode1.Insert) { int i = 0; while (i < Designer.SelectedObjects.Count) { ComponentBase c = Designer.SelectedObjects[i] as ComponentBase; if (c != null && c.Width == 0 && c.Height == 0) { Designer.Objects.Remove(c); Designer.SelectedObjects.Remove(c); c.Dispose(); i--; } i++; } } if (FMode1 != WorkspaceMode1.Select) { // during OnInsert call current context may be changed WorkspaceMode1 saveMode = FMode1; FMode1 = WorkspaceMode1.Select; ObjectCollection insertedObjects = new ObjectCollection(); Designer.SelectedObjects.CopyTo(insertedObjects); foreach (Base c in insertedObjects) { c.OnAfterInsert(FInsertionSource); } FMode1 = saveMode; } // check if we actually move a mouse after we clicked it if (FMouseMoved || FMode1 == WorkspaceMode1.Insert) { Designer.SetModified(FPageDesigner, FMode1 == WorkspaceMode1.Insert ? "Insert" : FMode2 == WorkspaceMode2.Move ? "Move" : "Size"); } } else if (FMode2 == WorkspaceMode2.SelectionRect) { FEventArgs.SelectionRect = NormalizeSelectionRect(); if (FEventArgs.ActiveObject != null) { FEventArgs.ActiveObject.HandleMouseUp(FEventArgs); } } else if (FMode2 == WorkspaceMode2.Custom) { if (FEventArgs.ActiveObject != null) { FEventArgs.ActiveObject.HandleMouseUp(FEventArgs); } } bool needReset = FMode1 == WorkspaceMode1.Insert; if (!selectedObjects.Equals(Designer.SelectedObjects) || needReset) { Designer.SelectionChanged(FPageDesigner); } FMouseDown = false; FMode1 = WorkspaceMode1.Select; FMode2 = WorkspaceMode2.None; FGuides.ClearVirtualGuides(); Refresh(); if (needReset) { Designer.ResetObjectsToolbar(false); } if (e.Button == MouseButtons.Right && Designer.SelectedObjects.Count > 0) { ContextMenuBar menu = Designer.SelectedObjects[0].GetContextMenu(); if (menu != null) { PopupItem item = menu.Items[0] as PopupItem; item.PopupMenu(PointToScreen(e.Location)); } } }