## GtkCellEditable GtkCellEditable — Interface for widgets that can be used for editing cells |

## Functions

void | gtk_cell_editable_start_editing ()
void | gtk_cell_editable_editing_done ()
void | gtk_cell_editable_remove_widget ()

## Properties

gboolean | editing-canceled | Read / Write

## Signals

void | editing-done | Run Last
void | remove-widget | Run Last

## Types and Values

| GtkCellEditable
struct | GtkCellEditableIface

## Object Hierarchy

        GInterface
        ╰── GtkCellEditable

## Prerequisites

GtkCellEditable requires GtkWidget.

## Known Implementations

GtkCellEditable is implemented by GtkAppChooserButton, GtkComboBox, GtkComboBoxText, GtkEntry, GtkSearchEntry and GtkSpinButton.

## Includes

    #include <gtk/gtk.h>

## Description

The GtkCellEditable interface must be implemented for widgets to be usable to edit the contents of a GtkTreeView cell. It provides a way to specify how temporary widgets should be configured for editing, get the new value, etc.

## Functions

### gtk_cell_editable_start_editing ()

    void
    gtk_cell_editable_start_editing (GtkCellEditable *cell_editable,
                                     GdkEvent *event);

Begins editing on a `cell_editable` .

The GtkCellRenderer for the cell creates and returns a GtkCellEditable from `gtk_cell_renderer_start_editing()`, configured for the GtkCellRenderer type.

gtk_cell_editable_start_editing() can then set up `cell_editable` suitably for editing a cell, e.g. making the Esc key emit “editing-done”.

Note that the `cell_editable` is created on-demand for the current edit; its lifetime is temporary and does not persist across other edits and/or cells.

#### Parameters

cell_editable | A GtkCellEditable |
event | The GdkEvent that began the editing process, or `NULL` if editing was initiated programmatically. | [nullable]

### gtk_cell_editable_editing_done ()

    void
    gtk_cell_editable_editing_done (GtkCellEditable *cell_editable);

Emits the “editing-done” signal.

#### Parameters

cell_editable | A GtkCellEditable |

### gtk_cell_editable_remove_widget ()

    void
    gtk_cell_editable_remove_widget (GtkCellEditable *cell_editable);

Emits the “remove-widget” signal.

#### Parameters

cell_editable | A GtkCellEditable |

## Types and Values

### GtkCellEditable

    typedef struct _GtkCellEditable GtkCellEditable;

### struct GtkCellEditableIface

    struct GtkCellEditableIface {
      /* signals */
      void (* editing_done)  (GtkCellEditable *cell_editable);
      void (* remove_widget) (GtkCellEditable *cell_editable);

      /* virtual table */
      void (* start_editing) (GtkCellEditable *cell_editable,
    			  GdkEvent        *event);
    };

#### Members

`editing_done` () | Signal is a sign for the cell renderer to update its value from the cell_editable. |
`remove_widget` () | Signal is meant to indicate that the cell is finished editing, and the widget may now be destroyed. |
`start_editing` () | Begins editing on a cell_editable. |

## Property Details

### The `“editing-canceled”` property

      “editing-canceled”         gboolean

Indicates whether editing on the cell has been canceled.

Owner: GtkCellEditable

Flags: Read / Write

Default value: FALSE

Since: 2.20

## Signal Details

### The `“editing-done”` signal

    void
    user_function (GtkCellEditable *cell_editable,
                   gpointer         user_data)

This signal is a sign for the cell renderer to update its value from the `cell_editable` .

Implementations of GtkCellEditable are responsible for emitting this signal when they are done editing, e.g. GtkEntry emits this signal when the user presses Enter. Typical things to do in a handler for ::editing-done are to capture the edited value, disconnect the `cell_editable` from signals on the GtkCellRenderer, etc.

gtk_cell_editable_editing_done() is a convenience method for emitting “editing-done”.

#### Parameters

cell_editable | the object on which the signal was emitted |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“remove-widget”` signal

    void
    user_function (GtkCellEditable *cell_editable,
                   gpointer         user_data)

This signal is meant to indicate that the cell is finished editing, and the `cell_editable` widget is being removed and may subsequently be destroyed.

Implementations of GtkCellEditable are responsible for emitting this signal when they are done editing. It must be emitted after the “editing-done” signal, to give the cell renderer a chance to update the cell's value before the widget is removed.

gtk_cell_editable_remove_widget() is a convenience method for emitting “remove-widget”.

#### Parameters

cell_editable | the object on which the signal was emitted |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

## See Also

GtkCellRenderer