# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1614847214 0 # Node ID 7b04d1b9f2ebf816b29fa4b01d00e52abd12f1d7 # Parent a15bb7a2496e6b450d4a849a5abc0d8c1651e3b0 GTK4: Fix warning message from dW_file_browse() and code cleanup. diff -r a15bb7a2496e -r 7b04d1b9f2eb gtk4/dw.c --- a/gtk4/dw.c Thu Mar 04 03:38:53 2021 +0000 +++ b/gtk4/dw.c Thu Mar 04 08:40:14 2021 +0000 @@ -10011,10 +10011,10 @@ GtkFileFilter *filter2 = NULL; gchar *button = NULL; char *filename = NULL; - char buf[1000]; + char buf[1001] = {0}; DWDialog *tmp = dw_dialog_new(NULL); - switch (flags ) + switch(flags) { case DW_DIRECTORY_OPEN: action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; @@ -10035,25 +10035,25 @@ if(button) { - filew = gtk_file_chooser_dialog_new ( title, - NULL, - action, - _("_Cancel"), GTK_RESPONSE_CANCEL, - button, GTK_RESPONSE_ACCEPT, - NULL); + filew = gtk_file_chooser_dialog_new(title, + NULL, + action, + _("_Cancel"), GTK_RESPONSE_CANCEL, + button, GTK_RESPONSE_ACCEPT, + NULL); if(ext) { filter1 = gtk_file_filter_new(); - sprintf( buf, "*.%s", ext ); - gtk_file_filter_add_pattern( filter1, (gchar *)buf ); - sprintf( buf, "\"%s\" files", ext ); - gtk_file_filter_set_name( filter1, (gchar *)buf ); + snprintf(buf, 1000, "*.%s", ext); + gtk_file_filter_add_pattern( filter1, (gchar *)buf); + snprintf(buf, 1000, "\"%s\" files", ext ); + gtk_file_filter_set_name(filter1, (gchar *)buf); filter2 = gtk_file_filter_new(); - gtk_file_filter_add_pattern( filter2, (gchar *)"*" ); - gtk_file_filter_set_name( filter2, (gchar *)"All Files" ); - gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( filew ), filter1 ); - gtk_file_chooser_add_filter( GTK_FILE_CHOOSER( filew ), filter2 ); + gtk_file_filter_add_pattern(filter2, (gchar *)"*"); + gtk_file_filter_set_name(filter2, (gchar *)"All Files"); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER( filew ), filter1); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER( filew ), filter2); } if(defpath) @@ -10064,8 +10064,10 @@ if(path) { /* If the path is a directory... set the current folder */ - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filew), path, NULL); - gtk_file_chooser_set_file(GTK_FILE_CHOOSER(filew), path, NULL); + if(g_file_query_file_type(path, G_FILE_QUERY_INFO_NONE, NULL) == G_FILE_TYPE_DIRECTORY) + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filew), path, NULL); + else + gtk_file_chooser_set_file(GTK_FILE_CHOOSER(filew), path, NULL); g_object_unref(G_OBJECT(path)); }