filechooser: Put event controllers into ui file
authorBenjamin Otte <otte@redhat.com>
Fri, 9 Mar 2018 05:08:31 +0000 (06:08 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 26 Apr 2018 15:59:41 +0000 (17:59 +0200)
gtk/gtkfilechooserwidget.c
gtk/ui/gtkfilechooserwidget.ui

index 169762d008c9aa7d630e8b2bb8343d4ec66e210c..aa4c3966d10c24935533dd1de17fa9eb3fa2309e 100644 (file)
@@ -251,10 +251,6 @@ struct _GtkFileChooserWidgetPrivate {
   GtkWidget *rename_file_popover;
   GFile *rename_file_source_file;
 
-  GtkGesture *long_press_gesture;
-  GtkGesture *multipress_gesture;
-  GtkEventController *key_controller;
-
   GtkFileSystemModel *browse_files_model;
   char *browse_files_last_selected_name;
 
@@ -3552,10 +3548,6 @@ gtk_file_chooser_widget_dispose (GObject *object)
       priv->box = NULL;
     }
 
-  g_clear_object (&priv->long_press_gesture);
-  g_clear_object (&priv->multipress_gesture);
-  g_clear_object (&priv->key_controller);
-
   G_OBJECT_CLASS (gtk_file_chooser_widget_parent_class)->dispose (object);
 }
 
@@ -8410,6 +8402,9 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
   gtk_widget_class_bind_template_callback (widget_class, rename_file_name_changed);
   gtk_widget_class_bind_template_callback (widget_class, rename_file_rename_clicked);
   gtk_widget_class_bind_template_callback (widget_class, rename_file_end);
+  gtk_widget_class_bind_template_callback (widget_class, multi_press_cb);
+  gtk_widget_class_bind_template_callback (widget_class, long_press_cb);
+  gtk_widget_class_bind_template_callback (widget_class, key_press_cb);
 
   gtk_widget_class_set_css_name (widget_class, I_("filechooser"));
 }
@@ -8546,20 +8541,6 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl)
 
   priv->bookmarks_manager = _gtk_bookmarks_manager_new (NULL, NULL);
 
-  priv->long_press_gesture = gtk_gesture_long_press_new (priv->browse_files_tree_view);
-  gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (priv->long_press_gesture), TRUE);
-  g_signal_connect (priv->long_press_gesture, "pressed",
-                    G_CALLBACK (long_press_cb), impl);
-
-  priv->multipress_gesture = gtk_gesture_multi_press_new (priv->browse_files_tree_view);
-  gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (priv->multipress_gesture), GDK_BUTTON_SECONDARY);
-  g_signal_connect (priv->multipress_gesture, "pressed",
-                    G_CALLBACK (multi_press_cb), impl);
-
-  priv->key_controller = gtk_event_controller_key_new (priv->browse_files_tree_view);
-  g_signal_connect (priv->key_controller, "key-pressed",
-                    G_CALLBACK (key_press_cb), impl);
-
   /* Setup various attributes and callbacks in the UI
    * which cannot be done with GtkBuilder
    */
index a034d8b67e4c02d475a1029326d8b10c1c9a4cfd..a82acda0d9aa0b18003e03518c204a95555bdad0 100644 (file)
                                             <property name="AtkObject::accessible-name" translatable="yes">Files</property>
                                           </object>
                                         </child>
+                                        <child>
+                                          <object class="GtkGestureLongPress">
+                                            <property name="touch-only">True</property>
+                                            <signal name="pressed" handler="long_press_cb" swapped="no"/>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkGestureMultiPress">
+                                            <property name="button">3</property>
+                                            <signal name="pressed" handler="multi_press_cb" swapped="no"/>
+                                          </object>
+                                        </child>
+                                        <child>
+                                          <object class="GtkEventControllerKey">
+                                            <signal name="key-pressed" handler="key_press_cb" swapped="no"/>
+                                          </object>
+                                        </child>
                                         <signal name="drag-data-received" handler="file_list_drag_data_received_cb" swapped="no"/>
                                         <signal name="drag-drop" handler="file_list_drag_drop_cb" swapped="no"/>
                                         <signal name="drag-begin" handler="file_list_drag_begin_cb" swapped="no"/>