changeset 174:6354625e8fb2

[/trunk] Changeset 186 by mikael * Fix a bug in scr_cmdhisto_next() * Backup current line when moving to the command history lines
author mikael
date Thu, 05 May 2005 06:17:41 +0000
parents 09e24917059d
children 7b7dd6d69f58
files mcabber/src/screen.c
diffstat 1 files changed, 12 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/screen.c	Wed May 04 21:06:05 2005 +0000
+++ b/mcabber/src/screen.c	Thu May 05 06:17:41 2005 +0000
@@ -43,12 +43,13 @@
 static int chatmode;
 int update_roster;
 
-static char inputLine[INPUTLINE_LENGTH+1];
-static char *ptr_inputline;
-static short int inputline_offset;
-static int  completion_started;
+static char       inputLine[INPUTLINE_LENGTH+1];
+static char      *ptr_inputline;
+static short int  inputline_offset;
+static int    completion_started;
 static GList *cmdhisto;
 static GList *cmdhisto_cur;
+static char   cmdhisto_backup[INPUTLINE_LENGTH+1];
 
 
 /* Functions */
@@ -970,6 +971,9 @@
   GList *hl;
   if (!cmdhisto_cur) {
     hl = g_list_last(cmdhisto);
+    if (hl) { // backup current line
+      strncpy(cmdhisto_backup, mask, INPUTLINE_LENGTH);
+    }
   } else {
     hl = g_list_previous(cmdhisto_cur);
   }
@@ -997,7 +1001,10 @@
       cmdhisto_cur = hl;
       return (const char*)hl->data;
     }
-  return NULL;
+  if (strncmp(cmdhisto_backup, mask, len))
+    return NULL;
+  cmdhisto_cur = NULL;
+  return cmdhisto_backup;
 }
 
 //  which_row()