Fix wildcard pattern in file select and file find dialogs

This commit is contained in:
Slava Zanko 2009-05-07 12:53:59 +03:00
parent 09bc5434f6
commit c8dd6dbbfd
4 changed files with 31 additions and 6 deletions

View File

@ -7,7 +7,7 @@ SUBDIRS = intl po m4 vfs edit src lib doc syntax
EXTRA_DIST = FAQ HACKING INSTALL.FAST MAINTAINERS README.QNX TODO pkginfo.in prototype.in mc.qpg mc.spec EXTRA_DIST = FAQ HACKING INSTALL.FAST MAINTAINERS README.QNX TODO pkginfo.in prototype.in mc.qpg mc.spec
noinst_DATA = mc.spec mc.qpg pkginfo prototype noinst_DATA = mc.spec mc.qpg pkginfo prototype
dist_noinst_SCRIPTS = build-glib1.sh build-glib2.sh dist_noinst_SCRIPTS = build-glib2.sh
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4

View File

@ -487,7 +487,7 @@ void reverse_selection_cmd (void)
static void static void
select_unselect_cmd (const char *title, const char *history_name, int cmd) select_unselect_cmd (const char *title, const char *history_name, int cmd)
{ {
char *reg_exp, *reg_exp_t; char *reg_exp, *reg_exp_t, *srch_regexp;
int i; int i;
int c; int c;
int dirflag = 0; int dirflag = 0;
@ -511,6 +511,7 @@ select_unselect_cmd (const char *title, const char *history_name, int cmd)
dirflag = 1; dirflag = 1;
reg_exp_t[strlen (reg_exp_t) - 1] = 0; reg_exp_t[strlen (reg_exp_t) - 1] = 0;
} }
srch_regexp = g_strdup_printf("{%s}",reg_exp_t);
for (i = 0; i < current_panel->count; i++) { for (i = 0; i < current_panel->count; i++) {
if (!strcmp (current_panel->dir.list[i].fname, "..")) if (!strcmp (current_panel->dir.list[i].fname, ".."))
@ -522,13 +523,15 @@ select_unselect_cmd (const char *title, const char *history_name, int cmd)
if (dirflag) if (dirflag)
continue; continue;
} }
if (!mc_search(reg_exp_t, current_panel->dir.list[i].fname, MC_SEARCH_T_GLOB)) if (!mc_search(srch_regexp, current_panel->dir.list[i].fname, MC_SEARCH_T_GLOB)){
return; continue;
}
if (c) { if (c) {
do_file_mark (current_panel, i, cmd); do_file_mark (current_panel, i, cmd);
} }
} }
g_free(srch_regexp);
g_free (reg_exp); g_free (reg_exp);
} }

View File

@ -932,7 +932,7 @@ file_mask_dialog (FileOpContext *ctx, FileOperation operation, const char *text,
} }
if (source_easy_patterns){ if (source_easy_patterns){
source_mask = g_strdup_printf("(%s)",orig_mask); source_mask = g_strdup_printf("{%s}",orig_mask);
ctx->search_handle = mc_search_new(source_mask,-1); ctx->search_handle = mc_search_new(source_mask,-1);
g_free(source_mask); g_free(source_mask);
} }

View File

@ -67,11 +67,33 @@ mc_search__glob_translate_to_regex (gchar * str, gsize * len)
continue; continue;
} }
break; break;
case ',':
if (!mc_search__regex_is_char_escaped (str, &(str[loop]) - 1)) {
g_string_append (buff, "|");
loop++;
continue;
}
break;
case '{':
if (!mc_search__regex_is_char_escaped (str, &(str[loop]) - 1)) {
g_string_append (buff, "(");
loop++;
continue;
}
break;
case '}':
if (!mc_search__regex_is_char_escaped (str, &(str[loop]) - 1)) {
g_string_append (buff, ")");
loop++;
continue;
}
break;
case '\\': case '\\':
case '+': case '+':
case '.': case '.':
case '|':
case '$': case '$':
case '(':
case ')':
case '^': case '^':
case '-': case '-':
g_string_append_c (buff, '\\'); g_string_append_c (buff, '\\');