+ GtkWidget *button = g_object_new (HILDON_TYPE_CHECK_BUTTON, "xalign", 0.0, NULL);
+ hildon_gtk_widget_set_theme_size (button, size);
+ return button;
+}
+
+static void
+hildon_check_button_clicked (GtkButton *button)
+{
+ HildonCheckButton *checkbutton = HILDON_CHECK_BUTTON (button);
+ gboolean current = hildon_check_button_get_active (checkbutton);
+
+ gtk_cell_renderer_toggle_set_active (checkbutton->priv->toggle_renderer, !current);
+
+ hildon_check_button_toggled (checkbutton);
+}
+
+static void
+hildon_check_button_apply_style (GtkWidget *widget)
+{
+ guint checkbox_size;
+ HildonCheckButtonPrivate *priv = HILDON_CHECK_BUTTON (widget)->priv;
+
+ gtk_widget_style_get (widget, "checkbox-size", &checkbox_size, NULL);
+
+ g_object_set (priv->toggle_renderer, "indicator-size", checkbox_size, NULL);
+}
+
+static void
+hildon_check_button_style_set (GtkWidget *widget,
+ GtkStyle *previous_style)
+{
+ if (GTK_WIDGET_CLASS (hildon_check_button_parent_class)->style_set)
+ GTK_WIDGET_CLASS (hildon_check_button_parent_class)->style_set (widget, previous_style);
+
+ hildon_check_button_apply_style (widget);
+}
+
+static void
+hildon_check_button_class_init (HildonCheckButtonClass *klass)
+{
+ GObjectClass *gobject_class = (GObjectClass*) klass;
+ GtkWidgetClass *widget_class = (GtkWidgetClass*) klass;
+ GtkButtonClass *button_class = (GtkButtonClass*) klass;
+
+ widget_class->style_set = hildon_check_button_style_set;
+ button_class->clicked = hildon_check_button_clicked;
+
+ klass->toggled = NULL;
+
+ /**
+ * HildonCheckButton::toggled
+ *
+ * Emitted when the #HildonCheckButton's state is changed.
+ *
+ * Since: 2.2
+ */
+ signals[TOGGLED] =
+ g_signal_new ("toggled",
+ G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (HildonCheckButtonClass, toggled),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ gtk_widget_class_install_style_property (
+ widget_class,
+ g_param_spec_uint (
+ "checkbox-size",
+ "Size of the check box",
+ "Size of the check box",
+ 0, G_MAXUINT, 26,
+ G_PARAM_READABLE));
+
+ g_type_class_add_private (klass, sizeof (HildonCheckButtonPrivate));
+}
+
+static void
+hildon_check_button_init (HildonCheckButton *button)
+{
+ HildonCheckButtonPrivate *priv = HILDON_CHECK_BUTTON_GET_PRIVATE (button);