changeset 2346:7b04d1b9f2eb

GTK4: Fix warning message from dW_file_browse() and code cleanup.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 04 Mar 2021 08:40:14 +0000
parents a15bb7a2496e
children e5d4c86a0c93
files gtk4/dw.c
diffstat 1 files changed, 20 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- 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));
          }