From 09e3d9d3aaafa1b756120afcd5d2a80f4ae13439 Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Sat, 6 Nov 2010 15:42:37 +0900 Subject: [PATCH] Added gtk_cell_area_stop_editing to allow explicit stopping of cell editing. --- gtk/gtkcellarea.c | 35 ++++++++++++++++++++++++++--------- gtk/gtkcellarea.h | 2 ++ 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/gtk/gtkcellarea.c b/gtk/gtkcellarea.c index f9485aa5f2..d997af06a3 100644 --- a/gtk/gtkcellarea.c +++ b/gtk/gtkcellarea.c @@ -618,15 +618,8 @@ gtk_cell_area_real_event (GtkCellArea *area, else if (priv->edited_cell && (key_event->keyval == GDK_KEY_Escape)) { - /* Cancel editing of the cell renderer */ - gtk_cell_renderer_stop_editing (priv->edited_cell, TRUE); - - /* Signal that editing has been canceled */ - gtk_cell_area_editing_canceled (area, priv->edited_cell); - - /* Remove any references to the editable widget */ - gtk_cell_area_set_edited_cell (area, NULL); - gtk_cell_area_set_edit_widget (area, NULL); + gtk_cell_area_stop_editing (area, TRUE); + return TRUE; } } @@ -2101,6 +2094,30 @@ gtk_cell_area_activate_cell (GtkCellArea *area, return FALSE; } +void +gtk_cell_area_stop_editing (GtkCellArea *area, + gboolean canceled) +{ + GtkCellAreaPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_AREA (area)); + + priv = area->priv; + + if (priv->edited_cell) + { + /* Stop editing of the cell renderer */ + gtk_cell_renderer_stop_editing (priv->edited_cell, canceled); + + /* Signal that editing has been canceled */ + if (canceled) + gtk_cell_area_editing_canceled (area, priv->edited_cell); + + /* Remove any references to the editable widget */ + gtk_cell_area_set_edited_cell (area, NULL); + gtk_cell_area_set_edit_widget (area, NULL); + } +} /************************************************************* * API: Margins * diff --git a/gtk/gtkcellarea.h b/gtk/gtkcellarea.h index 7fc450d497..a0cc50f005 100644 --- a/gtk/gtkcellarea.h +++ b/gtk/gtkcellarea.h @@ -292,6 +292,8 @@ gboolean gtk_cell_area_activate_cell (GtkCellArea GdkEvent *event, const GdkRectangle *cell_area, GtkCellRendererState flags); +void gtk_cell_area_stop_editing (GtkCellArea *area, + gboolean canceled); /* Margins */ gint gtk_cell_area_get_cell_margin_left (GtkCellArea *area);