Platform-independent support for zooming around session list by typing
authorowen <owen@cda61777-01e9-0310-a592-d414129be87e>
Wed, 21 Sep 2005 14:53:32 +0000 (14:53 +0000)
committerowen <owen@cda61777-01e9-0310-a592-d414129be87e>
Wed, 21 Sep 2005 14:53:32 +0000 (14:53 +0000)
in the session name box.  Thwarted on Unix by GTK not automatically
scrolling the listbox to the selected item, but we can fix that in
the platform-specific side later.

git-svn-id: svn://svn.tartarus.org/sgt/putty@6337 cda61777-01e9-0310-a592-d414129be87e

config.c

index 0a47080..39da6c2 100644 (file)
--- a/config.c
+++ b/config.c
@@ -350,9 +350,25 @@ static void sessionsaver_handler(union control *ctrl, void *dlg,
            dlg_update_done(ctrl, dlg);
        }
     } else if (event == EVENT_VALCHANGE) {
+        int top, bottom, halfway, i;
        if (ctrl == ssd->editbox) {
            dlg_editbox_get(ctrl, dlg, savedsession,
                            SAVEDSESSION_LEN);
+           top = ssd->sesslist.nsessions;
+           bottom = -1;
+           while (top-bottom > 1) {
+               halfway = (top+bottom)/2;
+               i = strcmp(savedsession, ssd->sesslist.sessions[halfway]);
+               if (i <= 0 ) {
+                   top = halfway;
+               } else {
+                   bottom = halfway;
+               }
+           }
+           if (top == ssd->sesslist.nsessions) {
+               top -= 1;
+           }
+           dlg_listbox_select(ssd->listbox, dlg, top);
        }
     } else if (event == EVENT_ACTION) {
        if (!ssd->midsession &&