diff options
author | Kristian Rietveld <kris@gtk.org> | 2002-05-05 14:54:00 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2002-05-05 14:54:00 +0000 |
commit | acce60b7991807719de78995fb733f3573e2ecfb (patch) | |
tree | cbc2b81bd6e562cfbd225bacffded4dca00eb802 /tests/testtreeedit.c | |
parent | d269c210c57dca4c94dfc3e226aa4c76ba8f9f0a (diff) | |
download | gtk+-acce60b7991807719de78995fb733f3573e2ecfb.tar.gz |
The "big treeview focus patch". Fixes several issues and adds some
Sun May 5 16:42:32 2002 Kristian Rietveld <kris@gtk.org>
The "big treeview focus patch". Fixes several issues and adds some
goodies. Related bugs: #73676, #73734, #78660.
* gtk/gtktreeview.h: add gtk_tree_view_set_cursor_on_cell
* gtk/gtktreeview.c (gtk_tree_view_button_press): focus on a cell
if applicable,
(gtk_tree_view_bin_expose): set_cell_data before iterating columns,
add support for row-spanning focus rectangles,
(gtk_tree_view_has_special_cell): new function,
(gtk_tree_view_move_cursor_left_right): add support for multiple
focusable cells in one column,
(gtk_tree_view_set_cursor): call _set_cursor_on_cell now,
(gtk_tree_view_set_cursor_on_cell): copy of _set_cursor, extended
with focus_cell parameter,
(gtk_tree_view_search_iter): removed unused column variable,
(gtk_tree_view_start_editing): add neighbor size code to allow
for multiple editable cells in one column.
* gtk/gtktreeviewcolumn.c (_GtkTreeViewColumnCellInfo): add
in_editing_mode field,
(gtk_tree_view_column_get_edited_cell): new function, removed
_get_editable_cell,
(_gtk_tree_view_column_get_cell_at_pos): new function,
(gtk_tree_view_column_pack_end): s/g_new/g_new0/ ...,
(gtk_tree_view_column_cell_process_action): loads of changes to get
it right and to allow for multiple special cells, etc,
(gtk_tree_view_column_cell_first): new function,
(gtk_tree_view_column_cell_last): ditto,
(gtk_tree_view_column_cell_next): ditto,
(gtk_tree_view_column_cell_prev): ditto,
(gtk_tree_view_column_cell_focus): add left and right parameters,
allow for multiple special cells,
(gtk_tree_view_column_cell_is_visible): add assertion,
(gtk_tree_view_column_focus_cell): new function,
(gtk_tree_view_column_stop_editing): unset in_editing_mode flag,
(_gtk_tree_view_column_get_neighbor_sizes): iterate through cells
correctly
* gtk/gtktreeviewcolumn.h: add gtk_tree_view_column_focus_cell
* gtk/gtktreeprivate.h: s/_get_editable_cell/_get_edited_cell/, add
_gtk_tree_view_column_get_cell_at_pos, add new parameters to
_gtk_tree_view_column_cell_focus.
* tests/testtreeedit.c: add some cells in order to test new code.
Diffstat (limited to 'tests/testtreeedit.c')
-rw-r--r-- | tests/testtreeedit.c | 63 |
1 files changed, 47 insertions, 16 deletions
diff --git a/tests/testtreeedit.c b/tests/testtreeedit.c index 9163fd2c9b..2b8f114ccc 100644 --- a/tests/testtreeedit.c +++ b/tests/testtreeedit.c @@ -8,6 +8,7 @@ typedef struct { enum { STRING_COLUMN, IS_EDITABLE_COLUMN, + PIXBUF_COLUMN, NUM_COLUMNS }; @@ -24,21 +25,29 @@ static ListEntry model_strings[] = static GtkTreeModel * create_model (void) { - GtkListStore *model; + GtkTreeStore *model; GtkTreeIter iter; gint i; + GdkPixbuf *foo; + GtkWidget *blah; + + blah = gtk_window_new (GTK_WINDOW_TOPLEVEL); + foo = gtk_widget_render_icon (blah, GTK_STOCK_NEW, GTK_ICON_SIZE_MENU, NULL); + gtk_widget_destroy (blah); - model = gtk_list_store_new (NUM_COLUMNS, + model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, - G_TYPE_BOOLEAN); + G_TYPE_BOOLEAN, + GDK_TYPE_PIXBUF); for (i = 0; model_strings[i].string != NULL; i++) { - gtk_list_store_append (model, &iter); + gtk_tree_store_append (model, &iter, NULL); - gtk_list_store_set (model, &iter, + gtk_tree_store_set (model, &iter, STRING_COLUMN, model_strings[i].string, IS_EDITABLE_COLUMN, model_strings[i].is_editable, + PIXBUF_COLUMN, foo, -1); } @@ -59,7 +68,7 @@ toggled (GtkCellRendererToggle *cell, gtk_tree_model_get (model, &iter, IS_EDITABLE_COLUMN, &value, -1); value = !value; - gtk_list_store_set (GTK_LIST_STORE (model), &iter, IS_EDITABLE_COLUMN, value, -1); + gtk_tree_store_set (GTK_TREE_STORE (model), &iter, IS_EDITABLE_COLUMN, value, -1); gtk_tree_path_free (path); } @@ -75,7 +84,7 @@ edited (GtkCellRendererText *cell, GtkTreePath *path = gtk_tree_path_new_from_string (path_string); gtk_tree_model_get_iter (model, &iter, path); - gtk_list_store_set (GTK_LIST_STORE (model), &iter, STRING_COLUMN, new_text, -1); + gtk_tree_store_set (GTK_TREE_STORE (model), &iter, STRING_COLUMN, new_text, -1); gtk_tree_path_free (path); } @@ -102,6 +111,7 @@ main (gint argc, gchar **argv) GtkWidget *tree_view; GtkTreeModel *tree_model; GtkCellRenderer *renderer; + GtkTreeViewColumn *column; gtk_init (&argc, &argv); @@ -118,18 +128,39 @@ main (gint argc, gchar **argv) tree_view = gtk_tree_view_new_with_model (tree_model); g_signal_connect (tree_view, "button_press_event", G_CALLBACK (button_press_event), NULL); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE); - gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE); + gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), TRUE); - renderer = gtk_cell_renderer_text_new (); - gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view), - -1, "String", - renderer, - "text", STRING_COLUMN, - "editable", IS_EDITABLE_COLUMN, - NULL); + column = gtk_tree_view_column_new (); + gtk_tree_view_column_set_title (column, "String"); + + renderer = gtk_cell_renderer_pixbuf_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "pixbuf", PIXBUF_COLUMN, NULL); + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "text", STRING_COLUMN, + "editable", IS_EDITABLE_COLUMN, + NULL); + g_signal_connect (G_OBJECT (renderer), "edited", + G_CALLBACK (edited), tree_model); + renderer = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "text", STRING_COLUMN, + "editable", IS_EDITABLE_COLUMN, + NULL); g_signal_connect (G_OBJECT (renderer), "edited", G_CALLBACK (edited), tree_model); + + renderer = gtk_cell_renderer_pixbuf_new (); + gtk_tree_view_column_pack_start (column, renderer, TRUE); + gtk_tree_view_column_set_attributes (column, renderer, + "pixbuf", PIXBUF_COLUMN, NULL); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column); + renderer = gtk_cell_renderer_toggle_new (); g_signal_connect (G_OBJECT (renderer), "toggled", G_CALLBACK (toggled), tree_model); @@ -145,7 +176,7 @@ main (gint argc, gchar **argv) gtk_container_add (GTK_CONTAINER (scrolled_window), tree_view); gtk_window_set_default_size (GTK_WINDOW (window), - 650, 400); + 800, 175); gtk_widget_show_all (window); gtk_main (); |