# HG changeset patch # User Bram Moolenaar # Date 1341918771 -7200 # Node ID 0e06193d4bd7be03924dd9c6251a64c6c6adf78d # Parent 906c91f4fae88bdadbf198c0e5febbbe702d9dc8 updated for version 7.3.592 Problem: Vim on GTK does not support g:browsefilter. Solution: Add a GtkFileFilter to the file chooser. (Christian Brabandt) diff --git a/src/gui_gtk.c b/src/gui_gtk.c --- a/src/gui_gtk.c +++ b/src/gui_gtk.c @@ -840,7 +840,7 @@ gui_mch_browse(int saving UNUSED, char_u *dflt, char_u *ext UNUSED, char_u *initdir, - char_u *filter UNUSED) + char_u *filter) { #ifdef USE_FILE_CHOOSER GtkWidget *fc; @@ -848,6 +848,7 @@ gui_mch_browse(int saving UNUSED, char_u dirbuf[MAXPATHL]; guint log_handler; const gchar *domain = "Gtk"; + GtkFileFilter *gfilter; title = CONVERT_TO_UTF8(title); @@ -879,6 +880,45 @@ gui_mch_browse(int saving UNUSED, NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(fc), (const gchar *)dirbuf); + + if (filter != NULL && *filter != NUL) + { + int i = 0; + char_u *patt; + char_u *p = filter; + + gfilter = gtk_file_filter_new(); + patt = alloc(STRLEN(filter)); + while (p != NULL && *p != NUL) + { + if (*p == '\n' || *p == ';' || *p == '\t') + { + STRNCPY(patt, filter, i); + patt[i] = '\0'; + if (*p == '\t') + gtk_file_filter_set_name(gfilter, (gchar *)patt); + else + { + gtk_file_filter_add_pattern(gfilter, (gchar *)patt); + if (*p == '\n') + { + gtk_file_chooser_add_filter((GtkFileChooser *)fc, + gfilter); + if (*(p + 1) != NUL) + gfilter = gtk_file_filter_new(); + } + } + filter = ++p; + i = 0; + } + else + { + p++; + i++; + } + } + vim_free(patt); + } if (saving && dflt != NULL && *dflt != NUL) gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(fc), (char *)dflt); @@ -1304,7 +1344,7 @@ gui_mch_dialog(int type, /* type of gtk_widget_show(entry); /* Make Enter work like pressing OK. */ - gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); + gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); text = CONVERT_TO_UTF8(textfield); gtk_entry_set_text(GTK_ENTRY(entry), (const char *)text); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -715,6 +715,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 592, +/**/ 591, /**/ 590,