From: simon Date: Fri, 6 Oct 2000 16:19:44 +0000 (+0000) Subject: Fix sorting of saved sessions list box so Default Settings is back at X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/commitdiff_plain/a84ca2f5202f30814a7926d49621c872f4444194 Fix sorting of saved sessions list box so Default Settings is back at the top of the list instead of being filed under D git-svn-id: svn://svn.tartarus.org/sgt/putty@686 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/settings.c b/settings.c index 6204227c..1bbf6fb6 100644 --- a/settings.c +++ b/settings.c @@ -280,6 +280,21 @@ void do_defaults (char *session, Config *cfg) { load_settings ("Default Settings", FALSE, cfg); } +static int sessioncmp(const void *av, const void *bv) { + const char *a = *(const char *const *)av; + const char *b = *(const char *const *)bv; + + /* + * Alphabetical order, except that "Default Settings" is a + * special case and comes first. + */ + if (!strcmp(a, "Default Settings")) + return -1; /* a comes first */ + if (!strcmp(b, "Default Settings")) + return +1; /* b comes first */ + return strcmp(a, b); /* otherwise, compare normally */ +} + void get_sesslist(int allocate) { static char otherbuf[2048]; static char *buffer; @@ -311,24 +326,23 @@ void get_sesslist(int allocate) { buffer[buflen] = '\0'; p = buffer; - nsessions = 1; /* "Default Settings" counts as one */ + nsessions = 0; while (*p) { - if (strcmp(p, "Default Settings")) - nsessions++; + nsessions++; while (*p) p++; p++; } sessions = smalloc(nsessions * sizeof(char *)); - sessions[0] = "Default Settings"; p = buffer; - i = 1; + i = 0; while (*p) { - if (strcmp(p, "Default Settings")) - sessions[i++] = p; + sessions[i++] = p; while (*p) p++; p++; } + + qsort(sessions, i, sizeof(char *), sessioncmp); } else { sfree (buffer); sfree (sessions); diff --git a/windlg.c b/windlg.c index b2f46bea..7cae7e6a 100644 --- a/windlg.c +++ b/windlg.c @@ -568,7 +568,7 @@ static void sesssaver(struct ctlpos *cp, char *text, cp->ypos += y + GAPBETWEEN; doctl(cp, r, "LISTBOX", WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_VSCROLL | - LBS_STANDARD | LBS_HASSTRINGS, + LBS_NOTIFY | LBS_HASSTRINGS, WS_EX_CLIENTEDGE, "", listid); }