]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkfilesel.c
A couple of compiler warning fixes, GtkCList signal changes, changed
[~andy/gtk] / gtk / gtkfilesel.c
index 6ac0326598625cd44689cac306edc705381b92f8..2001e2d937391591021e6d0de0096f04ba64fb85 100644 (file)
@@ -286,15 +286,27 @@ static gint gtk_file_selection_key_press     (GtkWidget             *widget,
 static void gtk_file_selection_file_button (GtkWidget *widget,
                                            gint row, 
                                            gint column, 
-                                           GdkEventButton *bevent,
+                                           gint button,
                                            gpointer user_data);
 
+static void gtk_file_selection_file_button_double (GtkWidget *widget,
+                                                  gint row, 
+                                                  gint column, 
+                                                  gint button,
+                                                  gpointer user_data);
+
 static void gtk_file_selection_dir_button (GtkWidget *widget,
                                           gint row, 
                                           gint column, 
-                                          GdkEventButton *bevent,
+                                          gint button,
                                           gpointer data);
 
+static void gtk_file_selection_dir_button_double (GtkWidget *widget,
+                                                 gint row, 
+                                                 gint column, 
+                                                 gint button,
+                                                 gpointer data);
+
 static void gtk_file_selection_populate      (GtkFileSelection      *fs,
                                              gchar                 *rel_path,
                                              gint                   try_complete);
@@ -428,6 +440,9 @@ gtk_file_selection_init (GtkFileSelection *filesel)
   gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "select_row",
                      (GtkSignalFunc) gtk_file_selection_dir_button, 
                      (gpointer) filesel);
+  gtk_signal_connect (GTK_OBJECT (filesel->dir_list), "mouse_double_click",
+                     (GtkSignalFunc) gtk_file_selection_dir_button_double, 
+                     (gpointer) filesel);
   gtk_clist_set_policy (GTK_CLIST (filesel->dir_list), GTK_POLICY_ALWAYS, GTK_POLICY_AUTOMATIC);
   gtk_clist_column_titles_passive (GTK_CLIST (filesel->dir_list));
   gtk_container_border_width (GTK_CONTAINER (filesel->dir_list), 5);
@@ -440,6 +455,9 @@ gtk_file_selection_init (GtkFileSelection *filesel)
   gtk_signal_connect (GTK_OBJECT (filesel->file_list), "select_row",
                      (GtkSignalFunc) gtk_file_selection_file_button, 
                      (gpointer) filesel);
+  gtk_signal_connect (GTK_OBJECT (filesel->file_list), "mouse_double_click",
+                     (GtkSignalFunc) gtk_file_selection_file_button_double, 
+                     (gpointer) filesel);
   gtk_clist_set_policy (GTK_CLIST (filesel->file_list), GTK_POLICY_ALWAYS, GTK_POLICY_AUTOMATIC);
   gtk_clist_column_titles_passive (GTK_CLIST (filesel->file_list));
   gtk_container_border_width (GTK_CONTAINER (filesel->file_list), 5);
@@ -1092,10 +1110,10 @@ gtk_file_selection_update_history_menu (GtkFileSelection *fs,
 
 static void
 gtk_file_selection_file_button (GtkWidget *widget,
-                              gint row, 
-                              gint column, 
-                              GdkEventButton *bevent,
-                              gpointer user_data)
+                               gint row, 
+                               gint column, 
+                               gint button,
+                               gpointer user_data)
 {
   GtkFileSelection *fs = NULL;
   gchar *filename;
@@ -1108,29 +1126,37 @@ gtk_file_selection_file_button (GtkWidget *widget,
 
   filename = gtk_clist_get_row_data (GTK_CLIST (fs->file_list), row);
   
-  if (bevent && filename)
-    {
-      switch (bevent->type)
-       {
-       case GDK_BUTTON_PRESS:
-         gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
-         break;
-         
-       case GDK_2BUTTON_PRESS:
-         gtk_button_clicked (GTK_BUTTON (fs->ok_button));
-         break;
-         
-       default:
-         break;
-       }
-    }
+  if (filename)
+    gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+}
+
+static void
+gtk_file_selection_file_button_double (GtkWidget *widget,
+                                      gint row, 
+                                      gint column, 
+                                      gint button,
+                                      gpointer user_data)
+{
+  GtkFileSelection *fs = NULL;
+  gchar *filename;
+  
+  g_return_if_fail (GTK_IS_CLIST (widget));
+
+  fs = user_data;
+  g_return_if_fail (fs != NULL);
+  g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+  filename = gtk_clist_get_row_data (GTK_CLIST (fs->file_list), row);
+  
+  if (filename)
+    gtk_button_clicked (GTK_BUTTON (fs->ok_button));
 }
 
 static void
 gtk_file_selection_dir_button (GtkWidget *widget,
                               gint row, 
                               gint column, 
-                              GdkEventButton *bevent,
+                              gint button,
                               gpointer user_data)
 {
   GtkFileSelection *fs = NULL;
@@ -1144,22 +1170,30 @@ gtk_file_selection_dir_button (GtkWidget *widget,
 
   filename = gtk_clist_get_row_data (GTK_CLIST (fs->dir_list), row);
   
-  if (bevent && filename) {
+  if (filename)
+    gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
+}
+
+static void
+gtk_file_selection_dir_button_double (GtkWidget *widget,
+                                     gint row, 
+                                     gint column, 
+                                     gint button,
+                                     gpointer user_data)
+{
+  GtkFileSelection *fs = NULL;
+  gchar *filename;
   
-    switch (bevent->type)
-      {
-      case GDK_BUTTON_PRESS:
-       gtk_entry_set_text (GTK_ENTRY (fs->selection_entry), filename);
-       break;
-      
-      case GDK_2BUTTON_PRESS:
-       gtk_file_selection_populate (fs, filename, FALSE);
-       break;
-       
-      default:
-       break;
-      }
-  }
+  g_return_if_fail (GTK_IS_CLIST (widget));
+
+  fs = GTK_FILE_SELECTION (user_data);
+  g_return_if_fail (fs != NULL);
+  g_return_if_fail (GTK_IS_FILE_SELECTION (fs));
+
+  filename = gtk_clist_get_row_data (GTK_CLIST (fs->dir_list), row);
+  
+  if (filename)
+    gtk_file_selection_populate (fs, filename, FALSE);
 }
 
 static void