ARGSUSED */
| 1790 | |
| 1791 | /* ARGSUSED */ |
| 1792 | void |
| 1793 | ec_key(Widget w, XEvent *event, String *params, Cardinal *num_params) |
| 1794 | { |
| 1795 | char ch; |
| 1796 | int i, pass; |
| 1797 | float shown, top; |
| 1798 | Arg arg[2]; |
| 1799 | Widget hbar, vbar; |
| 1800 | XKeyEvent *xkey = (XKeyEvent *) event; |
| 1801 | |
| 1802 | nhUse(params); |
| 1803 | nhUse(num_params); |
| 1804 | |
| 1805 | ch = key_event_to_char(xkey); |
| 1806 | |
| 1807 | if (ch == '\0') { /* don't accept nul char/modifier event */ |
| 1808 | /* don't beep */ |
| 1809 | return; |
| 1810 | } else if (ch == '?') { |
| 1811 | extend_help((Widget) 0, (XtPointer) 0, (XtPointer) 0); |
| 1812 | return; |
| 1813 | } else if (strchr("\033\n\r", ch)) { |
| 1814 | if (ch == '\033') { |
| 1815 | /* unselect while still visible */ |
| 1816 | if (extended_cmd_selected >= 0) |
| 1817 | swap_fg_bg(extended_commands[extended_cmd_selected]); |
| 1818 | extended_cmd_selected = -1; /* dismiss */ |
| 1819 | } |
| 1820 | |
| 1821 | nh_XtPopdown(extended_command_popup); |
| 1822 | /* unselect while invisible */ |
| 1823 | if (extended_cmd_selected >= 0) |
| 1824 | swap_fg_bg(extended_commands[extended_cmd_selected]); |
| 1825 | |
| 1826 | exit_x_event = TRUE; /* leave event loop */ |
| 1827 | ec_active = FALSE; |
| 1828 | return; |
| 1829 | } else if (ch == MENU_FIRST_PAGE || ch == MENU_LAST_PAGE) { |
| 1830 | find_scrollbars(w, (Widget) 0, &hbar, &vbar); |
| 1831 | if (vbar) { |
| 1832 | top = (ch == MENU_FIRST_PAGE) ? 0.0 : 1.0; |
| 1833 | XtCallCallbacks(vbar, XtNjumpProc, &top); |
| 1834 | } |
| 1835 | return; |
| 1836 | } else if (ch == MENU_NEXT_PAGE || ch == MENU_PREVIOUS_PAGE) { |
| 1837 | find_scrollbars(w, (Widget) 0, &hbar, &vbar); |
| 1838 | if (vbar) { |
| 1839 | XtSetArg(arg[0], nhStr(XtNshown), &shown); |
| 1840 | XtSetArg(arg[1], nhStr(XtNtopOfThumb), &top); |
| 1841 | XtGetValues(vbar, arg, TWO); |
| 1842 | top += ((ch == MENU_NEXT_PAGE) ? shown : -shown); |
| 1843 | XtCallCallbacks(vbar, XtNjumpProc, &top); |
| 1844 | } |
| 1845 | return; |
| 1846 | } |
| 1847 | |
| 1848 | /* |
| 1849 | * If too much time has elapsed, treat current key as starting a new |
nothing calls this directly
no test coverage detected