diff options
author | Jonathan Blandford <jrb@redhat.com> | 2001-09-25 16:44:39 +0000 |
---|---|---|
committer | Jonathan Blandford <jrb@src.gnome.org> | 2001-09-25 16:44:39 +0000 |
commit | 92841cb95add212c35b2ef58129f043c33676c52 (patch) | |
tree | a58a60c4bc75ea3f716bfd59d3c193cf417fc5f4 /gtk/gtkcellrenderertoggle.c | |
parent | 8a2d408daed1b616ab760cdfeec050cb6e54c1de (diff) | |
download | gtk+-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.c | 63 |
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; } /** |