protected override Point InternalMeasure(Point availableSize) { var result = Point.Zero; if (Widget != null) { result = Widget.Measure(availableSize); } return(result); }
public static void ShowContextMenu(Widget menu, Point position) { if (menu == null) { throw new ArgumentNullException("menu"); } HideContextMenu(); ContextMenu = menu; if (ContextMenu == null) { return; } ContextMenu.HorizontalAlignment = HorizontalAlignment.Left; ContextMenu.VerticalAlignment = VerticalAlignment.Top; var measure = ContextMenu.Measure(InternalBounds.Size()); if (position.X + measure.X > InternalBounds.Right) { position.X = InternalBounds.Right - measure.X; } if (position.Y + measure.Y > InternalBounds.Bottom) { position.Y = InternalBounds.Bottom - measure.Y; } ContextMenu.Left = position.X; ContextMenu.Top = position.Y; ContextMenu.Visible = true; Widgets.Add(ContextMenu); if (ContextMenu.AcceptsKeyboardFocus) { _previousKeyboardFocus = FocusedKeyboardWidget; FocusedKeyboardWidget = ContextMenu; } _scheduleMouseWheelFocus = ContextMenu; _contextMenuShown = true; }
public void ShowContextMenu(Widget menu, Point position) { if (menu == null) { throw new ArgumentNullException("menu"); } HideContextMenu(); ContextMenu = menu; if (ContextMenu != null) { ContextMenu.HorizontalAlignment = HorizontalAlignment.Left; ContextMenu.VerticalAlignment = VerticalAlignment.Top; var measure = ContextMenu.Measure(Bounds.Size()); if (position.X + measure.X > Bounds.Right) { position.X = Bounds.Right - measure.X; } if (position.Y + measure.Y > Bounds.Bottom) { position.Y = Bounds.Bottom - measure.Y; } ContextMenu.Left = position.X; ContextMenu.Top = position.Y; ContextMenu.Visible = true; _widgets.Add(ContextMenu); if (ContextMenu.AcceptsKeyboardFocus) { FocusedKeyboardWidget = ContextMenu; } } }