- g_signal_connect_object (GTK_TOOL_BUTTON (button)->button, "toggled",
- G_CALLBACK (button_toggled), button, 0);
+ GtkToolButton *tool_button = GTK_TOOL_BUTTON (button);
+ GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (_gtk_tool_button_get_button (tool_button));
+
+ button->priv = G_TYPE_INSTANCE_GET_PRIVATE (button,
+ GTK_TYPE_TOGGLE_TOOL_BUTTON,
+ GtkToggleToolButtonPrivate);
+
+ /* If the real button is a radio button, it may have been
+ * active at the time it was created.
+ */
+ button->priv->active = gtk_toggle_button_get_active (toggle_button);
+
+ g_signal_connect_object (toggle_button,
+ "toggled", G_CALLBACK (button_toggled), button, 0);
+}
+
+static void
+gtk_toggle_tool_button_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GtkToggleToolButton *button = GTK_TOGGLE_TOOL_BUTTON (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTIVE:
+ gtk_toggle_tool_button_set_active (button,
+ g_value_get_boolean (value));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gtk_toggle_tool_button_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GtkToggleToolButton *button = GTK_TOGGLE_TOOL_BUTTON (object);
+
+ switch (prop_id)
+ {
+ case PROP_ACTIVE:
+ g_value_set_boolean (value, gtk_toggle_tool_button_get_active (button));
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }