This patch enables scroll indicators on the menus - shown if there is
a part of menu before/after the visible area.
Enjoy,
Ilya
--- src/LYStrings.c 2001/05/02 06:54:12 1.2
+++ src/LYStrings.c 2001/05/02 07:40:52
@@ -3703,6 +3703,10 @@ PUBLIC int LYhandlePopupList ARGS9(
char buffer[MAX_LINE];
char *popup_status_msg = NULL;
CONST char **Cptr = NULL;
+#define CAN_SCROLL_DOWN 1
+#define CAN_SCROLL_UP 2
+#define CAN_SCROLL 4
+ int can_scroll = 0, can_scroll_was = 0;
orig_choice = cur_choice;
if (cur_choice < 0)
@@ -3815,6 +3819,8 @@ PUBLIC int LYhandlePopupList ARGS9(
* This is really fun, when the length is 4, it means 0 to 4, or 5.
*/
length = (bottom - top) - 2;
+ if (length <= num_choices)
+ can_scroll = CAN_SCROLL;
/*
* Move the window down if it's too high.
@@ -3900,6 +3906,25 @@ redraw:
*/
while (cmd != LYK_ACTIVATE) {
int row = ((i + 1) - window_offset);
+
+ /* Show scroll indicators. */
+ if (can_scroll) {
+ can_scroll = ((window_offset ? CAN_SCROLL_UP : 0)
+ | (num_choices - window_offset >= length
+ ? CAN_SCROLL_DOWN : 0));
+ if (~can_scroll & can_scroll_was) { /* Need to redraw */
+ LYbox(form_window, !numbered);
+ can_scroll_was = 0;
+ }
+ if (can_scroll & ~can_scroll_was & CAN_SCROLL_UP) {
+ wmove(form_window, 1, Lnum + width + 3);
+ waddch(form_window, ACS_UARROW);
+ }
+ if (can_scroll & ~can_scroll_was & CAN_SCROLL_DOWN) {
+ wmove(form_window, length, Lnum + width + 3);
+ waddch(form_window, ACS_DARROW);
+ }
+ }
/*
* Unreverse cur choice.
; To UNSUBSCRIBE: Send "unsubscribe lynx-dev" to [EMAIL PROTECTED]