+ else if (action == CELL_ACTION_EVENT)
+ {
+ gint x_offset, y_offset, width, height;
+ gboolean try_event = FALSE;
+
+ if (event)
+ {
+ if (real_cell_area.x <= ((GdkEventButton *)event)->x &&
+ real_cell_area.x + real_cell_area.width > ((GdkEventButton *)event)->x)
+ try_event = TRUE;
+ }
+ else /* if (info->has_focus)*/
+ /* FIXME 73676: allow focusing individual cells */
+ {
+ try_event = TRUE;
+ }
+ if (try_event)
+ {
+ gboolean visible, mode;
+
+ g_object_get (G_OBJECT (info->cell),
+ "visible", &visible,
+ "mode", &mode,
+ NULL);
+ if (visible && mode == GTK_CELL_RENDERER_MODE_ACTIVATABLE)
+ {
+ if (gtk_cell_renderer_activate (info->cell,
+ event,
+ tree_column->tree_view,
+ path_string,
+ background_area,
+ cell_area,
+ flags))
+ return TRUE;
+ }
+ else if (visible && mode == GTK_CELL_RENDERER_MODE_EDITABLE)
+ {
+ *editable_widget =
+ gtk_cell_renderer_start_editing (info->cell,
+ event,
+ tree_column->tree_view,
+ path_string,
+ background_area,
+ cell_area,
+ flags);
+
+ if (*editable_widget != NULL)
+ {
+ g_return_val_if_fail (GTK_IS_CELL_EDITABLE (*editable_widget), FALSE);
+
+ return TRUE;
+ }
+ }
+ }
+ }