Exemple #1
0
        protected override Point InternalMeasure(Point availableSize)
        {
            var result = Point.Zero;

            if (Widget != null)
            {
                result = Widget.Measure(availableSize);
            }

            return(result);
        }
Exemple #2
0
        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;
        }
Exemple #3
0
        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;
                }
            }
        }