From: owen Date: Wed, 21 Sep 2005 14:53:32 +0000 (+0000) Subject: Platform-independent support for zooming around session list by typing X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/commitdiff_plain/dcfd072859faf68a06c2836a478d3771fb518c2a?hp=9e201f72db4478da43d1b042639e2f294db08239 Platform-independent support for zooming around session list by typing 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 --- diff --git a/config.c b/config.c index 0a470803..39da6c2a 100644 --- 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 &&