Added gtk_cell_area_stop_editing to allow explicit stopping of cell editing.

This commit is contained in:
Tristan Van Berkom 2010-11-06 15:42:37 +09:00
parent cbe1154e51
commit 09e3d9d3aa
2 changed files with 28 additions and 9 deletions

View File

@ -618,15 +618,8 @@ gtk_cell_area_real_event (GtkCellArea *area,
else if (priv->edited_cell && else if (priv->edited_cell &&
(key_event->keyval == GDK_KEY_Escape)) (key_event->keyval == GDK_KEY_Escape))
{ {
/* Cancel editing of the cell renderer */ gtk_cell_area_stop_editing (area, TRUE);
gtk_cell_renderer_stop_editing (priv->edited_cell, TRUE); return 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);
} }
} }
@ -2101,6 +2094,30 @@ gtk_cell_area_activate_cell (GtkCellArea *area,
return FALSE; 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 * * API: Margins *

View File

@ -292,6 +292,8 @@ gboolean gtk_cell_area_activate_cell (GtkCellArea
GdkEvent *event, GdkEvent *event,
const GdkRectangle *cell_area, const GdkRectangle *cell_area,
GtkCellRendererState flags); GtkCellRendererState flags);
void gtk_cell_area_stop_editing (GtkCellArea *area,
gboolean canceled);
/* Margins */ /* Margins */
gint gtk_cell_area_get_cell_margin_left (GtkCellArea *area); gint gtk_cell_area_get_cell_margin_left (GtkCellArea *area);