]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcellarea.c
Fixed gtk_cell_area_stop_editing() to properly notify when editing is not canceled
[~andy/gtk] / gtk / gtkcellarea.c
index 590d492644bfad46bc4e171e02457992f7d86ccc..9764448cba6ec003d7069e2c14b1786f70995c95 100644 (file)
@@ -3464,11 +3464,14 @@ gtk_cell_area_activate_cell (GtkCellArea          *area,
  * @area: a #GtkCellArea
  * @canceled: whether editing was canceled.
  *
- * Explicitly stops the editing of the currently
- * edited cell (see gtk_cell_area_get_edited_cell()).
+ * Explicitly stops the editing of the currently edited cell.
  *
- * If @canceled is %TRUE, the cell renderer will emit
- * the ::editing-canceled signal.
+ * If @canceled is %TRUE, the currently edited cell renderer
+ * will emit the ::editing-canceled signal, otherwise the
+ * the ::editing-done signal will be emitted on the current
+ * edit widget.
+ *
+ * See gtk_cell_area_get_edited_cell() and gtk_cell_area_get_edit_widget().
  *
  * Since: 3.0
  */
@@ -3490,6 +3493,13 @@ gtk_cell_area_stop_editing (GtkCellArea *area,
       /* Stop editing of the cell renderer */
       gtk_cell_renderer_stop_editing (priv->edited_cell, canceled);
 
+      /* When editing is explicitly halted either
+       * the "editing-canceled" signal is emitted on the cell 
+       * renderer or the "editing-done" signal on the GtkCellEditable widget
+       */
+      if (!canceled)
+       gtk_cell_editable_editing_done (edit_widget);
+
       /* Remove any references to the editable widget */
       gtk_cell_area_set_edited_cell (area, NULL);
       gtk_cell_area_set_edit_widget (area, NULL);