[gtk+] Simplify GtkActionHelper



commit 7291d3e7801a8ebe4e720a5f3e5a4fe931abbb5b
Author: Ryan Lortie <desrt desrt ca>
Date:   Wed Jan 8 18:20:27 2014 -0500

    Simplify GtkActionHelper
    
    Now that the last GMenuModel-based user of GtkActionHelper is gone, we
    can substantially simplify it.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=721836

 gtk/gtkactionhelper.c |  149 ++++++------------------------------------------
 gtk/gtkactionhelper.h |   12 ----
 2 files changed, 19 insertions(+), 142 deletions(-)
---
diff --git a/gtk/gtkactionhelper.c b/gtk/gtkactionhelper.c
index e954e8a..3dca4c9 100644
--- a/gtk/gtkactionhelper.c
+++ b/gtk/gtkactionhelper.c
@@ -52,7 +52,6 @@ struct _GtkActionHelper
 {
   GObject parent_instance;
 
-  GtkApplication *application;
   GtkWidget *widget;
 
   GtkActionHelperGroup *group;
@@ -62,7 +61,6 @@ struct _GtkActionHelper
 
   GVariant *target;
 
-  GtkActionHelperRole role;
   gboolean can_activate;
   gboolean enabled;
   gboolean active;
@@ -75,7 +73,6 @@ enum
   PROP_0,
   PROP_ENABLED,
   PROP_ACTIVE,
-  PROP_ROLE,
   N_PROPS
 };
 
@@ -92,39 +89,25 @@ gtk_action_helper_report_change (GtkActionHelper *helper,
 {
   helper->reporting++;
 
-  if (!helper->application)
+  switch (prop_id)
     {
-      switch (prop_id)
-        {
-        case PROP_ENABLED:
-          gtk_widget_set_sensitive (GTK_WIDGET (helper->widget), helper->enabled);
-          break;
-
-        case PROP_ACTIVE:
-          {
-            GParamSpec *pspec;
-
-            pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (helper->widget), "active");
-
-            if (pspec && G_PARAM_SPEC_VALUE_TYPE (pspec) == G_TYPE_BOOLEAN)
-              g_object_set (G_OBJECT (helper->widget), "active", helper->active, NULL);
-          }
-          break;
+    case PROP_ENABLED:
+      gtk_widget_set_sensitive (GTK_WIDGET (helper->widget), helper->enabled);
+      break;
 
-        case PROP_ROLE:
-          {
-            GParamSpec *pspec;
+    case PROP_ACTIVE:
+      {
+        GParamSpec *pspec;
 
-            pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (helper->widget), "action-role");
+        pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (helper->widget), "active");
 
-            if (pspec && G_PARAM_SPEC_VALUE_TYPE (pspec) == G_TYPE_UINT)
-              g_object_set (G_OBJECT (helper->widget), "action-role", helper->role, NULL);
-          }
-          break;
+        if (pspec && G_PARAM_SPEC_VALUE_TYPE (pspec) == G_TYPE_BOOLEAN)
+          g_object_set (G_OBJECT (helper->widget), "active", helper->active, NULL);
+      }
+      break;
 
-        default:
-          g_assert_not_reached ();
-        }
+    default:
+      g_assert_not_reached ();
     }
 
   g_object_notify_by_pspec (G_OBJECT (helper), gtk_action_helper_pspecs[prop_id]);
@@ -149,16 +132,10 @@ gtk_action_helper_action_added (GtkActionHelper    *helper,
   helper->enabled = enabled;
 
   if (helper->target != NULL && state != NULL)
-    {
-      helper->active = g_variant_equal (state, helper->target);
-      helper->role = GTK_ACTION_HELPER_ROLE_RADIO;
-    }
+    helper->active = g_variant_equal (state, helper->target);
 
   else if (state != NULL && g_variant_is_of_type (state, G_VARIANT_TYPE_BOOLEAN))
-    {
-      helper->active = g_variant_get_boolean (state);
-      helper->role = GTK_ACTION_HELPER_ROLE_TOGGLE;
-    }
+    helper->active = g_variant_get_boolean (state);
 
   if (should_emit_signals)
     {
@@ -167,9 +144,6 @@ gtk_action_helper_action_added (GtkActionHelper    *helper,
 
       if (helper->active)
         gtk_action_helper_report_change (helper, PROP_ACTIVE);
-
-      if (helper->role)
-        gtk_action_helper_report_change (helper, PROP_ROLE);
     }
 }
 
@@ -192,12 +166,6 @@ gtk_action_helper_action_removed (GtkActionHelper *helper)
       helper->active = FALSE;
       gtk_action_helper_report_change (helper, PROP_ACTIVE);
     }
