Здравствуйте! Необходимо, чтобы в dconf-editor-e значения ключей можно было отредактировать не только кликом по строке в области столбца «Значение», но и без использования мыши. Для этого к GtkTreeView я подключил обработчик сигнала «row-activated», который срабатывает при нажатии, например, кнопки Enter. Вопрос: как вызвать из этого обработчика то событие, которое возникает при клике мышью? Код, приведенный ниже, работает на чекбаттонах и не работает на комбобоксах и спинбаттонах. Спасибо.
static void on_key_tree_view_row_activated(GtkTreeView *tree_view,
GtkTreePath *path,
GtkTreeViewColumn *column,
gpointer user_data)
{
printf("key row-activated\n");
GdkRectangle rect;
gtk_tree_view_get_cell_area (tree_view, path, column, &rect);
gchar *path_string = gtk_tree_path_to_string (path);
GtkCellRenderer *cell = NULL;
GdkEvent *event = gdk_event_new(GDK_BUTTON_PRESS);
/* Get the second column */
GtkTreeViewColumn *key_column = gtk_tree_view_get_column( GTK_TREE_VIEW( tree_view ), 1 );
/* Get renderers in that column */
GList *list = gtk_cell_layout_get_cells( GTK_CELL_LAYOUT( key_column ) );
g_assert (g_list_length (list) == 1);
cell = g_list_nth_data (list, 0);
g_assert (cell);
gboolean event_was_handled =
gtk_cell_renderer_activate
//gtk_cell_renderer_start_editing
(cell,
event,
GTK_WIDGET(tree_view),
path_string,
&rect,
&rect,
GTK_CELL_RENDERER_SELECTED);
g_list_free( list );
g_free(path_string);
printf("event was %s handled\n", event_was_handled ? "":"not");
}