[gtk+] GtkActionHelper: add some debugging output



commit 16e02850c10d2edc71ceccac32ce62211a89be60
Author: Ryan Lortie <desrt desrt ca>
Date:   Wed Jul 30 12:00:55 2014 +0200

    GtkActionHelper: add some debugging output
    
    Introduce a new debug category "actions" and write some messages from
    GtkActionHelper about if we can find the actions or not.
    
    We will probably soon want to add some similar messages to
    GtkMenuTrackerItem.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=733965

 gtk/gtkactionhelper.c |   34 ++++++++++++++++++++++++++++++++--
 gtk/gtkdebug.h        |    3 ++-
 gtk/gtkmain.c         |    3 ++-
 3 files changed, 36 insertions(+), 4 deletions(-)
---
diff --git a/gtk/gtkactionhelper.c b/gtk/gtkactionhelper.c
index 3dca4c9..6ba5985 100644
--- a/gtk/gtkactionhelper.c
+++ b/gtk/gtkactionhelper.c
@@ -22,6 +22,7 @@
 
 #include "gtkwidget.h"
 #include "gtkwidgetprivate.h"
+#include "gtkdebug.h"
 
 #include <string.h>
 
@@ -121,16 +122,29 @@ gtk_action_helper_action_added (GtkActionHelper    *helper,
                                 GVariant           *state,
                                 gboolean            should_emit_signals)
 {
+  GTK_NOTE(ACTIONS, g_message("actionhelper: %s added", helper->action_name));
+
   /* we can only activate if we have the correct type of parameter */
   helper->can_activate = (helper->target == NULL && parameter_type == NULL) ||
                           (helper->target != NULL && parameter_type != NULL &&
                           g_variant_is_of_type (helper->target, parameter_type));
 
   if (!helper->can_activate)
-    return;
+    {
+      GTK_NOTE(ACTIONS, g_message("actionhelper: %s found, but disabled due to parameter type mismatch",
+                                  helper->action_name));
+      return;
+    }
+
+  GTK_NOTE(ACTIONS, g_message ("actionhelper: %s can be activated", helper->action_name));
 
   helper->enabled = enabled;
 
+  if (!enabled)
+    GTK_NOTE(ACTIONS, g_message("actionhelper: %s found, but disabled due to disabled action", 
helper->action_name));
+  else
+    GTK_NOTE(ACTIONS, g_message("actionhelper: %s found and enabled", helper->action_name));
+
   if (helper->target != NULL && state != NULL)
     helper->active = g_variant_equal (state, helper->target);
 
@@ -150,6 +164,8 @@ gtk_action_helper_action_added (GtkActionHelper    *helper,
 static void
 gtk_action_helper_action_removed (GtkActionHelper *helper)
 {
+  GTK_NOTE(ACTIONS, g_message ("actionhelper: %s was removed", helper->action_name));
+
   if (!helper->can_activate)
     return;
 
@@ -172,6 +188,8 @@ static void
 gtk_action_helper_action_enabled_changed (GtkActionHelper *helper,
                                           gboolean         enabled)
 {
+  GTK_NOTE(ACTIONS, g_message ("actionhelper: %s enabled changed: %d", helper->action_name, enabled));
+
   if (!helper->can_activate)
     return;
 
@@ -188,6 +206,8 @@ gtk_action_helper_action_state_changed (GtkActionHelper *helper,
 {
   gboolean was_active;
 
+  GTK_NOTE(ACTIONS, g_message ("actionhelper: %s state changed", helper->action_name));
+
   if (!helper->can_activate)
     return;
 
@@ -359,6 +379,11 @@ gtk_action_helper_set_action_name (GtkActionHelper *helper,
   if (g_strcmp0 (action_name, helper->action_name) == 0)
     return;
 
+  GTK_NOTE(ACTIONS,
+           if (!strchr (action_name, '.'))
+             g_message ("actionhelper: action name %s doesn't look like 'app.' or 'win.' "
+                        "which means that it will probably not work properly.", action_name));
+
   if (helper->action_name)
     {
       gtk_action_observable_unregister_observer (GTK_ACTION_OBSERVABLE (helper->action_context),
@@ -382,13 +407,18 @@ gtk_action_helper_set_action_name (GtkActionHelper *helper,
   if (g_action_group_query_action (G_ACTION_GROUP (helper->action_context), helper->action_name,
                                    &enabled, &parameter_type, NULL, NULL, &state))
     {
+      GTK_NOTE(ACTIONS, g_message ("actionhelper: %s existed from the start", helper->action_name));
+
       gtk_action_helper_action_added (helper, enabled, parameter_type, state, FALSE);
 
       if (state)
         g_variant_unref (state);
     }
   else
-    helper->enabled = FALSE;
+    {
+      GTK_NOTE(ACTIONS, g_message ("actionhelper: %s missing from the start", helper->action_name));
+      helper->enabled = FALSE;
+    }
 
   /* Send the notifies for the properties that changed.
    *
diff --git a/gtk/gtkdebug.h b/gtk/gtkdebug.h
index 8b1d2cb..e7ae8ae 100644
--- a/gtk/gtkdebug.h
+++ b/gtk/gtkdebug.h
@@ -53,7 +53,8 @@ typedef enum {
   GTK_DEBUG_PIXEL_CACHE     = 1 << 15,
   GTK_DEBUG_NO_PIXEL_CACHE  = 1 << 16,
   GTK_DEBUG_INTERACTIVE     = 1 << 17,
-  GTK_DEBUG_TOUCHSCREEN     = 1 << 18
+  GTK_DEBUG_TOUCHSCREEN     = 1 << 18,
+  GTK_DEBUG_ACTIONS         = 1 << 19
 } GtkDebugFlag;
 
 #ifdef G_ENABLE_DEBUG
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 16e0fdc..10a804a 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -178,7 +178,8 @@ static const GDebugKey gtk_debug_keys[] = {
   {"pixel-cache", GTK_DEBUG_PIXEL_CACHE},
   {"no-pixel-cache", GTK_DEBUG_NO_PIXEL_CACHE},
   {"interactive", GTK_DEBUG_INTERACTIVE},
-  {"touchscreen", GTK_DEBUG_TOUCHSCREEN}
+  {"touchscreen", GTK_DEBUG_TOUCHSCREEN},
+  {"actions", GTK_DEBUG_ACTIONS},
 };
 #endif /* G_ENABLE_DEBUG */
 


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