1 /* Specific command window processing. 2 3 Copyright (C) 1998-2016 Free Software Foundation, Inc. 4 5 Contributed by Hewlett-Packard Company. 6 7 This file is part of GDB. 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3 of the License, or 12 (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 21 22 #include "defs.h" 23 #include "tui/tui.h" 24 #include "tui/tui-data.h" 25 #include "tui/tui-win.h" 26 #include "tui/tui-io.h" 27 #include "tui/tui-command.h" 28 29 #include "gdb_curses.h" 30 /***************************************** 31 ** STATIC LOCAL FUNCTIONS FORWARD DECLS ** 32 ******************************************/ 33 34 35 36 /***************************************** 37 ** PUBLIC FUNCTIONS ** 38 ******************************************/ 39 40 /* Dispatch the correct tui function based upon the control 41 character. */ 42 unsigned int 43 tui_dispatch_ctrl_char (unsigned int ch) 44 { 45 struct tui_win_info *win_info = tui_win_with_focus (); 46 47 /* Handle the CTRL-L refresh for each window. */ 48 if (ch == '\f') 49 tui_refresh_all_win (); 50 51 /* If the command window has the logical focus, or no-one does 52 assume it is the command window; in this case, pass the character 53 on through and do nothing here. */ 54 if (win_info == NULL || win_info == TUI_CMD_WIN) 55 return ch; 56 57 switch (ch) 58 { 59 case KEY_NPAGE: 60 tui_scroll_forward (win_info, 0); 61 break; 62 case KEY_PPAGE: 63 tui_scroll_backward (win_info, 0); 64 break; 65 case KEY_DOWN: 66 case KEY_SF: 67 tui_scroll_forward (win_info, 1); 68 break; 69 case KEY_UP: 70 case KEY_SR: 71 tui_scroll_backward (win_info, 1); 72 break; 73 case KEY_RIGHT: 74 tui_scroll_left (win_info, 1); 75 break; 76 case KEY_LEFT: 77 tui_scroll_right (win_info, 1); 78 break; 79 case '\f': 80 break; 81 default: 82 /* We didn't recognize the character as a control character, so pass it 83 through. */ 84 return ch; 85 } 86 87 /* We intercepted the control character, so return 0 (which readline 88 will interpret as a no-op). */ 89 return 0; 90 } 91 92 /* See tui-command.h. */ 93 94 void 95 tui_refresh_cmd_win (void) 96 { 97 WINDOW *w = TUI_CMD_WIN->generic.handle; 98 99 wrefresh (w); 100 101 /* FIXME: It's not clear why this is here. 102 It was present in the original tui_puts code and is kept in order to 103 not introduce some subtle breakage. */ 104 fflush (stdout); 105 } 106