/* Scroll the disassembly forward or backward vertically. */ void tui_vertical_disassem_scroll (enum tui_scroll_direction scroll_direction, int num_to_scroll) { if (TUI_DISASM_WIN->generic.content != NULL) { CORE_ADDR pc; tui_win_content content; struct symtab *s; struct tui_line_or_address val; int max_lines, dir; struct symtab_and_line cursal = get_current_source_symtab_and_line (); content = (tui_win_content) TUI_DISASM_WIN->generic.content; if (cursal.symtab == (struct symtab *) NULL) s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); else s = cursal.symtab; /* account for hilite */ max_lines = TUI_DISASM_WIN->generic.height - 2; pc = content[0]->which_element.source.line_or_addr.u.addr; dir = (scroll_direction == FORWARD_SCROLL) ? max_lines : - max_lines; val.loa = LOA_ADDRESS; val.u.addr = tui_find_disassembly_address (pc, dir); tui_update_source_window_as_is (TUI_DISASM_WIN, s, val, FALSE); } }
/* Scroll the disassembly forward or backward vertically. */ void tui_vertical_disassem_scroll (enum tui_scroll_direction scroll_direction, int num_to_scroll) { if (TUI_DISASM_WIN->generic.content != NULL) { struct gdbarch *gdbarch = TUI_DISASM_WIN->detail.source_info.gdbarch; CORE_ADDR pc; tui_win_content content; struct tui_line_or_address val; int dir; content = (tui_win_content) TUI_DISASM_WIN->generic.content; pc = content[0]->which_element.source.line_or_addr.u.addr; num_to_scroll++; dir = (scroll_direction == FORWARD_SCROLL) ? num_to_scroll : -num_to_scroll; val.loa = LOA_ADDRESS; val.u.addr = tui_find_disassembly_address (gdbarch, pc, dir); tui_update_source_window_as_is (TUI_DISASM_WIN, gdbarch, NULL, val, FALSE); } }
/* Scroll the source forward or backward horizontally. */ void tui_horizontal_source_scroll (struct tui_win_info * win_info, enum tui_scroll_direction direction, int num_to_scroll) { if (win_info->generic.content != NULL) { int offset; struct symtab *s; struct symtab_and_line cursal = get_current_source_symtab_and_line (); if (cursal.symtab == (struct symtab *) NULL) s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); else s = cursal.symtab; if (direction == LEFT_SCROLL) offset = win_info->detail.source_info.horizontal_offset + num_to_scroll; else { if ((offset = win_info->detail.source_info.horizontal_offset - num_to_scroll) < 0) offset = 0; } win_info->detail.source_info.horizontal_offset = offset; tui_update_source_window_as_is (win_info, s, ((struct tui_win_element *) win_info->generic.content[0])->which_element.source.line_or_addr, FALSE); } return; }
/* Function to display source in the source window. This function initializes the horizontal scroll to 0. */ void tui_show_symtab_source (struct gdbarch *gdbarch, struct symtab *s, struct tui_line_or_address line, int noerror) { TUI_SRC_WIN->detail.source_info.horizontal_offset = 0; tui_update_source_window_as_is (TUI_SRC_WIN, gdbarch, s, line, noerror); }
/* Function to display source in the source window. This function initializes the horizontal scroll to 0. */ void tui_update_source_window (struct tui_win_info * win_info, struct symtab *s, struct tui_line_or_address line_or_addr, int noerror) { win_info->detail.source_info.horizontal_offset = 0; tui_update_source_window_as_is (win_info, s, line_or_addr, noerror); return; }
/* Scroll the source forward or backward horizontally. */ void tui_horizontal_source_scroll (struct tui_win_info *win_info, enum tui_scroll_direction direction, int num_to_scroll) { if (win_info->generic.content != NULL) { struct gdbarch *gdbarch = win_info->detail.source_info.gdbarch; int offset; struct symtab *s = NULL; if (win_info->generic.type == SRC_WIN) { struct symtab_and_line cursal = get_current_source_symtab_and_line (); if (cursal.symtab == NULL) s = find_pc_line_symtab (get_frame_pc (get_selected_frame (NULL))); else s = cursal.symtab; } if (direction == LEFT_SCROLL) offset = win_info->detail.source_info.horizontal_offset + num_to_scroll; else { offset = win_info->detail.source_info.horizontal_offset - num_to_scroll; if (offset < 0) offset = 0; } win_info->detail.source_info.horizontal_offset = offset; tui_update_source_window_as_is (win_info, gdbarch, s, win_info->generic.content[0] ->which_element.source.line_or_addr, FALSE); } return; }