]> Pileus Git - ~andy/gtk/commitdiff
Added gtk_cell_area_stop_editing to allow explicit stopping of cell editing.
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Sat, 6 Nov 2010 06:42:37 +0000 (15:42 +0900)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Mon, 8 Nov 2010 02:31:03 +0000 (11:31 +0900)
gtk/gtkcellarea.c
gtk/gtkcellarea.h

index f9485aa5f2de1ed85dcaadfb93f784f5848d6e7b..d997af06a37b2ebb28b1f2e69ae99d4194cc309b 100644 (file)
@@ -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                       *
index 7fc450d49719bebf0c41c76ef393fe8b7c67942f..a0cc50f0059034bcbaafa1af7c630d8dd02f74ed 100644 (file)
@@ -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);