X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcelleditable.c;h=09f47533b010987a6fbb1f357e221d889b44a67b;hb=2b2d7aa30509e1b74f00e2b1809d7a646455dd3b;hp=08e31e52f505391e3fa1fe25d2d7e68333f8b345;hpb=f8b8bb4bf914e969f718c70f022fe9b3cd0ca4af;p=~andy%2Fgtk diff --git a/gtk/gtkcelleditable.c b/gtk/gtkcelleditable.c index 08e31e52f..09f47533b 100644 --- a/gtk/gtkcelleditable.c +++ b/gtk/gtkcelleditable.c @@ -17,120 +17,95 @@ * Boston, MA 02111-1307, USA. */ +/** + * SECTION:gtkcelleditable + * @Short_description: Interface for widgets which can are used for editing + * cells + * @Title: GtkCellEditable + * @See_also: #GtkEntry, #GtkCellRenderer + * + * The #GtkCellEditable interface must be implemented for widgets to be usable + * when editing the contents of a #GtkTreeView cell. + */ #include "config.h" #include "gtkcelleditable.h" #include "gtkmarshalers.h" #include "gtkprivate.h" #include "gtkintl.h" -#include "gtkalias.h" - -static void gtk_cell_editable_base_init (GtkCellEditableIface *iface); - -GType -gtk_cell_editable_get_type (void) -{ - static GType cell_editable_type = 0; - - if (! cell_editable_type) - { - const GTypeInfo cell_editable_info = - { - sizeof (GtkCellEditableIface), /* class_size */ - (GBaseInitFunc) gtk_cell_editable_base_init, /* base_init */ - NULL, /* base_finalize */ - NULL, - NULL, /* class_finalize */ - NULL, /* class_data */ - 0, - 0, - NULL - }; - cell_editable_type = - g_type_register_static (G_TYPE_INTERFACE, I_("GtkCellEditable"), - &cell_editable_info, 0); - g_type_interface_add_prerequisite (cell_editable_type, GTK_TYPE_WIDGET); - } - - return cell_editable_type; -} +typedef GtkCellEditableIface GtkCellEditableInterface; +G_DEFINE_INTERFACE(GtkCellEditable, gtk_cell_editable, GTK_TYPE_WIDGET) static void -gtk_cell_editable_base_init (GtkCellEditableIface *iface) +gtk_cell_editable_default_init (GtkCellEditableInterface *iface) { - static gboolean initialized = FALSE; - - if (! initialized) - { - /** - * GtkCellEditable:editing-canceled: - * - * Indicates whether editing on the cell has been canceled. - * - * Since: 2.20 - **/ - g_object_interface_install_property (iface, - g_param_spec_boolean ("editing-canceled", - P_("Editing Canceled"), - P_("Indicates that editing has been canceled"), - FALSE, - GTK_PARAM_READWRITE)); - - /** - * GtkCellEditable::editing-done: - * @cell_editable: the object on which the signal was emitted - * - * 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. - */ - g_signal_new (I_("editing-done"), - GTK_TYPE_CELL_EDITABLE, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkCellEditableIface, editing_done), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - /** - * GtkCellEditable::remove-widget: - * @cell_editable: the object on which the signal was emitted - * - * 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 #GtkCellEditable::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. - */ - g_signal_new (I_("remove-widget"), - GTK_TYPE_CELL_EDITABLE, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GtkCellEditableIface, remove_widget), - NULL, NULL, - _gtk_marshal_VOID__VOID, - G_TYPE_NONE, 0); - initialized = TRUE; - } + /** + * GtkCellEditable:editing-canceled: + * + * Indicates whether editing on the cell has been canceled. + * + * Since: 2.20 + */ + g_object_interface_install_property (iface, + g_param_spec_boolean ("editing-canceled", + P_("Editing Canceled"), + P_("Indicates that editing has been canceled"), + FALSE, + GTK_PARAM_READWRITE)); + + /** + * GtkCellEditable::editing-done: + * @cell_editable: the object on which the signal was emitted + * + * 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 #GtkCellEditable::editing-done. + */ + g_signal_new (I_("editing-done"), + GTK_TYPE_CELL_EDITABLE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkCellEditableIface, editing_done), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /** + * GtkCellEditable::remove-widget: + * @cell_editable: the object on which the signal was emitted + * + * 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 #GtkCellEditable::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 #GtkCellEditable::remove-widget. + */ + g_signal_new (I_("remove-widget"), + GTK_TYPE_CELL_EDITABLE, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (GtkCellEditableIface, remove_widget), + NULL, NULL, + _gtk_marshal_VOID__VOID, + G_TYPE_NONE, 0); } /** * gtk_cell_editable_start_editing: * @cell_editable: A #GtkCellEditable - * @event: A #GdkEvent, or %NULL + * @event: (allow-none): A #GdkEvent, or %NULL * * 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 @@ -172,6 +147,3 @@ gtk_cell_editable_remove_widget (GtkCellEditable *cell_editable) g_signal_emit_by_name (cell_editable, "remove-widget"); } - -#define __GTK_CELL_EDITABLE_C__ -#include "gtkaliasdef.c"