diff options
author | Alexander Larsson <alexl@redhat.com> | 2011-02-11 15:27:54 +0100 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2011-02-11 15:27:54 +0100 |
commit | d4add8cefa6fa5c29bdb50f18e31cbfbfb38cc2b (patch) | |
tree | 7525bacbda20d6801e2465b953528f8f59f0411e /tests | |
parent | a3b227ff9e8af8fc6855ca99b837af08fc4e8494 (diff) | |
parent | d847f489f04fc8343b364b9e66129f40b248f523 (diff) | |
download | gtk+-d4add8cefa6fa5c29bdb50f18e31cbfbfb38cc2b.tar.gz |
Merge branch 'master' into broadway
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile.am | 23 | ||||
-rw-r--r-- | tests/makefile.msc | 3 | ||||
-rw-r--r-- | tests/simple.c | 1 | ||||
-rw-r--r-- | tests/testappchooser.c | 2 | ||||
-rw-r--r-- | tests/testappchooserbutton.c | 1 | ||||
-rw-r--r-- | tests/testclientmessage.c | 122 | ||||
-rw-r--r-- | tests/testgtk.c | 26 | ||||
-rw-r--r-- | tests/testgtk.css | 9 | ||||
-rw-r--r-- | tests/testnoscreen.c | 47 | ||||
-rw-r--r-- | tests/testsensitive.c | 111 | ||||
-rw-r--r-- | tests/testsocket.c | 3 | ||||
-rw-r--r-- | tests/testsocket_common.c | 2 | ||||
-rw-r--r-- | tests/testtoolbar.c | 23 | ||||
-rw-r--r-- | tests/testtreepos.c | 140 |
14 files changed, 329 insertions, 184 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am index 5364298800..318bbfef40 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -12,12 +12,12 @@ INCLUDES = \ $(GDK_DEP_CFLAGS) DEPS = \ - $(top_builddir)/gtk/libgtk-3.0.la + $(top_builddir)/gtk/libgtk-3.la LDADDS = \ - $(top_builddir)/gtk/libgtk-3.0.la \ - $(top_builddir)/gdk/libgdk-3.0.la \ - $(GTK_DEP_LIBS) \ + $(top_builddir)/gtk/libgtk-3.la \ + $(top_builddir)/gdk/libgdk-3.la \ + $(GTK_DEP_LIBS) \ -lm if USE_X11 @@ -40,7 +40,6 @@ noinst_PROGRAMS = $(TEST_PROGS) \ testcombo \ testcombochange \ testcellrenderertext \ - testclientmessage \ testdnd \ testellipsise \ testentrycompletion \ @@ -104,7 +103,10 @@ noinst_PROGRAMS = $(TEST_PROGS) \ testswitch \ styleexamples \ testtreemenu \ - testtoplevelembed + testtoplevelembed \ + testnoscreen \ + testtreepos \ + testsensitive if USE_X11 noinst_PROGRAMS += testerrors @@ -139,7 +141,6 @@ testcalendar_DEPENDENCIES = $(TEST_DEPS) testcombo_DEPENDENCIES = $(TEST_DEPS) testcombochange_DEPENDENCIES = $(TEST_DEPS) testcellrenderertext_DEPENDENCIES = $(TEST_DEPS) -testclientmessage_DEPENDENCIES = $(TEST_DEPS) testdnd_DEPENDENCIES = $(TEST_DEPS) testellipsise_DEPENDENCIES = $(TEST_DEPS) testentrycompletion_DEPENDENCIES = $(TEST_DEPS) @@ -201,6 +202,9 @@ testexpander_DEPENDENCIES = $(TEST_DEPS) testswitch_DEPENDENCIES = $(TEST_DEPS) styleexamples_DEPENDENCIES = $(TEST_DEPS) testtoplevelembed_DEPENDENCIES = $(TEST_DEPS) +testnoscreen_DEPENDENCIES = $(TEST_DEPS) +testtreepos_DEPENDENCIES = $(TEST_DEPS) +testsensitive_DEPENDENCIES = $(TEST_DEPS) flicker_LDADD = $(LDADDS) simple_LDADD = $(LDADDS) @@ -215,7 +219,6 @@ testcalendar_LDADD = $(LDADDS) testcombo_LDADD = $(LDADDS) testcombochange_LDADD = $(LDADDS) testcellrenderertext_LDADD = $(LDADDS) -testclientmessage_LDADD = $(LDADDS) testdnd_LDADD = $(LDADDS) testellipsise_LDADD = $(LDADDS) testentrycompletion_LDADD = $(LDADDS) @@ -283,6 +286,10 @@ testexpander_LDADD = $(LDADDS) testswitch_LDADD = $(LDADDS) styleexamples_LDADD = $(LDADDS) testtoplevelembed_LDADD = $(LDADDS) +testnoscreen_LDADD = $(LDADDS) +testtreepos_LDADD = $(LDADDS) +testsensitive_LDADD = $(LDADDS) + testentrycompletion_SOURCES = \ prop-editor.c \ diff --git a/tests/makefile.msc b/tests/makefile.msc index 8d0532e401..2e7feb3c83 100644 --- a/tests/makefile.msc +++ b/tests/makefile.msc @@ -27,7 +27,6 @@ TOUCH = copy makefile.msc+nul all : \ ..\config.h \ prop-editor.obj \ - testsocket_common.obj \ all-test-apps ..\config.h : ..\config.h.win32 @@ -59,7 +58,7 @@ TESTAPPS = \ testtoolbar testtooltips \ testtreecolumns testtreecolumnsizing testtreeedit testtreeflow testtreefocus \ testtreemodel testtreesort testtreeview treestoretest \ - testsocket testsocket_child teststatusicon \ + teststatusicon \ testthreads testvolumebutton testwindows testxinerama \ simple diff --git a/tests/simple.c b/tests/simple.c index 9a017d269c..6c2b5e9846 100644 --- a/tests/simple.c +++ b/tests/simple.c @@ -38,7 +38,6 @@ main (int argc, char *argv[]) gtk_init (&argc, &argv); window = g_object_connect (g_object_new (gtk_window_get_type (), - "user_data", NULL, "type", GTK_WINDOW_TOPLEVEL, "title", "hello world", "resizable", FALSE, diff --git a/tests/testappchooser.c b/tests/testappchooser.c index a50f1b4e4c..6bf121a685 100644 --- a/tests/testappchooser.c +++ b/tests/testappchooser.c @@ -98,6 +98,8 @@ prepare_dialog (void) 0, content_type); } + gtk_app_chooser_dialog_set_heading (GTK_APP_CHOOSER_DIALOG (dialog), "Select one already, you <i>fool</i>"); + g_signal_connect (dialog, "response", G_CALLBACK (dialog_response), NULL); diff --git a/tests/testappchooserbutton.c b/tests/testappchooserbutton.c index 0416af72c5..664a3291d2 100644 --- a/tests/testappchooserbutton.c +++ b/tests/testappchooserbutton.c @@ -96,6 +96,7 @@ main (int argc, sel_name = gtk_label_new (NULL); gtk_box_pack_start (GTK_BOX (w), sel_name, TRUE, TRUE, 0); + gtk_app_chooser_button_set_heading (GTK_APP_CHOOSER_BUTTON (combobox), "Choose one, <i>not</i> two"); gtk_app_chooser_button_append_separator (GTK_APP_CHOOSER_BUTTON (combobox)); gtk_app_chooser_button_append_custom_item (GTK_APP_CHOOSER_BUTTON (combobox), CUSTOM_ITEM, diff --git a/tests/testclientmessage.c b/tests/testclientmessage.c deleted file mode 100644 index bd1a097108..0000000000 --- a/tests/testclientmessage.c +++ /dev/null @@ -1,122 +0,0 @@ -/* testclientmessage.c - * Copyright (C) 2008 Novell, Inc. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -#include <gtk/gtk.h> - -static GdkAtom my_type; -static GdkAtom random_type; - -static void -send_known (void) -{ - GdkEvent *event = gdk_event_new (GDK_CLIENT_EVENT); - static int counter = 42; - int i; - - event->client.window = NULL; - event->client.message_type = my_type; - event->client.data_format = 32; - event->client.data.l[0] = counter++; - for (i = 1; i < 5; i++) - event->client.data.l[i] = 0; - - gdk_screen_broadcast_client_message (gdk_display_get_default_screen (gdk_display_get_default ()), event); - - gdk_event_free (event); -} - -void -send_random (void) -{ - GdkEvent *event = gdk_event_new (GDK_CLIENT_EVENT); - static int counter = 1; - int i; - - event->client.window = NULL; - event->client.message_type = random_type; - event->client.data_format = 32; - event->client.data.l[0] = counter++; - for (i = 1; i < 5; i++) - event->client.data.l[i] = 0; - - gdk_screen_broadcast_client_message (gdk_display_get_default_screen (gdk_display_get_default ()), event); - - gdk_event_free (event); -} - -static GdkFilterReturn -filter_func (GdkXEvent *xevent, - GdkEvent *event, - gpointer data) -{ - g_print ("Got matching client message!\n"); - return GDK_FILTER_REMOVE; -} - -int -main (int argc, char **argv) -{ - GtkWidget *window; - GtkWidget *vbox; - GtkWidget *button; - - gtk_init (&argc, &argv); - - my_type = gdk_atom_intern ("GtkTestClientMessage", FALSE); - random_type = gdk_atom_intern (g_strdup_printf ("GtkTestClientMessage-%d", - g_rand_int_range (g_rand_new (), 1, 99)), - FALSE); - - g_print ("using random client message type %s\n", gdk_atom_name (random_type)); - - window = g_object_connect (g_object_new (gtk_window_get_type (), - "type", GTK_WINDOW_TOPLEVEL, - "title", "testclientmessage", - "border_width", 10, - NULL), - "signal::destroy", gtk_main_quit, NULL, - NULL); - vbox = g_object_new (gtk_vbox_get_type (), - "GtkWidget::parent", window, - "GtkWidget::visible", TRUE, - NULL); - button = g_object_connect (g_object_new (gtk_button_get_type (), - "GtkButton::label", "send known client message", - "GtkWidget::parent", vbox, - "GtkWidget::visible", TRUE, - NULL), - "signal::clicked", send_known, NULL, - NULL); - button = g_object_connect (g_object_new (gtk_button_get_type (), - "GtkButton::label", "send random client message", - "GtkWidget::parent", vbox, - "GtkWidget::visible", TRUE, - NULL), - "signal::clicked", send_random, NULL, - NULL); - gdk_display_add_client_message_filter (gdk_display_get_default (), - my_type, - filter_func, - NULL); - gtk_widget_show (window); - - gtk_main (); - - return 0; -} diff --git a/tests/testgtk.c b/tests/testgtk.c index 7b90a4242e..def6ded012 100644 --- a/tests/testgtk.c +++ b/tests/testgtk.c @@ -9532,26 +9532,6 @@ create_idle_test (GtkWidget *widget) */ void -reload_all_rc_files (void) -{ - static GdkAtom atom_rcfiles = GDK_NONE; - - GdkEvent *send_event = gdk_event_new (GDK_CLIENT_EVENT); - int i; - - if (!atom_rcfiles) - atom_rcfiles = gdk_atom_intern("_GTK_READ_RCFILES", FALSE); - - for(i = 0; i < 5; i++) - send_event->client.data.l[i] = 0; - send_event->client.data_format = 32; - send_event->client.message_type = atom_rcfiles; - gdk_event_send_clientmessage_toall (send_event); - - gdk_event_free (send_event); -} - -void create_rc_file (GtkWidget *widget) { static GtkWidget *window = NULL; @@ -9604,12 +9584,6 @@ create_rc_file (GtkWidget *widget) gtk_box_pack_start (GTK_BOX (action_area), button, TRUE, TRUE, 0); gtk_widget_grab_default (button); - button = gtk_button_new_with_label ("Reload All"); - g_signal_connect (button, "clicked", - G_CALLBACK (reload_all_rc_files), NULL); - gtk_widget_set_can_default (button, TRUE); - gtk_box_pack_start (GTK_BOX (action_area), button, TRUE, TRUE, 0); - button = gtk_button_new_with_label ("Close"); g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), diff --git a/tests/testgtk.css b/tests/testgtk.css index 24ed65547c..f1207f72a1 100644 --- a/tests/testgtk.css +++ b/tests/testgtk.css @@ -1,6 +1,11 @@ /* testgtk2.css sets all the buttons in the main window to blue by default */ @import url("testgtk2.css"); +@binding-set entry-bindings { + bind "<alt>s" { "move-cursor" (visual-positions, 3, 0) }; + bind "<alt>a" { "move-cursor" (visual-positions, -3, 0) }; +}; + * { -GtkButton-child-displacement-x: 1; -GtkButton-child-displacement-y: 1; @@ -31,3 +36,7 @@ GtkLabel:prelight { #main_window GtkScrolledWindow GtkButton:prelight { background-color: rgb (0%, 75%, 0); } + +GtkEntry { + gtk-key-bindings: entry-bindings; +} diff --git a/tests/testnoscreen.c b/tests/testnoscreen.c new file mode 100644 index 0000000000..cce8a5a3af --- /dev/null +++ b/tests/testnoscreen.c @@ -0,0 +1,47 @@ +/* testnoscreen.c + * Copyright (C) 2011 Red Hat, Inc. + * Authors: Matthias Clasen + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include <gtk/gtk.h> + +/* Very limited test to ensure that creating widgets works + * before opening a display connection + */ +int main (int argc, char *argv[]) +{ + GtkWidget *window; + GtkWidget *button; + GdkDisplay *display; + + gtk_parse_args (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + button = gtk_button_new (); + gtk_container_add (GTK_CONTAINER (window), button); + + display = gdk_display_open (NULL); + + gtk_window_set_screen (GTK_WINDOW (window), gdk_display_get_default_screen (display)); + + gtk_widget_show_all (window); + + gtk_main (); + + return 0; +} diff --git a/tests/testsensitive.c b/tests/testsensitive.c new file mode 100644 index 0000000000..52ed27e7cb --- /dev/null +++ b/tests/testsensitive.c @@ -0,0 +1,111 @@ +#include <gtk/gtk.h> + +static void +set_insensitive (GtkButton *b, GtkWidget *w) +{ + gtk_widget_set_sensitive (w, FALSE); +} + +static void +state_changed (GtkWidget *widget) +{ + GtkStateFlags flags; + const gchar *sep; + + g_print ("state changed: \n"); + switch (gtk_widget_get_state (widget)) + { + case GTK_STATE_ACTIVE: + g_print ("active, "); + break; + case GTK_STATE_PRELIGHT: + g_print ("prelight, "); + break; + case GTK_STATE_SELECTED: + g_print ("selected, "); + break; + case GTK_STATE_INSENSITIVE: + g_print ("insensitive, "); + break; + case GTK_STATE_INCONSISTENT: + g_print ("inconsistent, "); + break; + case GTK_STATE_FOCUSED: + g_print ("focused, "); + break; + case GTK_STATE_NORMAL: + g_print ("normal, "); + break; + } + + flags = gtk_widget_get_state_flags (widget); + sep = ""; + if (flags & GTK_STATE_FLAG_ACTIVE) + { + g_print ("%sactive", sep); + sep = "|"; + } + if (flags & GTK_STATE_FLAG_PRELIGHT) + { + g_print ("%sprelight", sep); + sep = "|"; + } + if (flags & GTK_STATE_FLAG_SELECTED) + { + g_print ("%sselected", sep); + sep = "|"; + } + if (flags & GTK_STATE_FLAG_INSENSITIVE) + { + g_print ("%sinsensitive", sep); + sep = "|"; + } + if (flags & GTK_STATE_FLAG_INCONSISTENT) + { + g_print ("%sinconsistent", sep); + sep = "|"; + } + if (flags & GTK_STATE_FLAG_FOCUSED) + { + g_print ("%sfocused", sep); + sep = "|"; + } + if (sep[0] == 0) + g_print ("normal"); + g_print ("\n"); +} + +int main (int argc, char *argv[]) +{ + GtkWidget *window; + GtkWidget *box; + GtkWidget *bu; + GtkWidget *w, *c; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5); + gtk_container_add (GTK_CONTAINER (window), box); + + w = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 15); + gtk_box_pack_start (GTK_BOX (box), w, TRUE, TRUE, 0); + gtk_box_pack_start (GTK_BOX (w), gtk_entry_new (), TRUE, TRUE, 0); + bu = gtk_button_new_with_label ("Bu"); + gtk_box_pack_start (GTK_BOX (w), bu, TRUE, TRUE, 0); + c = gtk_switch_new (); + gtk_switch_set_active (GTK_SWITCH (c), TRUE); + gtk_widget_set_halign (c, GTK_ALIGN_CENTER); + gtk_widget_set_valign (c, GTK_ALIGN_CENTER); + gtk_box_pack_start (GTK_BOX (box), c, TRUE, TRUE, 0); + g_signal_connect (bu, "clicked", G_CALLBACK (set_insensitive), w); + g_signal_connect (bu, "state-changed", G_CALLBACK (state_changed), NULL); + + g_object_bind_property (c, "active", w, "sensitive", G_BINDING_BIDIRECTIONAL); + + gtk_widget_show_all (window); + + gtk_main (); + + return 0; +} diff --git a/tests/testsocket.c b/tests/testsocket.c index a17a74970e..f936ae520f 100644 --- a/tests/testsocket.c +++ b/tests/testsocket.c @@ -21,6 +21,7 @@ #include "config.h" #include <gtk/gtk.h> +#include <gtk/gtkx.h> #include <string.h> #include <stdlib.h> @@ -249,7 +250,7 @@ void add_local_passive_child (GtkWidget *window) { Socket *socket; - GdkNativeWindow xid; + Window xid; socket = create_socket (); gtk_box_pack_start (GTK_BOX (box), socket->box, TRUE, TRUE, 0); diff --git a/tests/testsocket_common.c b/tests/testsocket_common.c index 6dcabb35df..84faa14672 100644 --- a/tests/testsocket_common.c +++ b/tests/testsocket_common.c @@ -21,7 +21,7 @@ #include "config.h" #include <gtk/gtk.h> #if defined (GDK_WINDOWING_X11) -#include "x11/gdkx.h" +#include <gtk/gtkx.h> #elif defined (GDK_WINDOWING_WIN32) #include "win32/gdkwin32.h" #endif diff --git a/tests/testtoolbar.c b/tests/testtoolbar.c index f45da9ccda..38056cd1cd 100644 --- a/tests/testtoolbar.c +++ b/tests/testtoolbar.c @@ -24,24 +24,6 @@ #include "prop-editor.h" static void -reload_clicked (GtkWidget *widget) -{ - static GdkAtom atom_rcfiles = GDK_NONE; - - GdkEventClient sev; - int i; - - if (!atom_rcfiles) - atom_rcfiles = gdk_atom_intern("_GTK_READ_RCFILES", FALSE); - - for(i = 0; i < 5; i++) - sev.data.l[i] = 0; - sev.data_format = 32; - sev.message_type = atom_rcfiles; - gdk_event_send_clientmessage_toall ((GdkEvent *) &sev); -} - -static void change_orientation (GtkWidget *button, GtkWidget *toolbar) { GtkWidget *table; @@ -635,11 +617,6 @@ main (gint argc, gchar **argv) add_item_to_list (store, item, "-----"); gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1); - item = gtk_tool_button_new_from_stock (GTK_STOCK_REFRESH); - add_item_to_list (store, item, "Refresh"); - g_signal_connect (item, "clicked", G_CALLBACK (reload_clicked), NULL); - gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, -1); - image = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_DIALOG); item = gtk_tool_item_new (); gtk_widget_show (image); diff --git a/tests/testtreepos.c b/tests/testtreepos.c new file mode 100644 index 0000000000..20db78f7e0 --- /dev/null +++ b/tests/testtreepos.c @@ -0,0 +1,140 @@ +#include <gtk/gtk.h> + +static gboolean +clicked_icon (GtkTreeView *tv, + gint x, + gint y, + GtkTreePath **path) +{ + GtkTreeViewColumn *col; + gint cell_x, cell_y; + gint cell_pos, cell_width; + GList *cells, *l; + gint depth; + gint level_indentation; + gint expander_size; + gint indent; + + if (gtk_tree_view_get_path_at_pos (tv, x, y, path, &col, &cell_x, &cell_y)) + { + cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (col)); + +#if 1 + /* ugly workaround to fix the problem: + * manually calculate the indent for the row + */ + depth = gtk_tree_path_get_depth (*path); + level_indentation = gtk_tree_view_get_level_indentation (tv); + gtk_widget_style_get (GTK_WIDGET (tv), "expander-size", &expander_size, NULL); + expander_size += 4; + indent = (depth - 1) * level_indentation + depth * expander_size; +#else + indent = 0; +#endif + + for (l = cells; l; l = l->next) + { + gtk_tree_view_column_cell_get_position (col, l->data, &cell_pos, &cell_width); + if (cell_pos + indent <= cell_x && cell_x <= cell_pos + indent + cell_width) + { + g_print ("clicked in %s\n", g_type_name_from_instance (l->data)); + if (GTK_IS_CELL_RENDERER_PIXBUF (l->data)) + { + g_list_free (cells); + return TRUE; + } + } + } + + g_list_free (cells); + } + + return FALSE; +} + +static gboolean +release_event (GtkTreeView *tv, + GdkEventButton *event) +{ + GtkTreePath *path; + + if (event->type != GDK_BUTTON_RELEASE) + return TRUE; + + if (clicked_icon (tv, event->x, event->y, &path)) + { + GtkTreeModel *model; + GtkTreeIter iter; + gchar *text; + + model = gtk_tree_view_get_model (tv); + gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_model_get (model, &iter, 0, &text, -1); + + g_print ("text was: %s\n", text); + g_free (text); + gtk_tree_path_free (path); + + return TRUE; + } + + return FALSE; +} + +int main (int argc, char *argv[]) +{ + GtkWidget *window; + GtkWidget *sw; + GtkWidget *tv; + GtkTreeViewColumn *col; + GtkCellRenderer *cell; + GtkTreeStore *store; + GtkTreeIter iter; + + gtk_init (&argc, &argv); + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_container_add (GTK_CONTAINER (window), sw); + tv = gtk_tree_view_new (); + gtk_container_add (GTK_CONTAINER (sw), tv); + + col = gtk_tree_view_column_new (); + cell = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start (col, cell, TRUE); + gtk_tree_view_column_add_attribute (col, cell, "text", 0); + + cell = gtk_cell_renderer_toggle_new (); + gtk_tree_view_column_pack_start (col, cell, FALSE); + gtk_tree_view_column_add_attribute (col, cell, "active", 1); + + cell = gtk_cell_renderer_text_new (); + gtk_tree_view_column_pack_start (col, cell, TRUE); + gtk_tree_view_column_add_attribute (col, cell, "text", 0); + + cell = gtk_cell_renderer_pixbuf_new (); + gtk_tree_view_column_pack_start (col, cell, FALSE); + gtk_tree_view_column_add_attribute (col, cell, "stock-id", 2); + + cell = gtk_cell_renderer_toggle_new (); + gtk_tree_view_column_pack_start (col, cell, FALSE); + gtk_tree_view_column_add_attribute (col, cell, "active", 1); + + gtk_tree_view_append_column (GTK_TREE_VIEW (tv), col); + + store = gtk_tree_store_new (3, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_STRING); + gtk_tree_store_insert_with_values (store, NULL, NULL, 0, 0, "One row", 1, FALSE, 2, "gtk-open", -1); + gtk_tree_store_insert_with_values (store, &iter, NULL, 1, 0, "Two row", 1, FALSE, 2, "gtk-file", -1); + gtk_tree_store_insert_with_values (store, NULL, &iter, 0, 0, "Three row", 1, FALSE, 2, "gtk-file", -1); + + gtk_tree_view_set_model (GTK_TREE_VIEW (tv), GTK_TREE_MODEL (store)); + + g_signal_connect (tv, "button-release-event", + G_CALLBACK (release_event), NULL); + + gtk_widget_show_all (window); + + gtk_main (); + + return 0; +} |