+static void
+gtk_actionable_set_namespaced_action_name (GtkActionable *actionable,
+ const gchar *namespace,
+ const gchar *action_name)
+{
+ if (namespace)
+ {
+ gchar *name = g_strdup_printf ("%s.%s", namespace, action_name);
+ gtk_actionable_set_action_name (actionable, name);
+ g_free (name);
+ }
+ else
+ {
+ gtk_actionable_set_action_name (actionable, action_name);
+ }
+}
+
+static void
+gtk_model_menu_item_submenu_shown (GtkWidget *widget,
+ gpointer user_data)
+{
+ const gchar *action_name = user_data;
+ GActionMuxer *muxer;
+
+ muxer = _gtk_widget_get_action_muxer (widget);
+ g_action_group_change_action_state (G_ACTION_GROUP (muxer), action_name, g_variant_new_boolean (TRUE));
+}
+
+static void
+gtk_model_menu_item_submenu_hidden (GtkWidget *widget,
+ gpointer user_data)
+{
+ const gchar *action_name = user_data;
+ GActionMuxer *muxer;
+
+ muxer = _gtk_widget_get_action_muxer (widget);
+ g_action_group_change_action_state (G_ACTION_GROUP (muxer), action_name, g_variant_new_boolean (FALSE));
+}
+