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]

Reply via email to