-
-  if (helper->role)
-    {
-      helper->role = GTK_ACTION_HELPER_ROLE_NORMAL;
-      gtk_action_helper_report_change (helper, PROP_ROLE);
-    }
 }
 
 static void
@@ -254,10 +222,6 @@ gtk_action_helper_get_property (GObject *object, guint prop_id,
       g_value_set_boolean (value, helper->active);
       break;
 
-    case PROP_ROLE:
-      g_value_set_uint (value, helper->role);
-      break;
-
     default:
       g_assert_not_reached ();
     }
@@ -268,16 +232,6 @@ gtk_action_helper_finalize (GObject *object)
 {
   GtkActionHelper *helper = GTK_ACTION_HELPER (object);
 
-  if (helper->application)
-    {
-      g_signal_handlers_disconnect_by_data (helper->application, helper);
-      g_object_unref (helper->action_context);
-      g_object_unref (helper->application);
-
-      if (helper->widget)
-          g_object_unref (helper->widget);
-    }
-
   g_free (helper->action_name);
 
   if (helper->target)
@@ -339,8 +293,6 @@ gtk_action_helper_class_init (GtkActionHelperClass *class)
                                                                  G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
   gtk_action_helper_pspecs[PROP_ACTIVE] = g_param_spec_boolean ("active", "active", "active", FALSE,
                                                                 G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-  gtk_action_helper_pspecs[PROP_ROLE] = g_param_spec_uint ("role", "role", "role", 0, 2, 0,
-                                                           G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
   g_object_class_install_properties (class, N_PROPS, gtk_action_helper_pspecs);
 }
 
@@ -395,57 +347,11 @@ gtk_action_helper_new (GtkActionable *widget)
   return helper;
 }
 
-static void
-gtk_action_helper_active_window_changed (GObject    *object,
-                                         GParamSpec *pspec,
-                                         gpointer    user_data)
-{
-  GtkActionHelper *helper = user_data;
-  GtkActionMuxer *parent;
-
-  if (helper->widget)
-    g_object_unref (helper->widget);
-
-  helper->widget = GTK_WIDGET (gtk_application_get_active_window (helper->application));
-
-  if (helper->widget)
-    {
-      parent = g_object_ref (_gtk_widget_get_action_muxer (GTK_WIDGET (helper->widget)));
-      g_object_ref (helper->widget);
-    }
-  else
-    {
-      parent = gtk_action_muxer_new ();
-      gtk_action_muxer_insert (parent, "app", G_ACTION_GROUP (helper->application));
-    }
-
-  gtk_action_muxer_set_parent (helper->action_context, parent);
-  g_object_unref (parent);
-}
-
-GtkActionHelper *
-gtk_action_helper_new_with_application (GtkApplication *application)
-{
-  GtkActionHelper *helper;
-
-  g_return_val_if_fail (GTK_IS_APPLICATION (application), NULL);
-
-  helper = g_object_new (GTK_TYPE_ACTION_HELPER, NULL);
-  helper->application = g_object_ref (application);
-
-  helper->action_context = gtk_action_muxer_new ();
-  g_signal_connect (application, "notify::active-window", G_CALLBACK 
(gtk_action_helper_active_window_changed), helper);
-  gtk_action_helper_active_window_changed (NULL, NULL, helper);
-
-  return helper;
-}
-
 void
 gtk_action_helper_set_action_name (GtkActionHelper *helper,
                                    const gchar     *action_name)
 {
   gboolean was_enabled, was_active;
-  GtkActionHelperRole old_role;
   const GVariantType *parameter_type;
   gboolean enabled;
   GVariant *state;
@@ -472,7 +378,6 @@ gtk_action_helper_set_action_name (GtkActionHelper *helper,
    */
   was_enabled = helper->enabled;
   was_active = helper->active;
-  old_role = helper->role;
 
   if (g_action_group_query_action (G_ACTION_GROUP (helper->action_context), helper->action_name,
                                    &enabled, &parameter_type, NULL, NULL, &state))
@@ -483,9 +388,7 @@ gtk_action_helper_set_action_name (GtkActionHelper *helper,
         g_variant_unref (state);
     }
   else
-    {
-      helper->enabled = FALSE;
-    }
+    helper->enabled = FALSE;
 
   /* Send the notifies for the properties that changed.
    *
@@ -498,11 +401,7 @@ gtk_action_helper_set_action_name (GtkActionHelper *helper,
   if (helper->active != was_active)
     gtk_action_helper_report_change (helper, PROP_ACTIVE);
 
-  if (helper->role != old_role)
-    gtk_action_helper_report_change (helper, PROP_ROLE);
-
-  if (!helper->application)
-    g_object_notify (G_OBJECT (helper->widget), "action-name");
+  g_object_notify (G_OBJECT (helper->widget), "action-name");
 }
 
 /*< private >
@@ -578,8 +477,7 @@ gtk_action_helper_set_action_target_value (GtkActionHelper *helper,
   if (helper->active != was_active)
     gtk_action_helper_report_change (helper, PROP_ACTIVE);
 
-  if (!helper->application)
-    g_object_notify (G_OBJECT (helper->widget), "action-target");
+  g_object_notify (G_OBJECT (helper->widget), "action-target");
 }
 
 const gchar *
@@ -600,15 +498,6 @@ gtk_action_helper_get_action_target_value (GtkActionHelper *helper)
   return helper->target;
 }
 
-GtkActionHelperRole
-gtk_action_helper_get_role (GtkActionHelper *helper)
-{
-  if (helper == NULL)
-    return GTK_ACTION_HELPER_ROLE_NORMAL;
-
-  return helper->role;
-}
-
 gboolean
 gtk_action_helper_get_enabled (GtkActionHelper *helper)
 {
diff --git a/gtk/gtkactionhelper.h b/gtk/gtkactionhelper.h
index bc54357..7a3b334 100644
--- a/gtk/gtkactionhelper.h
+++ b/gtk/gtkactionhelper.h
@@ -31,13 +31,6 @@
 
 typedef struct _GtkActionHelper                             GtkActionHelper;
 
-typedef enum
-{
-  GTK_ACTION_HELPER_ROLE_NORMAL,
-  GTK_ACTION_HELPER_ROLE_TOGGLE,
-  GTK_ACTION_HELPER_ROLE_RADIO
-} GtkActionHelperRole;
-
 G_GNUC_INTERNAL
 GType                   gtk_action_helper_get_type                      (void);
 
@@ -45,9 +38,6 @@ G_GNUC_INTERNAL
 GtkActionHelper *       gtk_action_helper_new                           (GtkActionable   *widget);
 
 G_GNUC_INTERNAL
-GtkActionHelper *       gtk_action_helper_new_with_application          (GtkApplication  *application);
-
-G_GNUC_INTERNAL
 void                    gtk_action_helper_set_action_name               (GtkActionHelper *helper,
                                                                          const gchar     *action_name);
 G_GNUC_INTERNAL
@@ -59,8 +49,6 @@ G_GNUC_INTERNAL
 GVariant *              gtk_action_helper_get_action_target_value       (GtkActionHelper *helper);
 
 G_GNUC_INTERNAL
-GtkActionHelperRole     gtk_action_helper_get_role                      (GtkActionHelper *helper);
-G_GNUC_INTERNAL
 gboolean                gtk_action_helper_get_enabled                   (GtkActionHelper *helper);
 G_GNUC_INTERNAL
 gboolean                gtk_action_helper_get_active                    (GtkActionHelper *helper);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]