Mono.Terminal.Container.FocusPrev C# (CSharp) Method

FocusPrev() public method

Focuses the previous widget.
public FocusPrev ( ) : bool
return bool
        public bool FocusPrev()
        {
            if (focused == null){
                FocusLast ();
                return true;
            }
            int focused_idx = -1;
            for (int i = widgets.Count; i > 0; ){
                i--;
                Widget w = (Widget)widgets [i];

                if (w.HasFocus){
                    Container c = w as Container;
                    if (c != null){
                        if (c.FocusPrev ())
                            return true;
                    }
                    focused_idx = i;
                    continue;
                }
                if (w.CanFocus && focused_idx != -1){
                    focused.HasFocus = false;

                    Container c = w as Container;
                    if (c != null && c.CanFocus){
                        c.FocusLast ();
                    }
                    SetFocus (w);
                    return true;
                }
            }
            if (focused != null){
                focused.HasFocus = false;
                focused = null;
            }
            return false;
        }

Usage Example

Ejemplo n.º 1
0
        static void ProcessChar(Container container)
        {
            int ch = Curses.getch ();

            if ((ch == -1) || (ch == Curses.KeyResize)){
                if (Curses.CheckWinChange ()){
                    EmptyContainer.Clear ();
                    foreach (Container c in toplevels)
                        c.SizeChanged ();
                    Refresh ();
                }
                return;
            }

            if (ch == Curses.KeyMouse){
                Curses.MouseEvent ev;

                Curses.console_sharp_getmouse (out ev);
                container.ProcessMouse (ev);
                return;
            }

            if (ch == 27){
                Curses.timeout (100);
                int k = Curses.getch ();
                if (k != Curses.ERR && k != 27)
                    ch = Curses.KeyAlt | k;
                Curses.timeout (-1);
            }

            if (container.ProcessHotKey (ch))
                return;

            if (container.ProcessKey (ch))
                return;

            if (container.ProcessColdKey (ch))
                return;

            // Control-c, quit the current operation.
            if (ch == 3){
                container.Running = false;
                return;
            }

            // Control-z, suspend execution, then repaint.
            if (ch == 26){
                Curses.console_sharp_sendsigtstp ();
                Window.Standard.redrawwin ();
                Curses.refresh ();
            }

            //
            // Focus handling
            //
            if (ch == 9 || ch == Curses.KeyDown || ch == Curses.KeyRight){
                if (!container.FocusNext ())
                    container.FocusNext ();
                Curses.refresh ();
            } else if (ch == Curses.KeyUp || ch == Curses.KeyLeft){
                if (!container.FocusPrev ())
                    container.FocusPrev ();
                Curses.refresh ();
            }
        }
All Usage Examples Of Mono.Terminal.Container::FocusPrev