enum {
PROP_ZERO,
+ PROP_ACTIVATABLE,
PROP_ACTIVE,
PROP_RADIO
};
static void
gtk_cell_renderer_toggle_init (GtkCellRendererToggle *celltoggle)
{
+ celltoggle->activatable = TRUE;
celltoggle->active = FALSE;
celltoggle->radio = FALSE;
GTK_CELL_RENDERER (celltoggle)->mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
G_PARAM_READABLE |
G_PARAM_WRITABLE));
+ g_object_class_install_property (object_class,
+ PROP_ACTIVATABLE,
+ g_param_spec_boolean ("activatable",
+ _("Activatable"),
+ _("The toggle button can be activated"),
+ TRUE,
+ G_PARAM_READABLE |
+ G_PARAM_WRITABLE));
+
g_object_class_install_property (object_class,
PROP_RADIO,
g_param_spec_boolean ("radio",
case PROP_ACTIVE:
g_value_set_boolean (value, celltoggle->active);
break;
+ case PROP_ACTIVATABLE:
+ g_value_set_boolean (value, celltoggle->activatable);
+ break;
case PROP_RADIO:
g_value_set_boolean (value, celltoggle->radio);
break;
celltoggle->active = g_value_get_boolean (value);
g_object_notify (G_OBJECT(object), "active");
break;
+ case PROP_ACTIVATABLE:
+ celltoggle->activatable = g_value_get_boolean (value);
+ g_object_notify (G_OBJECT(object), "activatable");
+ break;
case PROP_RADIO:
celltoggle->radio = g_value_get_boolean (value);
g_object_notify (G_OBJECT(object), "radio");
{
if (x_offset)
{
- *x_offset = cell->xalign * (cell_area->width - calc_width - (2 * cell->xpad));
- *x_offset = MAX (*x_offset, 0) + cell->xpad;
+ *x_offset = cell->xalign * (cell_area->width - calc_width);
+ *x_offset = MAX (*x_offset, 0);
}
if (y_offset)
{
- *y_offset = cell->yalign * (cell_area->height - calc_height - (2 * cell->ypad));
- *y_offset = MAX (*y_offset, 0) + cell->ypad;
+ *y_offset = cell->yalign * (cell_area->height - calc_height);
+ *y_offset = MAX (*y_offset, 0);
}
}
}
if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED)
{
if (GTK_WIDGET_HAS_FOCUS (widget))
- {
- state = GTK_STATE_SELECTED;
- }
+ state = GTK_STATE_SELECTED;
else
- {
- state = GTK_STATE_ACTIVE;
- }
+ state = GTK_STATE_ACTIVE;
}
- else if (cell->mode == GTK_CELL_RENDERER_MODE_INERT)
+ else if (celltoggle->activatable)
{
- state = GTK_STATE_INSENSITIVE;
+ state = GTK_STATE_NORMAL;
}
else
{
- state = GTK_STATE_NORMAL;
+ state = GTK_STATE_INSENSITIVE;
}
if (celltoggle->radio)
cell_area, widget, "cellradio",
cell_area->x + x_offset + cell->xpad,
cell_area->y + y_offset + cell->ypad,
- width, height);
+ width - 1, height - 1);
}
else
{
cell_area, widget, "cellcheck",
cell_area->x + x_offset + cell->xpad,
cell_area->y + y_offset + cell->ypad,
- width, height);
+ width - 1, height - 1);
}
}
guint flags)
{
GtkCellRendererToggle *celltoggle;
- gboolean retval = FALSE;
celltoggle = GTK_CELL_RENDERER_TOGGLE (cell);
-
- switch (event->type)
+ if (celltoggle->activatable)
{
- case GDK_BUTTON_PRESS:
- {
- gtk_signal_emit (GTK_OBJECT (cell), toggle_cell_signals[TOGGLED], path);
- retval = TRUE;
- }
- break;
-
- default:
- break;
+ gtk_signal_emit (GTK_OBJECT (cell), toggle_cell_signals[TOGGLED], path);
+ return TRUE;
}
-
- return retval;
+
+ return FALSE;
}
/**