summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk/gtkactionhelper.c34
-rw-r--r--gtk/gtkdebug.h3
-rw-r--r--gtk/gtkmain.c3
3 files changed, 36 insertions, 4 deletions
diff --git a/gtk/gtkactionhelper.c b/gtk/gtkactionhelper.c
index 3dca4c9d3f..6ba5985d3f 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 8b1d2cb269..e7ae8ae8b2 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 16e0fdcb82..10a804a747 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 */