diff --git a/lcl/interfaces/gtk2/gtk2wsdialogs.pp b/lcl/interfaces/gtk2/gtk2wsdialogs.pp index 59447a15c7..de8d6208ee 100644 --- a/lcl/interfaces/gtk2/gtk2wsdialogs.pp +++ b/lcl/interfaces/gtk2/gtk2wsdialogs.pp @@ -857,7 +857,10 @@ begin for k := 0 to MaskList.Count - 1 do begin aMask:=UTF8ToSys(MaskList.Strings[k]); - gtk_file_filter_add_pattern(GtkFilter, PChar(aMask)); + if pos('/',aMask)>0 then + gtk_file_filter_add_mime_type(GtkFilter, PChar(aMask)) + else + gtk_file_filter_add_pattern(GtkFilter, PChar(aMask)); end; gtk_file_filter_set_name(GtkFilter, FilterEntry.Description); diff --git a/lcl/interfaces/gtk3/gtk3wsdialogs.pp b/lcl/interfaces/gtk3/gtk3wsdialogs.pp index 000515f92f..a16d6a0529 100644 --- a/lcl/interfaces/gtk3/gtk3wsdialogs.pp +++ b/lcl/interfaces/gtk3/gtk3wsdialogs.pp @@ -1108,6 +1108,9 @@ begin MaskList.DelimitedText := FilterEntry.Mask; for k := 0 to MaskList.Count - 1 do + if pos('/',MaskList.Strings[k])>0 then + gtk_file_filter_add_mime_type(GtkFilter, PgChar(MaskList.Strings[k])) + else gtk_file_filter_add_pattern(GtkFilter, PgChar(MaskList.Strings[k])); gtk_file_filter_set_name(GtkFilter, PgChar(FilterEntry.Description));