summaryrefslogtreecommitdiff
path: root/gtk/gtklistitem.c
diff options
context:
space:
mode:
authorLars Hamann <lars@gtk.org>1998-10-30 19:57:50 +0000
committerLars Hamann <lars@src.gnome.org>1998-10-30 19:57:50 +0000
commit52f5eeab68fa6e1618932f6e5bd2d2da58af7f53 (patch)
treedd4f3d8249f5ebc486d471febab5e30c5a634328 /gtk/gtklistitem.c
parentfd8a1c93a9530e2f750eb948d0f3db05d6a36010 (diff)
downloadgdk-pixbuf-52f5eeab68fa6e1618932f6e5bd2d2da58af7f53.tar.gz
free undo_un/selection, unselect list_item before disconnect signal
Fri Oct 30 20:02:36 1998 Lars Hamann <lars@gtk.org> * gtk/gtklist.c (gtk_list_remove_items_internal): free undo_un/selection, unselect list_item before disconnect signal functions (gtk_list_destroy): removed. gtk_list_shutdown clears the list already (gtk_list_signal_item_select) (gtk_list_signal_item_deselect) (gtk_list_signal_item_toggle) (gtk_list_signal_scroll_horizontal) (gtk_list_signal_toggle_focus_row) (gtk_list_signal_select_all) (gtk_list_signal_unselect_all) (gtk_list_signal_undo_selection) (gtk_list_signal_start_selection) (gtk_list_signal_end_selection) (gtk_list_signal_toggle_add_mode) (gtk_list_signal_scroll_vertical) (gtk_list_signal_extend_selection) (gtk_list_signal_focus_lost): new functions. These functions are signal connected to inserted list_items, to handle key bindings and GtkItem::de/select/toggle signals. * gtk/gtklistitem.c (gtk_list_item_class_init): added missing gtk_object_class_add_signals call. (gtk_list_item_toggle_focus_row) (gtk_list_item_select_all) (gtk_list_item_unselect_all) (gtk_list_item_undo_selection) (gtk_list_item_start_selection) (gtk_list_item_end_selection) (gtk_list_item_extend_selection) (gtk_list_item_scroll_horizontal) (gtk_list_item_scroll_vertical) (gtk_list_item_toggle_add_mode): removed. These functions are handled via connected gtk_list_signal_* functions now
Diffstat (limited to 'gtk/gtklistitem.c')
-rw-r--r--gtk/gtklistitem.c187
1 files changed, 31 insertions, 156 deletions
diff --git a/gtk/gtklistitem.c b/gtk/gtklistitem.c
index d81ad3719..bab73bd2c 100644
--- a/gtk/gtklistitem.c
+++ b/gtk/gtklistitem.c
@@ -63,24 +63,6 @@ static void gtk_real_list_item_deselect (GtkItem *item);
static void gtk_real_list_item_toggle (GtkItem *item);
-static void gtk_list_item_toggle_focus_row (GtkListItem *list_item);
-static void gtk_list_item_select_all (GtkListItem *list_item);
-static void gtk_list_item_unselect_all (GtkListItem *list_item);
-static void gtk_list_item_undo_selection (GtkListItem *list_item);
-static void gtk_list_item_start_selection (GtkListItem *list_item);
-static void gtk_list_item_end_selection (GtkListItem *list_item);
-static void gtk_list_item_extend_selection (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection);
-static void gtk_list_item_scroll_horizontal (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position);
-static void gtk_list_item_scroll_vertical (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position);
-static void gtk_list_item_toggle_add_mode (GtkListItem *list_item);
-
static GtkItemClass *parent_class = NULL;
static guint list_item_signals[LAST_SIGNAL] = {0};
@@ -195,6 +177,7 @@ gtk_list_item_class_init (GtkListItemClass *class)
gtk_marshal_NONE__ENUM_FLOAT,
GTK_TYPE_NONE, 2, GTK_TYPE_ENUM, GTK_TYPE_FLOAT);
+ gtk_object_class_add_signals (object_class, list_item_signals, LAST_SIGNAL);
widget_class->realize = gtk_list_item_realize;
widget_class->size_request = gtk_list_item_size_request;
@@ -210,16 +193,16 @@ gtk_list_item_class_init (GtkListItemClass *class)
item_class->deselect = gtk_real_list_item_deselect;
item_class->toggle = gtk_real_list_item_toggle;
- class->toggle_focus_row = gtk_list_item_toggle_focus_row;
- class->select_all = gtk_list_item_select_all;
- class->unselect_all = gtk_list_item_unselect_all;
- class->undo_selection = gtk_list_item_undo_selection;
- class->start_selection = gtk_list_item_start_selection;
- class->end_selection = gtk_list_item_end_selection;
- class->extend_selection = gtk_list_item_extend_selection;
- class->scroll_horizontal = gtk_list_item_scroll_horizontal;
- class->scroll_vertical = gtk_list_item_scroll_vertical;
- class->toggle_add_mode = gtk_list_item_toggle_add_mode;
+ class->toggle_focus_row = NULL;
+ class->select_all = NULL;
+ class->unselect_all = NULL;
+ class->undo_selection = NULL;
+ class->start_selection = NULL;
+ class->end_selection = NULL;
+ class->extend_selection = NULL;
+ class->scroll_horizontal = NULL;
+ class->scroll_vertical = NULL;
+ class->toggle_add_mode = NULL;
{
GtkBindingSet *binding_set;
@@ -619,7 +602,15 @@ gtk_real_list_item_select (GtkItem *item)
g_return_if_fail (item != NULL);
g_return_if_fail (GTK_IS_LIST_ITEM (item));
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);
+ switch (GTK_WIDGET (item)->state)
+ {
+ case GTK_STATE_SELECTED:
+ case GTK_STATE_INSENSITIVE:
+ break;
+ default:
+ gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);
+ break;
+ }
}
static void
@@ -628,10 +619,8 @@ gtk_real_list_item_deselect (GtkItem *item)
g_return_if_fail (item != NULL);
g_return_if_fail (GTK_IS_LIST_ITEM (item));
- if (GTK_WIDGET (item)->state == GTK_STATE_NORMAL)
- return;
-
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);
+ if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED)
+ gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);
}
static void
@@ -640,129 +629,15 @@ gtk_real_list_item_toggle (GtkItem *item)
g_return_if_fail (item != NULL);
g_return_if_fail (GTK_IS_LIST_ITEM (item));
- if (GTK_WIDGET (item)->parent && GTK_IS_LIST (GTK_WIDGET (item)->parent))
- gtk_list_select_child (GTK_LIST (GTK_WIDGET (item)->parent),
- GTK_WIDGET (item));
- else
+ switch (GTK_WIDGET (item)->state)
{
- /* Should we really bother with this bit? A listitem not in a list?
- * -Johannes Keukelaar
- * yes, always be on the save side!
- * -timj
- */
- if (GTK_WIDGET (item)->state == GTK_STATE_SELECTED)
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);
- else
- gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);
+ case GTK_STATE_SELECTED:
+ gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_NORMAL);
+ break;
+ case GTK_STATE_INSENSITIVE:
+ break;
+ default:
+ gtk_widget_set_state (GTK_WIDGET (item), GTK_STATE_SELECTED);
+ break;
}
}
-
-static void
-gtk_list_item_toggle_focus_row (GtkListItem *list_item)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_toggle_focus_row (GTK_LIST (GTK_WIDGET (list_item)->parent));
-}
-
-static void
-gtk_list_item_select_all (GtkListItem *list_item)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_select_all (GTK_LIST (GTK_WIDGET (list_item)->parent));
-}
-
-static void
-gtk_list_item_unselect_all (GtkListItem *list_item)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_unselect_all (GTK_LIST (GTK_WIDGET (list_item)->parent));
-}
-
-static void
-gtk_list_item_undo_selection (GtkListItem *list_item)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_undo_selection (GTK_LIST (GTK_WIDGET (list_item)->parent));
-}
-
-static void
-gtk_list_item_start_selection (GtkListItem *list_item)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_start_selection (GTK_LIST (GTK_WIDGET (list_item)->parent));
-}
-
-static void
-gtk_list_item_end_selection (GtkListItem *list_item)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_end_selection (GTK_LIST (GTK_WIDGET (list_item)->parent));
-}
-
-static void
-gtk_list_item_extend_selection (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position,
- gboolean auto_start_selection)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_extend_selection (GTK_LIST (GTK_WIDGET (list_item)->parent),
- scroll_type, position, auto_start_selection);
-}
-
-static void
-gtk_list_item_scroll_horizontal (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_scroll_horizontal (GTK_LIST (GTK_WIDGET (list_item)->parent),
- scroll_type, position);
-}
-
-static void
-gtk_list_item_scroll_vertical (GtkListItem *list_item,
- GtkScrollType scroll_type,
- gfloat position)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_scroll_vertical (GTK_LIST (GTK_WIDGET (list_item)->parent),
- scroll_type, position);
-}
-
-static void
-gtk_list_item_toggle_add_mode (GtkListItem *list_item)
-{
- g_return_if_fail (list_item != 0);
- g_return_if_fail (GTK_IS_LIST_ITEM (list_item));
-
- if (GTK_IS_LIST (GTK_WIDGET (list_item)->parent))
- gtk_list_toggle_add_mode (GTK_LIST (GTK_WIDGET (list_item)->parent));
-}