diff options
author | Matthias Clasen <mclasen@redhat.com> | 2004-07-07 15:15:35 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-07-07 15:15:35 +0000 |
commit | 1aa00e521590a807868cdfe75e8fbf7fb6facc44 (patch) | |
tree | 5d848f45999ce4846fc2e56f82674dbc3c066807 /tests | |
parent | a346f4a8ad8a037a014891b59db8efa47c30d37e (diff) | |
download | gtk+-1aa00e521590a807868cdfe75e8fbf7fb6facc44.tar.gz |
Support separators in combo boxes and more generally in tree views
2004-07-07 Matthias Clasen <mclasen@redhat.com>
Support separators in combo boxes and more generally in tree
views (#135873):
* gtk/gtkcombobox.h:
* gtk/gtkcombobox.c (gtk_combo_box_get_row_separator_column):
* gtk/gtkcombobox.c (gtk_combo_box_set_row_separator_column):
Add a ::row-separator-column property with getter and setter,
which can indicate a boolean model column to determine which
rows are separators.
* gtk/gtkcombobox.c: Display separator rows as separator menu
items in menu mode, and by using the new treeview separator
functionality in list mode.
* gtk/gtktreeview.h:
* gtk/gtktreeview.c (gtk_tree_view_get_row_separator_func):
* gtk/gtktreeview.c (gtk_tree_view_set_row_separator_func):
Add a callback to determine whether a row is a separator.
* gtk/gtktreeview.c (gtk_tree_view_bin_expose):
* gtk/gtktreeview.c (gtk_tree_view_create_row_drag_icon):
* gtk/gtktreeview.c (validate_row): Use the new callback
to determine whether a row is a separator, and draw it
as a separator then. Since separators should take up less
vertical space than regular rows, this requires removing
the redundant MAX(...,expander_size) calls which appear in
many places. Instead, the MAX() is now only done in
validate_row(), and only if the row is not a separator.
To catch possible side effects of this intrusive change,
I have left EXPANDER_MAX() calls in place of the MAX() calls
which will emit a warning if something breaks. They should
be removed before 2.6.
* gtk/gtktreeselection.c (row_is_selectable): Don't let
separator rows be selected.
* tests/testcombo.c (create_blaat): Add a separator column.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testcombo.c | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/tests/testcombo.c b/tests/testcombo.c index 157963d583..b26f8ca50c 100644 --- a/tests/testcombo.c +++ b/tests/testcombo.c @@ -127,7 +127,7 @@ create_blaat () cellview = gtk_cell_view_new (); - store = gtk_list_store_new (2, GDK_TYPE_PIXBUF, G_TYPE_STRING); + store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_BOOLEAN); pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_BUTTON, NULL); @@ -135,6 +135,7 @@ create_blaat () gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-dialog-warning", + 2, FALSE, -1); pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_STOP, @@ -143,6 +144,7 @@ create_blaat () gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-stop", + 2, FALSE, -1); pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_NEW, @@ -151,6 +153,7 @@ create_blaat () gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-new", + 2, FALSE, -1); pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_CLEAR, @@ -159,6 +162,23 @@ create_blaat () gtk_list_store_set (store, &iter, 0, pixbuf, 1, "gtk-stock-clear", + 2, FALSE, + -1); + + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, NULL, + 1, "separator", + 2, TRUE, + -1); + + pixbuf = gtk_widget_render_icon (cellview, GTK_STOCK_OPEN, + GTK_ICON_SIZE_BUTTON, NULL); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, + 0, pixbuf, + 1, "gtk-stock-open", + 2, FALSE, -1); gtk_widget_destroy (cellview); @@ -196,8 +216,7 @@ set_sensitive (GtkCellLayout *cell_layout, path = gtk_tree_model_get_path (tree_model, iter); indices = gtk_tree_path_get_indices (path); - - sensitive = indices[0] % 2; + sensitive = indices[0] != 1; gtk_tree_path_free (path); g_object_set (cell, "sensitive", sensitive, NULL); @@ -295,7 +314,9 @@ main (int argc, char **argv) renderer, set_sensitive, NULL, NULL); - gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 1); + gtk_combo_box_set_row_separator_column (GTK_COMBO_BOX (combobox), 2); + + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), 0); /* GtkComboBox (grid mode) */ |