aboutsummaryrefslogtreecommitdiffstats
path: root/src/screen_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/screen_utils.c')
-rw-r--r--src/screen_utils.c44
1 files changed, 25 insertions, 19 deletions
diff --git a/src/screen_utils.c b/src/screen_utils.c
index 080b118b1..b14b2a0ee 100644
--- a/src/screen_utils.c
+++ b/src/screen_utils.c
@@ -1,5 +1,7 @@
/*
- * (c) 2004 by Kalle Wallin (kaw@linux.se)
+ * $Id$
+ *
+ * (c) 2004 by Kalle Wallin <kaw@linux.se>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -31,6 +33,7 @@
#include "options.h"
#include "list_window.h"
#include "colors.h"
+#include "wreadln.h"
#include "screen.h"
#define FIND_PROMPT _("Find: ")
@@ -63,31 +66,28 @@ screen_getch(WINDOW *w, char *prompt)
return key;
}
-
char *
-screen_getstr(WINDOW *w, char *prompt)
+screen_readln(WINDOW *w,
+ char *prompt,
+ char *value,
+ GList **history,
+ GCompletion *gcmp)
{
- char buf[256], *line = NULL;
- int prompt_len = strlen(prompt);
+ char *line = NULL;
- colors_use(w, COLOR_STATUS_ALERT);
- wclear(w);
- wmove(w, 0, 0);
- waddstr(w, prompt);
- wmove(w, 0, prompt_len);
-
- echo();
+ wmove(w, 0,0);
curs_set(1);
-
- if( wgetnstr(w, buf, 256) == OK )
- line = g_strdup(buf);
-
- noecho();
+ line = wreadln(w, prompt, value, COLS, history, gcmp);
curs_set(0);
-
return line;
}
+char *
+screen_getstr(WINDOW *w, char *prompt)
+{
+ return screen_readln(w, prompt, NULL, NULL, NULL);
+}
+
/* query user for a string and find it in a list window */
int
@@ -121,7 +121,13 @@ screen_find(screen_t *screen,
case CMD_LIST_FIND_NEXT:
case CMD_LIST_RFIND_NEXT:
if( !screen->findbuf )
- screen->findbuf=screen_getstr(screen->status_window.w, prompt);
+ screen->findbuf=screen_readln(screen->status_window.w,
+ prompt,
+ (char *) -1, //NULL,
+ &screen->find_history,
+ NULL);
+ if( !screen->findbuf || !screen->findbuf[0] )
+ return 1;
if( reversed )
retval = list_window_rfind(lw,
callback_fn,