## GtkCellEditable GtkCellEditable — Interface for widgets which can are used for editing cells |

## Synopsis

    #include <gtk/gtk.h>

                        GtkCellEditable;
                        GtkCellEditableIface;
    void                gtk_cell_editable_start_editing     (GtkCellEditable *cell_editable,
                                                             GdkEvent *event);
    void                gtk_cell_editable_editing_done      (GtkCellEditable *cell_editable);
    void                gtk_cell_editable_remove_widget     (GtkCellEditable *cell_editable);

## Object Hierarchy

      GInterface
       +----GtkCellEditable

## Prerequisites

GtkCellEditable requires GInitiallyUnowned and GtkWidget.

## Known Implementations

GtkCellEditable is implemented by GtkEntry, GtkComboBox, GtkSpinButton and GtkComboBoxEntry.

## Signals

      "editing-done"                                   : Run Last
      "remove-widget"                                  : Run Last

## Description

The GtkCellEditable interface must be implemented for widgets to be usable when editing the contents of a GtkTreeView cell.

## Details

### GtkCellEditable

    typedef struct _GtkCellEditable GtkCellEditable;

### GtkCellEditableIface

    typedef struct {
      GTypeInterface g_iface;

      /* signals */
      void (* editing_done)  (GtkCellEditable *cell_editable);
      void (* remove_widget) (GtkCellEditable *cell_editable);

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

### gtk_cell_editable_start_editing ()

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

Begins editing on a `cell_editable`. `event` is the GdkEvent that began the editing process. It may be `NULL`, in the instance that editing was initiated through programatic means.

`cell_editable` : | A GtkCellEditable
`event` : | A GdkEvent, or `NULL`

### gtk_cell_editable_editing_done ()

    void                gtk_cell_editable_editing_done      (GtkCellEditable *cell_editable);

Emits the "editing-done" signal.

`cell_editable` : | A GtkTreeEditable

### gtk_cell_editable_remove_widget ()

    void                gtk_cell_editable_remove_widget     (GtkCellEditable *cell_editable);

Emits the "remove-widget" signal.

`cell_editable` : | A GtkTreeEditable

## Signal Details

### The `"editing-done"` signal

    void                user_function                      (GtkCellEditable *cell_editable,
                                                            gpointer         user_data)          : Run Last

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 is emitting it when the user presses Enter.

`gtk_cell_editable_editing_done()` is a convenience method for emitting ::editing-done.

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

### The `"remove-widget"` signal

    void                user_function                      (GtkCellEditable *cell_editable,
                                                            gpointer         user_data)          : Run Last

This signal is meant to indicate that the cell is finished editing, and the widget may now 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.

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