Exemplo n.º 1
0
        private static bool TryGetNotationAndDirection(
            MathBox mathBox, Key key, out LogicalDirection direction,
            out NotationBase notation
            )
        {
            direction = LogicalDirection.Forward;

            InlineUIContainer forwardElement  = mathBox.ForwardUiElement;
            InlineUIContainer backwardElement = mathBox.BackwardUiElement;

            InlineUIContainer inlineUiContainer = null;

            if (key == Key.Right && forwardElement != null)
            {
                inlineUiContainer = forwardElement;
                direction         = LogicalDirection.Forward;
            }
            else if (key == Key.Left && backwardElement != null)
            {
                inlineUiContainer = backwardElement;
                direction         = LogicalDirection.Backward;
            }

            if (!(inlineUiContainer?.Child is NotationBase control))
            {
                notation = null;
                return(false);
            }

            notation = control;
            return(true);
        }
Exemplo n.º 2
0
        private static void MathBox_ChildFocusFailed(NotationBase sender, Direction direction)
        {
            var uiContainer = sender.FindParent <InlineUIContainer>();
            var mathBox     = uiContainer.FindParent <MathBox>();
            LogicalDirection logicalDirection = ConvertDirectionToLogicalDirection(direction);

            mathBox.MoveCaretToTextElementBoundary(uiContainer, logicalDirection);
            mathBox.Focus();
        }
Exemplo n.º 3
0
 private static void FocusMathElement(NotationBase notation, LogicalDirection direction)
 {
     if (direction == LogicalDirection.Forward)
     {
         notation.FocusFirst();
     }
     else
     {
         notation.FocusLast();
     }
 }
Exemplo n.º 4
0
        private static void FocusSibling(MathBox mathBox, Direction direction)
        {
            NotationBase parent = mathBox.FindParent <NotationBase>();

            parent?.FocusDirection(direction);
        }