+static void
+gtk_toggle_tool_button_activatable_interface_init (GtkActivatableIface *iface)
+{
+ parent_activatable_iface = g_type_interface_peek_parent (iface);
+ iface->update = gtk_toggle_tool_button_update;
+ iface->sync_action_properties = gtk_toggle_tool_button_sync_action_properties;
+}
+
+static void
+gtk_toggle_tool_button_update (GtkActivatable *activatable,
+ GtkAction *action,
+ const gchar *property_name)
+{
+ GtkToggleToolButton *button;
+
+ parent_activatable_iface->update (activatable, action, property_name);
+
+ button = GTK_TOGGLE_TOOL_BUTTON (activatable);
+
+ if (strcmp (property_name, "active") == 0)
+ {
+ gtk_action_block_activate (action);
+ gtk_toggle_tool_button_set_active (button, gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
+ gtk_action_unblock_activate (action);
+ }
+}
+
+static void
+gtk_toggle_tool_button_sync_action_properties (GtkActivatable *activatable,
+ GtkAction *action)
+{
+ GtkToggleToolButton *button;
+
+ parent_activatable_iface->sync_action_properties (activatable, action);
+
+ if (!GTK_IS_TOGGLE_ACTION (action))
+ return;
+
+ button = GTK_TOGGLE_TOOL_BUTTON (activatable);
+
+ gtk_action_block_activate (action);
+ gtk_toggle_tool_button_set_active (button, gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
+ gtk_action_unblock_activate (action);
+}
+
+