summaryrefslogtreecommitdiff
path: root/gtk/gtkcellrenderertoggle.c
diff options
context:
space:
mode:
authorJonathan Blandford <jrb@redhat.com>2001-09-25 16:44:39 +0000
committerJonathan Blandford <jrb@src.gnome.org>2001-09-25 16:44:39 +0000
commit92841cb95add212c35b2ef58129f043c33676c52 (patch)
treea58a60c4bc75ea3f716bfd59d3c193cf417fc5f4 /gtk/gtkcellrenderertoggle.c
parent8a2d408daed1b616ab760cdfeec050cb6e54c1de (diff)
downloadgtk+-92841cb95add212c35b2ef58129f043c33676c52.tar.gz
Make a GtkCellEditable (get_widget_window_size): Change to let it honor
Tue Sep 25 12:34:42 2001 Jonathan Blandford <jrb@redhat.com> * gtk/gtkentry.c: Make a GtkCellEditable (get_widget_window_size): Change to let it honor size_allocate when a CellEditable. * gtk/gtktreeview.c: M-x clean-line-ends. Lots of focus and editable changes. (gtk_tree_view_set_cursor): Now you can set the cursor horizontally, as well as start editing. * gtk/gtkstyle.c (gtk_default_draw_check): changing toggle drawing code to look more like the other check buttons. * gtk/gtkcellrenderertoggle.c (gtk_cell_renderer_toggle_get_size): Change the way we calculate cell size. * gtk/gtkmarshal.list (VOID:STRING,STRING): new marshaller. * demos/gtk-demo/sizegroup.c: Add mnemonics. * gtk/gtkcellrenderer.c (gtk_cell_renderer_get_size): Fix docs. Fix logic. * gtk/gtkcellrenderertext.c: Change to be editable. * gtk/gtkcellrenderertoggle.c: Change to be activatable. * test/testtreesort.c: Fix misspelling * test/testreecolumns.c: Add mnemonics. * test/testreeedit.c: New test program.
Diffstat (limited to 'gtk/gtkcellrenderertoggle.c')
-rw-r--r--gtk/gtkcellrenderertoggle.c63
1 files changed, 34 insertions, 29 deletions
diff --git a/gtk/gtkcellrenderertoggle.c b/gtk/gtkcellrenderertoggle.c
index fac7dd7bd9..845266f6e7 100644
--- a/gtk/gtkcellrenderertoggle.c
+++ b/gtk/gtkcellrenderertoggle.c
@@ -62,6 +62,7 @@ enum {
enum {
PROP_ZERO,
+ PROP_ACTIVATABLE,
PROP_ACTIVE,
PROP_RADIO
};
@@ -101,6 +102,7 @@ gtk_cell_renderer_toggle_get_type (void)
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;
@@ -131,6 +133,15 @@ gtk_cell_renderer_toggle_class_init (GtkCellRendererToggleClass *class)
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",
_("Radio state"),
@@ -163,6 +174,9 @@ gtk_cell_renderer_toggle_get_property (GObject *object,
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;
@@ -187,6 +201,10 @@ gtk_cell_renderer_toggle_set_property (GObject *object,
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");
@@ -241,13 +259,13 @@ gtk_cell_renderer_toggle_get_size (GtkCellRenderer *cell,
{
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);
}
}
}
@@ -281,21 +299,17 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
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)
@@ -306,7 +320,7 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
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
{
@@ -316,7 +330,7 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
cell_area, widget, "cellcheck",
cell_area->x + x_offset + cell->xpad,
cell_area->y + y_offset + cell->ypad,
- width, height);
+ width - 1, height - 1);
}
}
@@ -330,24 +344,15 @@ gtk_cell_renderer_toggle_activate (GtkCellRenderer *cell,
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;
}
/**