tabbing: refresh the window also when Goto-Dir in browser was cancelled
This restores things to the way they were before commit 36ec76a
.
Apparently all those refreshes are needed in some cases after all.
master
parent
133ed4e21d
commit
30f3c53305
15
src/files.c
15
src/files.c
|
@ -2755,14 +2755,15 @@ char **cwd_tab_completion(const char *buf, bool allow_files, size_t
|
||||||
* position should be advanced. refresh_func is the function we will
|
* position should be advanced. refresh_func is the function we will
|
||||||
* call to refresh the edit window. */
|
* call to refresh the edit window. */
|
||||||
char *input_tab(char *buf, bool allow_files, size_t *place,
|
char *input_tab(char *buf, bool allow_files, size_t *place,
|
||||||
bool *lastwastab, void (*refresh_func)(void))
|
bool *lastwastab, void (*refresh_func)(void), bool *listed)
|
||||||
{
|
{
|
||||||
size_t num_matches = 0, buf_len;
|
size_t num_matches = 0, buf_len;
|
||||||
char **matches = NULL;
|
char **matches = NULL;
|
||||||
bool listed = FALSE;
|
|
||||||
|
|
||||||
assert(buf != NULL && place != NULL && *place <= strlen(buf) &&
|
assert(buf != NULL && place != NULL && *place <= strlen(buf) &&
|
||||||
lastwastab != NULL && refresh_func != NULL);
|
lastwastab != NULL && refresh_func != NULL && listed != NULL);
|
||||||
|
|
||||||
|
*listed = FALSE;
|
||||||
|
|
||||||
/* If the word starts with `~' and there is no slash in the word,
|
/* If the word starts with `~' and there is no slash in the word,
|
||||||
* then try completing this word as a username. */
|
* then try completing this word as a username. */
|
||||||
|
@ -2888,8 +2889,7 @@ char *input_tab(char *buf, bool allow_files, size_t *place,
|
||||||
}
|
}
|
||||||
|
|
||||||
wnoutrefresh(edit);
|
wnoutrefresh(edit);
|
||||||
refresh_needed = TRUE;
|
*listed = TRUE;
|
||||||
listed = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(mzero);
|
free(mzero);
|
||||||
|
@ -2897,8 +2897,9 @@ char *input_tab(char *buf, bool allow_files, size_t *place,
|
||||||
|
|
||||||
free_chararray(matches, num_matches);
|
free_chararray(matches, num_matches);
|
||||||
|
|
||||||
/* Refresh the edit window just in case a previous tab showed a list. */
|
/* When we didn't list any matches now, refresh the edit window, just
|
||||||
if (!listed)
|
* in case a previous tab showed a list, so we know where we are. */
|
||||||
|
if (!*listed)
|
||||||
refresh_func();
|
refresh_func();
|
||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
|
|
17
src/prompt.c
17
src/prompt.c
|
@ -529,7 +529,7 @@ void update_bar_if_needed(void)
|
||||||
/* Get a string of input at the statusbar prompt. */
|
/* Get a string of input at the statusbar prompt. */
|
||||||
functionptrtype get_prompt_string(int *actual, bool allow_tabs,
|
functionptrtype get_prompt_string(int *actual, bool allow_tabs,
|
||||||
#ifndef DISABLE_TABCOMP
|
#ifndef DISABLE_TABCOMP
|
||||||
bool allow_files,
|
bool allow_files, bool *listed,
|
||||||
#endif
|
#endif
|
||||||
const char *curranswer,
|
const char *curranswer,
|
||||||
#ifndef DISABLE_HISTORIES
|
#ifndef DISABLE_HISTORIES
|
||||||
|
@ -619,7 +619,7 @@ functionptrtype get_prompt_string(int *actual, bool allow_tabs,
|
||||||
#endif
|
#endif
|
||||||
if (allow_tabs)
|
if (allow_tabs)
|
||||||
answer = input_tab(answer, allow_files, &statusbar_x,
|
answer = input_tab(answer, allow_files, &statusbar_x,
|
||||||
&tabbed, refresh_func);
|
&tabbed, refresh_func, listed);
|
||||||
|
|
||||||
update_the_statusbar();
|
update_the_statusbar();
|
||||||
} else
|
} else
|
||||||
|
@ -735,7 +735,9 @@ int do_prompt(bool allow_tabs,
|
||||||
va_list ap;
|
va_list ap;
|
||||||
int retval;
|
int retval;
|
||||||
functionptrtype func;
|
functionptrtype func;
|
||||||
|
#ifndef DISABLE_TABCOMP
|
||||||
|
bool listed = FALSE;
|
||||||
|
#endif
|
||||||
/* Save a possible current statusbar x position. */
|
/* Save a possible current statusbar x position. */
|
||||||
size_t was_statusbar_x = statusbar_x;
|
size_t was_statusbar_x = statusbar_x;
|
||||||
size_t was_pww = statusbar_pww;
|
size_t was_pww = statusbar_pww;
|
||||||
|
@ -751,7 +753,7 @@ int do_prompt(bool allow_tabs,
|
||||||
|
|
||||||
func = get_prompt_string(&retval, allow_tabs,
|
func = get_prompt_string(&retval, allow_tabs,
|
||||||
#ifndef DISABLE_TABCOMP
|
#ifndef DISABLE_TABCOMP
|
||||||
allow_files,
|
allow_files, &listed,
|
||||||
#endif
|
#endif
|
||||||
curranswer,
|
curranswer,
|
||||||
#ifndef DISABLE_HISTORIES
|
#ifndef DISABLE_HISTORIES
|
||||||
|
@ -783,6 +785,13 @@ int do_prompt(bool allow_tabs,
|
||||||
fprintf(stderr, "answer = \"%s\"\n", answer);
|
fprintf(stderr, "answer = \"%s\"\n", answer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DISABLE_TABCOMP
|
||||||
|
/* If we've done tab completion, there might still be a list of
|
||||||
|
* filename matches on the edit window. Clear them off. */
|
||||||
|
if (listed)
|
||||||
|
refresh_func();
|
||||||
|
#endif
|
||||||
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -340,7 +340,7 @@ char **username_tab_completion(const char *buf, size_t *num_matches,
|
||||||
char **cwd_tab_completion(const char *buf, bool allow_files, size_t
|
char **cwd_tab_completion(const char *buf, bool allow_files, size_t
|
||||||
*num_matches, size_t buf_len);
|
*num_matches, size_t buf_len);
|
||||||
char *input_tab(char *buf, bool allow_files, size_t *place,
|
char *input_tab(char *buf, bool allow_files, size_t *place,
|
||||||
bool *lastwastab, void (*refresh_func)(void));
|
bool *lastwastab, void (*refresh_func)(void), bool *listed);
|
||||||
#endif
|
#endif
|
||||||
const char *tail(const char *path);
|
const char *tail(const char *path);
|
||||||
#ifndef DISABLE_HISTORIES
|
#ifndef DISABLE_HISTORIES
|
||||||
|
@ -532,7 +532,7 @@ void update_the_statusbar(void);
|
||||||
void update_bar_if_needed(void);
|
void update_bar_if_needed(void);
|
||||||
functionptrtype get_prompt_string(int *value, bool allow_tabs,
|
functionptrtype get_prompt_string(int *value, bool allow_tabs,
|
||||||
#ifndef DISABLE_TABCOMP
|
#ifndef DISABLE_TABCOMP
|
||||||
bool allow_files,
|
bool allow_files, bool *listed,
|
||||||
#endif
|
#endif
|
||||||
const char *curranswer,
|
const char *curranswer,
|
||||||
#ifndef DISABLE_HISTORIES
|
#ifndef DISABLE_HISTORIES
|
||||||
|
|
Loading…
Reference in New Issue