Hi, I am working on a C++ GTK project. I have a GtkTreeView containing several columns. In the first column, I have packed in 3 cell renderers - the first, a GtkCellRendererToggle; the second, a GtkCellRendererPixbuf; the third, a GtkCellRendererText. Everything works fine, except that clicking on the text in the GtkCellRendererText causes the 'toggled' event to fire on the GtkCellRendererToggle. This is no good in this particular case. Is there any way, besides keeping track of where the mouse pointer is, to determine whether the user clicked on the checkbox itself or another cell renderer in the same column? Thanks in advance for any ideas.
Here is my code for adding the columns: enum pkgPropDependencies_columns { PKG_PROP_DEPENDENCIES_COLUMN_CHECKMARK, PKG_PROP_DEPENDENCIES_COLUMN_CHECKMARK_ENABLED, PKG_PROP_DEPENDENCIES_COLUMN_ICON, PKG_PROP_DEPENDENCIES_COLUMN_REQ, PKG_PROP_DEPENDENCIES_COLUMN_PKG_INDEX, PKG_PROP_DEPENDENCIES_COLUMN_DEP_ADDRESS, PKG_PROP_DEPENDENCIES_COLUMN_TREE_POINT_INDEX, PKG_PROP_DEPENDENCIES_COLUMN_DEP_LEVEL, PKG_PROP_DEPENDENCIES_COLUMN_VERSION }; ... void pkgPropDependencies_addColumns() { GtkCellRenderer *renderer; GtkTreeViewColumn *column; /*first column - checkmark, icon & name of package + required version*/ column=gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, "Requirement"); renderer=gtk_cell_renderer_toggle_new(); g_signal_connect(renderer, "toggled", G_CALLBACK(on_pkgPropDependencies_column0_toggled), NULL); gtk_tree_view_column_pack_start(column, renderer, false); gtk_tree_view_column_add_attribute(column, renderer, "active", PKG_PROP_DEPENDENCIES_COLUMN_CHECKMARK); gtk_tree_view_column_add_attribute(column, renderer, "activatable", PKG_PROP_DEPENDENCIES_COLUMN_CHECKMARK_ENABLED); renderer=gtk_cell_renderer_pixbuf_new(); gtk_tree_view_column_pack_start(column, renderer, false); gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", PKG_PROP_DEPENDENCIES_COLUMN_ICON); renderer=gtk_cell_renderer_text_new(); g_object_set(renderer, "mode", GTK_CELL_RENDERER_MODE_INERT, NULL); gtk_tree_view_column_pack_start(column, renderer, true); gtk_tree_view_column_add_attribute(column, renderer, "text", PKG_PROP_DEPENDENCIES_COLUMN_REQ); gtk_tree_view_append_column(pkgPropDependencies, column); /*second column - index of package (invisible)*/ column=gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, "Package Index"); renderer=gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, true); gtk_tree_view_column_add_attribute(column, renderer, "text", PKG_PROP_DEPENDENCIES_COLUMN_PKG_INDEX); column->visible=false; gtk_tree_view_append_column(pkgPropDependencies, column); /*third column - address of dependency (invisible)*/ column=gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, "Dependency Address"); renderer=gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, true); gtk_tree_view_column_add_attribute(column, renderer, "text", PKG_PROP_DEPENDENCIES_COLUMN_DEP_ADDRESS); column->visible=false; gtk_tree_view_append_column(pkgPropDependencies, column); /*fourth column - tree point index (invisible)*/ column=gtk_tree_view_column_new(); gtk_tree_view_column_set_title(column, "Tree Point Index"); renderer=gtk_cell_renderer_text_new(); gtk_tree_view_column_pack_start(column, renderer, true); gtk_tree_view_column_add_attribute(column, renderer, "text", PKG_PROP_DEPENDENCIES_COLUMN_TREE_POINT_INDEX); column->visible=false; gtk_tree_view_append_column(pkgPropDependencies, column); /*fifth column - level of dependency*/ renderer=gtk_cell_renderer_text_new(); column=gtk_tree_view_column_new_with_attributes("Dependence Level", renderer, "text", PKG_PROP_DEPENDENCIES_COLUMN_DEP_LEVEL, NULL); gtk_tree_view_append_column(pkgPropDependencies, column); /*sixth column - name of package used to fulfill requirement, if one is needed*/ renderer=gtk_cell_renderer_combo_new(); pkgPropDependencies_depVersionComboModel=GTK_TREE_MODEL(gtk_list_store_new(1, G_TYPE_STRING)); g_object_set(GTK_CELL_RENDERER_COMBO(renderer), "model", pkgPropDependencies_depVersionComboModel, "has-entry", false, "text-column", 0, "editable", true, NULL); g_signal_connect(renderer, "edited", G_CALLBACK(on_pkgPropDependencies_depVersionCombo_changed), NULL); column=gtk_tree_view_column_new_with_attributes("Version to Be Installed", renderer, "text", PKG_PROP_DEPENDENCIES_COLUMN_VERSION, NULL); gtk_tree_view_append_column(pkgPropDependencies, column); } -- Grumpy Buffalo -- Grumpy Buffalo _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list