padcontroller: Port to new API model
authorBenjamin Otte <otte@redhat.com>
Sat, 10 Mar 2018 18:10:35 +0000 (19:10 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Thu, 26 Apr 2018 15:59:42 +0000 (17:59 +0200)
demos/gtk-demo/event_axes.c
gtk/gtkpadcontroller.c
gtk/gtkpadcontroller.h

index 88d248f13ddf2b28fc7bdb5873c7509dec164282..879400059733231c7fb3c07caf9ad73733570cc9 100644 (file)
@@ -581,8 +581,7 @@ init_pad_controller (GtkWidget *window,
   gint i;
 
   action_group = g_simple_action_group_new ();
-  pad_controller = gtk_pad_controller_new (GTK_WINDOW (window),
-                                           G_ACTION_GROUP (action_group),
+  pad_controller = gtk_pad_controller_new (G_ACTION_GROUP (action_group),
                                            NULL);
 
   for (i = 0; i < G_N_ELEMENTS (pad_actions); i++)
@@ -607,8 +606,7 @@ init_pad_controller (GtkWidget *window,
 
   gtk_pad_controller_set_action_entries (pad_controller, pad_actions,
                                          G_N_ELEMENTS (pad_actions));
-  g_object_set_data_full (G_OBJECT (window), "pad-controller",
-                          pad_controller, g_object_unref);
+  gtk_widget_add_controller (window, GTK_EVENT_CONTROLLER (pad_controller));
 
   g_object_unref (action_group);
 }
index 6c102c5e3e183b56fc9a5bd79685ee6d5bfdfa66..e99b9bc87674b2a643549f840b8c8cdb616209ff 100644 (file)
@@ -59,7 +59,7 @@
  *   g_signal_connect (action, "activate", on_invert_selection_activated, NULL);
  *   g_action_map_add_action (G_ACTION_MAP (action_group), action);
  *   …
- *   pad_controller = gtk_pad_controller_new (window, action_group, NULL);
+ *   pad_controller = gtk_pad_controller_new (action_group, NULL);
  * ]|
  *
  * The actions belonging to rings/strips will be activated with a parameter
@@ -387,35 +387,34 @@ gtk_pad_controller_init (GtkPadController *controller)
 
 /**
  * gtk_pad_controller_new:
- * @window: a #GtkWindow
  * @group: #GActionGroup to trigger actions from
  * @pad: (nullable): A %GDK_SOURCE_TABLET_PAD device, or %NULL to handle all pads
  *
  * Creates a new #GtkPadController that will associate events from @pad to
  * actions. A %NULL pad may be provided so the controller manages all pad devices
  * generically, it is discouraged to mix #GtkPadController objects with %NULL
- * and non-%NULL @pad argument on the same @window, as execution order is not
- * guaranteed.
+ * and non-%NULL @pad argument on the same toplevel window, as execution order
+ * is not guaranteed.
  *
  * The #GtkPadController is created with no mapped actions. In order to map pad
  * events to actions, use gtk_pad_controller_set_action_entries() or
  * gtk_pad_controller_set_action().
  *
+ * Be aware that pad events will only be delivered to #GtkWindows, so adding a pad
+ * controller to any other type of widget will not have an effect.
+ *
  * Returns: A newly created #GtkPadController
  **/
 GtkPadController *
-gtk_pad_controller_new (GtkWindow    *window,
-                        GActionGroup *group,
+gtk_pad_controller_new (GActionGroup *group,
                         GdkDevice    *pad)
 {
-  g_return_val_if_fail (GTK_IS_WINDOW (window), NULL);
   g_return_val_if_fail (G_IS_ACTION_GROUP (group), NULL);
   g_return_val_if_fail (!pad || GDK_IS_DEVICE (pad), NULL);
   g_return_val_if_fail (!pad || gdk_device_get_source (pad) == GDK_SOURCE_TABLET_PAD, NULL);
 
   return g_object_new (GTK_TYPE_PAD_CONTROLLER,
                        "propagation-phase", GTK_PHASE_CAPTURE,
-                       "widget", window,
                        "action-group", group,
                        "pad", pad,
                        NULL);
index 0383026a240963e524c2fab8476785be67b418ca..0fabc4a14656d8e3b8a798fe6afd37e74ca0958d 100644 (file)
@@ -78,8 +78,7 @@ GDK_AVAILABLE_IN_ALL
 GType gtk_pad_controller_get_type           (void) G_GNUC_CONST;
 
 GDK_AVAILABLE_IN_ALL
-GtkPadController *gtk_pad_controller_new    (GtkWindow        *window,
-                                             GActionGroup     *group,
+GtkPadController *gtk_pad_controller_new    (GActionGroup     *group,
                                              GdkDevice        *pad);
 
 GDK_AVAILABLE_IN_ALL