[gtk+/treeview-refactor] Added gtk_cell_area_stop_editing to allow explicit stopping of cell editing.



commit 09e3d9d3aaafa1b756120afcd5d2a80f4ae13439
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Sat Nov 6 15:42:37 2010 +0900

    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 f9485aa..d997af0 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 7fc450d..a0cc50f 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);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]