Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a374ae6 authored by Benjamin Poirier's avatar Benjamin Poirier Committed by Michal Marek
Browse files

menuconfig: Do not open code textbox scroll up/down



We don't need to explicitely use ncurses' scroll(). ncurses performs
vertical-motion optimization at wrefresh() time.

Using strace I confirmed that with the following patch curses still sends only
the new line of text to the terminal when scrolling up/down one line at a
time.

Signed-off-by: default avatarBenjamin Poirier <bpoirier@suse.de>
Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
parent 5e609add
Loading
Loading
Loading
Loading
+11 −44
Original line number Diff line number Diff line
@@ -166,40 +166,12 @@ int dialog_textbox(const char *title, const char *tbuf, int initial_height,
		case 'K':	/* Previous line */
		case 'k':
		case KEY_UP:
			if (!begin_reached) {
				int passed_end = 0;
			if (begin_reached)
				break;

			back_lines(page_length + 1);

				/* We don't call print_page() here but use
				 * scrolling to ensure faster screen update.
				 * However, 'end_reached' and 'page_length'
				 * should still be updated, and 'page' should
				 * point to start of next page. This is done
				 * by calling get_line() in the following
				 * 'for' loop. */
				scrollok(box, TRUE);
				wscrl(box, -1);	/* Scroll box region down one line */
				scrollok(box, FALSE);
				page_length = 0;
				for (i = 0; i < boxh; i++) {
					if (!i) {
						/* print first line of page */
						print_line(box, 0, boxw);
						wnoutrefresh(box);
					} else
						/* Called to update 'end_reached' and 'page' */
						get_line();
					if (!passed_end)
						page_length++;
					if (end_reached && !passed_end)
						passed_end = 1;
				}

				print_position(dialog);
				wmove(dialog, cur_y, cur_x);	/* Restore cursor position */
				wrefresh(dialog);
			}
			refresh_text_box(dialog, box, boxh, boxw, cur_y,
					 cur_x);
			break;
		case 'B':	/* Previous page */
		case 'b':
@@ -214,17 +186,12 @@ int dialog_textbox(const char *title, const char *tbuf, int initial_height,
		case 'J':	/* Next line */
		case 'j':
		case KEY_DOWN:
			if (!end_reached) {
				begin_reached = 0;
				scrollok(box, TRUE);
				scroll(box);	/* Scroll box region up one line */
				scrollok(box, FALSE);
				print_line(box, boxh - 1, boxw);
				wnoutrefresh(box);
				print_position(dialog);
				wmove(dialog, cur_y, cur_x);	/* Restore cursor position */
				wrefresh(dialog);
			}
			if (end_reached)
				break;

			back_lines(page_length - 1);
			refresh_text_box(dialog, box, boxh, boxw, cur_y,
					 cur_x);
			break;
		case KEY_NPAGE:	/* Next page */
		case ' ':