summaryrefslogtreecommitdiff
path: root/tests/testtreeedit.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2002-05-05 14:54:00 +0000
committerKristian Rietveld <kristian@src.gnome.org>2002-05-05 14:54:00 +0000
commitacce60b7991807719de78995fb733f3573e2ecfb (patch)
treecbc2b81bd6e562cfbd225bacffded4dca00eb802 /tests/testtreeedit.c
parentd269c210c57dca4c94dfc3e226aa4c76ba8f9f0a (diff)
downloadgdk-pixbuf-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.c63
1 files changed, 47 insertions, 16 deletions
diff --git a/tests/testtreeedit.c b/tests/testtreeedit.c
index 9163fd2c9..2b8f114cc 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 ();