]> Pileus Git - ~andy/gtk/commitdiff
Add editable interface. This should be the last big GtkTreeView API
authorJonathan Blandford <jrb@redhat.com>
Mon, 17 Sep 2001 21:44:20 +0000 (21:44 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Mon, 17 Sep 2001 21:44:20 +0000 (21:44 +0000)
Mon Sep 17 17:39:52 2001  Jonathan Blandford  <jrb@redhat.com>

* gtk/gtkcelleditable.[ch]: Add editable interface.  This should
be the last big GtkTreeView API change.

* gtk/gtkcellrenderer.[ch]: Get rid of the "event" vfunc, and
replace with "activate" and "start_editing".  Also, added a
"can_activate" and "can_edit" property.

* gtk/gtktreeviewcolumn.c: modify to use above.

20 files changed:
ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
docs/reference/gtk/tmpl/gtk-unused.sgml
docs/reference/gtk/tmpl/gtkcellrenderer.sgml
gtk/Makefile.am
gtk/gtkcelleditable.c [new file with mode: 0644]
gtk/gtkcelleditable.h [new file with mode: 0644]
gtk/gtkcellrenderer.c
gtk/gtkcellrenderer.h
gtk/gtkcellrenderertoggle.c
gtk/gtkstyle.c
gtk/gtktreesortable.c
gtk/gtktreeview.c
gtk/gtktreeviewcolumn.c
gtk/gtktreeviewcolumn.h

index 8011ff903f251f88b32c5747c2637bb6cde92395..d704d0b307bb9b26601174e66ef20290fc731d2d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,17 @@
+Mon Sep 17 17:39:52 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkcelleditable.[ch]: Add editable interface.  This should
+       be the last big GtkTreeView API change.
+
+       * gtk/gtkcellrenderer.[ch]: Get rid of the "event" vfunc, and
+       replace with "activate" and "start_editing".  Also, added a
+       "can_activate" and "can_edit" property.
+
+       * gtk/gtktreeviewcolumn.c: modify to use above.
+
 2001-09-16  Alexander Larsson  <alla@lysator.liu.se>
 
-       * gtk/gtkoptionmenu.c:
-       Handle scroll wheel events.
+       * gtk/gtkoptionmenu.c:  Handle scroll wheel events.
 
 Fri Sep 14 22:31:25 2001  Matthias Clasen  <matthiasc@poet.de>
 
index 8011ff903f251f88b32c5747c2637bb6cde92395..d704d0b307bb9b26601174e66ef20290fc731d2d 100644 (file)
@@ -1,7 +1,17 @@
+Mon Sep 17 17:39:52 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkcelleditable.[ch]: Add editable interface.  This should
+       be the last big GtkTreeView API change.
+
+       * gtk/gtkcellrenderer.[ch]: Get rid of the "event" vfunc, and
+       replace with "activate" and "start_editing".  Also, added a
+       "can_activate" and "can_edit" property.
+
+       * gtk/gtktreeviewcolumn.c: modify to use above.
+
 2001-09-16  Alexander Larsson  <alla@lysator.liu.se>
 
-       * gtk/gtkoptionmenu.c:
-       Handle scroll wheel events.
+       * gtk/gtkoptionmenu.c:  Handle scroll wheel events.
 
 Fri Sep 14 22:31:25 2001  Matthias Clasen  <matthiasc@poet.de>
 
index 8011ff903f251f88b32c5747c2637bb6cde92395..d704d0b307bb9b26601174e66ef20290fc731d2d 100644 (file)
@@ -1,7 +1,17 @@
+Mon Sep 17 17:39:52 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkcelleditable.[ch]: Add editable interface.  This should
+       be the last big GtkTreeView API change.
+
+       * gtk/gtkcellrenderer.[ch]: Get rid of the "event" vfunc, and
+       replace with "activate" and "start_editing".  Also, added a
+       "can_activate" and "can_edit" property.
+
+       * gtk/gtktreeviewcolumn.c: modify to use above.
+
 2001-09-16  Alexander Larsson  <alla@lysator.liu.se>
 
-       * gtk/gtkoptionmenu.c:
-       Handle scroll wheel events.
+       * gtk/gtkoptionmenu.c:  Handle scroll wheel events.
 
 Fri Sep 14 22:31:25 2001  Matthias Clasen  <matthiasc@poet.de>
 
index 8011ff903f251f88b32c5747c2637bb6cde92395..d704d0b307bb9b26601174e66ef20290fc731d2d 100644 (file)
@@ -1,7 +1,17 @@
+Mon Sep 17 17:39:52 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkcelleditable.[ch]: Add editable interface.  This should
+       be the last big GtkTreeView API change.
+
+       * gtk/gtkcellrenderer.[ch]: Get rid of the "event" vfunc, and
+       replace with "activate" and "start_editing".  Also, added a
+       "can_activate" and "can_edit" property.
+
+       * gtk/gtktreeviewcolumn.c: modify to use above.
+
 2001-09-16  Alexander Larsson  <alla@lysator.liu.se>
 
-       * gtk/gtkoptionmenu.c:
-       Handle scroll wheel events.
+       * gtk/gtkoptionmenu.c:  Handle scroll wheel events.
 
 Fri Sep 14 22:31:25 2001  Matthias Clasen  <matthiasc@poet.de>
 
index 8011ff903f251f88b32c5747c2637bb6cde92395..d704d0b307bb9b26601174e66ef20290fc731d2d 100644 (file)
@@ -1,7 +1,17 @@
+Mon Sep 17 17:39:52 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkcelleditable.[ch]: Add editable interface.  This should
+       be the last big GtkTreeView API change.
+
+       * gtk/gtkcellrenderer.[ch]: Get rid of the "event" vfunc, and
+       replace with "activate" and "start_editing".  Also, added a
+       "can_activate" and "can_edit" property.
+
+       * gtk/gtktreeviewcolumn.c: modify to use above.
+
 2001-09-16  Alexander Larsson  <alla@lysator.liu.se>
 
-       * gtk/gtkoptionmenu.c:
-       Handle scroll wheel events.
+       * gtk/gtkoptionmenu.c:  Handle scroll wheel events.
 
 Fri Sep 14 22:31:25 2001  Matthias Clasen  <matthiasc@poet.de>
 
index 8011ff903f251f88b32c5747c2637bb6cde92395..d704d0b307bb9b26601174e66ef20290fc731d2d 100644 (file)
@@ -1,7 +1,17 @@
+Mon Sep 17 17:39:52 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkcelleditable.[ch]: Add editable interface.  This should
+       be the last big GtkTreeView API change.
+
+       * gtk/gtkcellrenderer.[ch]: Get rid of the "event" vfunc, and
+       replace with "activate" and "start_editing".  Also, added a
+       "can_activate" and "can_edit" property.
+
+       * gtk/gtktreeviewcolumn.c: modify to use above.
+
 2001-09-16  Alexander Larsson  <alla@lysator.liu.se>
 
-       * gtk/gtkoptionmenu.c:
-       Handle scroll wheel events.
+       * gtk/gtkoptionmenu.c:  Handle scroll wheel events.
 
 Fri Sep 14 22:31:25 2001  Matthias Clasen  <matthiasc@poet.de>
 
index 8011ff903f251f88b32c5747c2637bb6cde92395..d704d0b307bb9b26601174e66ef20290fc731d2d 100644 (file)
@@ -1,7 +1,17 @@
+Mon Sep 17 17:39:52 2001  Jonathan Blandford  <jrb@redhat.com>
+
+       * gtk/gtkcelleditable.[ch]: Add editable interface.  This should
+       be the last big GtkTreeView API change.
+
+       * gtk/gtkcellrenderer.[ch]: Get rid of the "event" vfunc, and
+       replace with "activate" and "start_editing".  Also, added a
+       "can_activate" and "can_edit" property.
+
+       * gtk/gtktreeviewcolumn.c: modify to use above.
+
 2001-09-16  Alexander Larsson  <alla@lysator.liu.se>
 
-       * gtk/gtkoptionmenu.c:
-       Handle scroll wheel events.
+       * gtk/gtkoptionmenu.c:  Handle scroll wheel events.
 
 Fri Sep 14 22:31:25 2001  Matthias Clasen  <matthiasc@poet.de>
 
index d100d536927b11b3ec1c66ba25d3e87e65665a46..83b5e86b06ab52360d10c1ada7abcbfa59ecfa45 100644 (file)
@@ -1402,6 +1402,20 @@ Sets the default size of child buttons.
 @accel_group: 
 @Returns: 
 
+<!-- ##### FUNCTION gtk_cell_renderer_event ##### -->
+<para>
+
+</para>
+
+@cell: 
+@event: 
+@widget: 
+@path: 
+@background_area: 
+@cell_area: 
+@flags: 
+@Returns: 
+
 <!-- ##### FUNCTION gtk_cell_renderer_text_pixbuf_new ##### -->
 <para>
 
index 924d085066046fce64c2a14fb86c57db56ecb23b..a1e5414c92ee09ec901109293b6c47f7d2906f8b 100644 (file)
@@ -37,6 +37,7 @@ GtkCellRenderer
 @xpad: 
 @ypad: 
 @can_activate: 
+@can_edit: 
 @visible: 
 @is_expander: 
 @is_expanded: 
@@ -69,18 +70,3 @@ GtkCellRenderer
 @flags: 
 
 
-<!-- ##### FUNCTION gtk_cell_renderer_event ##### -->
-<para>
-
-</para>
-
-@cell: 
-@event: 
-@widget: 
-@path: 
-@background_area: 
-@cell_area: 
-@flags: 
-@Returns: 
-
-
index 4bd9f48b853e70914711df85bbef37ac5b7dc5a8..77c92c453b75a4a0bb61ce9f5806b94d5be7c37d 100644 (file)
@@ -69,6 +69,7 @@ gtk_public_h_sources = @STRIP_BEGIN@ \
        gtkctree.h              \
        gtkcurve.h              \
        gtkcellrenderer.h       \
+       gtkcelleditable.h       \
        gtkcellrenderertext.h   \
        gtkcellrenderertoggle.h \
        gtkcellrendererpixbuf.h \
@@ -215,6 +216,7 @@ gtk_c_sources = @STRIP_BEGIN@   \
        gtkbutton.c             \
        gtkcalendar.c           \
        gtkcellrenderer.c       \
+       gtkcelleditable.c       \
        gtkcellrenderertext.c   \
        gtkcellrenderertoggle.c \
        gtkcellrendererpixbuf.c \
diff --git a/gtk/gtkcelleditable.c b/gtk/gtkcelleditable.c
new file mode 100644 (file)
index 0000000..8bbd577
--- /dev/null
@@ -0,0 +1,98 @@
+/* gtkcelleditable.c
+ * Copyright (C) 2000  Red Hat, Inc.,  Jonathan Blandford <jrb@redhat.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+
+#include "gtkcelleditable.h"
+#include "gtksignal.h"
+
+static void gtk_cell_editable_base_init (gpointer g_class);
+
+GtkType
+gtk_cell_editable_get_type (void)
+{
+  static GtkType cell_editable_type = 0;
+
+  if (! cell_editable_type)
+    {
+      static const GTypeInfo cell_editable_info =
+      {
+       sizeof (GtkCellEditableIface), /* class_size */
+       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, "GtkCellEditable", &cell_editable_info, 0);
+      g_type_interface_add_prerequisite (cell_editable_type, GTK_TYPE_WIDGET);
+    }
+
+  return cell_editable_type;
+}
+
+static void
+gtk_cell_editable_base_init (gpointer g_class)
+{
+  static gboolean initialized = FALSE;
+
+  if (! initialized)
+    {
+      g_signal_new ("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);
+      g_signal_new ("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;
+    }
+}
+
+void
+gtk_cell_editable_start_editing (GtkCellEditable *cell_editable,
+                                GdkEvent        *event)
+{
+}
+
+void
+gtk_cell_editable_stop_editing (GtkCellEditable *cell_editable)
+{
+}
+
+
+void
+gtk_cell_editable_editing_done (GtkCellEditable *cell_editable)
+{
+}
+
+void
+gtk_cell_editable_remove_widget (GtkCellEditable *cell_editable)
+{
+
+}
diff --git a/gtk/gtkcelleditable.h b/gtk/gtkcelleditable.h
new file mode 100644 (file)
index 0000000..da2710b
--- /dev/null
@@ -0,0 +1,62 @@
+/* gtkcelleditable.h
+ * Copyright (C) 2001  Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GTK_CELL_EDITABLE_H__
+#define __GTK_CELL_EDITABLE_H__
+
+#include <gtk/gtkwidget.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_CELL_EDITABLE            (gtk_cell_editable_get_type ())
+#define GTK_CELL_EDITABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_EDITABLE, GtkCellEditable))
+#define GTK_CELL_EDITABLE_CLASS(obj)      (G_TYPE_CHECK_CLASS_CAST ((obj), GTK_TYPE_CELL_EDITABLE, GtkCellEditableIface))
+#define GTK_IS_CELL_EDITABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_EDITABLE))
+#define GTK_CELL_EDITABLE_GET_IFACE(obj)  ((GtkCellEditableIface *)g_type_interface_peek (((GTypeInstance *) GTK_CELL_EDITABLE (obj))->g_class, GTK_TYPE_CELL_EDITABLE))
+
+typedef struct _GtkCellEditable      GtkCellEditable; /* Dummy typedef */
+typedef struct _GtkCellEditableIface GtkCellEditableIface;
+
+struct _GtkCellEditableIface
+{
+  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);
+  void (* stop_editing)  (GtkCellEditable *cell_editable);
+};
+
+
+GType gtk_cell_editable_get_type      (void) G_GNUC_CONST;
+
+void  gtk_cell_editable_start_editing (GtkCellEditable *cell_editable,
+                                      GdkEvent        *event);
+void  gtk_cell_editable_stop_editing  (GtkCellEditable *cell_editable);
+void  gtk_cell_editable_editing_done  (GtkCellEditable *cell_editable);
+void  gtk_cell_editable_remove_widget (GtkCellEditable *cell_editable);
+
+
+G_END_DECLS
+
+#endif /* __GTK_CELL_EDITABLE_H__ */
index b143c3740597597dc400b6b8ecdce13e936edfa3..08cc3fbb11b6f269f3ddb53285691c7c09dbdb6f 100644 (file)
@@ -35,6 +35,7 @@ static void gtk_cell_renderer_set_property  (GObject              *object,
 enum {
   PROP_ZERO,
   PROP_CAN_ACTIVATE,
+  PROP_CAN_EDIT,
   PROP_VISIBLE,
   PROP_XALIGN,
   PROP_YALIGN,
@@ -77,6 +78,7 @@ static void
 gtk_cell_renderer_init (GtkCellRenderer *cell)
 {
   cell->can_activate = FALSE;
+  cell->can_edit = FALSE;
   cell->visible = TRUE;
   cell->width = -1;
   cell->height = -1;
@@ -106,6 +108,15 @@ gtk_cell_renderer_class_init (GtkCellRendererClass *class)
                                                         G_PARAM_READABLE |
                                                         G_PARAM_WRITABLE));
 
+  g_object_class_install_property (object_class,
+                                  PROP_CAN_EDIT,
+                                  g_param_spec_boolean ("can_edit",
+                                                        _("can_edit"),
+                                                        _("Cell supports CellEditable interface."),
+                                                        FALSE,
+                                                        G_PARAM_READABLE |
+                                                        G_PARAM_WRITABLE));
+  
   g_object_class_install_property (object_class,
                                   PROP_VISIBLE,
                                   g_param_spec_boolean ("visible",
@@ -214,6 +225,9 @@ gtk_cell_renderer_get_property (GObject     *object,
     case PROP_CAN_ACTIVATE:
       g_value_set_boolean (value, cell->can_activate);
       break;
+    case PROP_CAN_EDIT:
+      g_value_set_boolean (value, cell->can_edit);
+      break;
     case PROP_VISIBLE:
       g_value_set_boolean (value, cell->visible);
       break;
@@ -261,6 +275,22 @@ gtk_cell_renderer_set_property (GObject      *object,
     case PROP_CAN_ACTIVATE:
       cell->can_activate = g_value_get_boolean (value);
       g_object_notify (object, "can_activate");
+      /* can_activate and can_edit are mutually exclusive */
+      if (cell->can_activate && cell->can_edit)
+       {
+         cell->can_edit = FALSE;
+         g_object_notify (object, "can_edit");
+       }
+      break;
+    case PROP_CAN_EDIT:
+      cell->can_edit = g_value_get_boolean (value);
+      g_object_notify (object, "can_edit");
+      /* can_activate and can_edit are mutually exclusive */
+      if (cell->can_activate && cell->can_edit)
+       {
+         cell->can_activate = FALSE;
+         g_object_notify (object, "can_activate");
+       }
       break;
     case PROP_VISIBLE:
       cell->visible = g_value_get_boolean (value);
@@ -401,7 +431,7 @@ gtk_cell_renderer_render (GtkCellRenderer     *cell,
 }
 
 /**
- * gtk_cell_renderer_event:
+ * gtk_cell_renderer_activate:
  * @cell: a #GtkCellRenderer
  * @event: a #GdkEvent
  * @widget: widget that received the event
@@ -410,37 +440,79 @@ gtk_cell_renderer_render (GtkCellRenderer     *cell,
  * @cell_area: cell area as passed to gtk_cell_renderer_render()
  * @flags: render flags
  *
- * Passes an event to the cell renderer for possible processing.  Some
- * cell renderers may use events; for example, #GtkCellRendererToggle
- * toggles when it gets a mouse click.
+ * Passes an activate event to the cell renderer for possible processing.  Some
+ * cell renderers may use events; for example, #GtkCellRendererToggle toggles
+ * when it gets a mouse click.
  *
  * Return value: %TRUE if the event was consumed/handled
  **/
 gboolean
-gtk_cell_renderer_event (GtkCellRenderer     *cell,
-                        GdkEvent            *event,
-                        GtkWidget           *widget,
-                        gchar               *path,
-                        GdkRectangle        *background_area,
-                        GdkRectangle        *cell_area,
-                        GtkCellRendererState flags)
+gtk_cell_renderer_activate (GtkCellRenderer      *cell,
+                           GdkEvent             *event,
+                           GtkWidget            *widget,
+                           gchar                *path,
+                           GdkRectangle         *background_area,
+                           GdkRectangle         *cell_area,
+                           GtkCellRendererState  flags)
 {
-  /* It's actually okay to pass in a NULL cell, as we run into that
-   * a lot
-   */
-  if (cell == NULL)
-    return FALSE;
   g_return_val_if_fail (GTK_IS_CELL_RENDERER (cell), FALSE);
-  if (GTK_CELL_RENDERER_GET_CLASS (cell)->event == NULL)
+
+  if (! cell->can_activate)
     return FALSE;
 
-  return GTK_CELL_RENDERER_GET_CLASS (cell)->event (cell,
-                                                   event,
-                                                   widget,
-                                                   path,
-                                                   background_area,
-                                                   cell_area,
-                                                   flags);
+  if (GTK_CELL_RENDERER_GET_CLASS (cell)->activate == NULL)
+    return FALSE;
+
+  return GTK_CELL_RENDERER_GET_CLASS (cell)->activate (cell,
+                                                      event,
+                                                      widget,
+                                                      path,
+                                                      background_area,
+                                                      cell_area,
+                                                      flags);
+}
+
+
+/**
+ * gtk_cell_renderer_start_editing:
+ * @cell: a #GtkCellRenderer
+ * @event: a #GdkEvent
+ * @widget: widget that received the event
+ * @path: widget-dependent string representation of the event location; e.g. for #GtkTreeView, a string representation of #GtkTreePath
+ * @background_area: background area as passed to gtk_cell_renderer_render()
+ * @cell_area: cell area as passed to gtk_cell_renderer_render()
+ * @flags: render flags
+ * 
+ * Passes an activate event to the cell renderer for possible processing.
+ * 
+ * Return value: A new #GtkCellEditable, or %NULL
+ **/
+GtkCellEditable *
+gtk_cell_renderer_start_editing (GtkCellRenderer      *cell,
+                                GdkEvent             *event,
+                                GtkWidget            *widget,
+                                gchar                *path,
+                                GdkRectangle         *background_area,
+                                GdkRectangle         *cell_area,
+                                GtkCellRendererState  flags)
+
+{
+  g_return_val_if_fail (GTK_IS_CELL_RENDERER (cell), NULL);
+
+  if (! cell->can_edit)
+    return NULL;
+
+  if (GTK_CELL_RENDERER_GET_CLASS (cell)->start_editing == NULL)
+    return NULL;
+
+  
+  return GTK_CELL_RENDERER_GET_CLASS (cell)->start_editing (cell,
+                                                           event,
+                                                           widget,
+                                                           path,
+                                                           background_area,
+                                                           cell_area,
+                                                           flags);
 }
 
 /**
index 730fe13f8ca8d076ae62582893d9a23664caecd9..0a1624a51bbea1aa240985e2dea1cbe5d6badfbb 100644 (file)
 
 #include <gtk/gtkobject.h>
 #include <gtk/gtkwidget.h>
+#include <gtk/gtkcelleditable.h>
 
-#ifdef __cplusplus
-extern "C" {
-
-#endif /* __cplusplus */
+G_BEGIN_DECLS
 
 typedef enum
 {
@@ -61,6 +59,7 @@ struct _GtkCellRenderer
   guint16 ypad;
 
   guint can_activate : 1;
+  guint can_edit : 1;
   guint visible : 1;
   guint is_expander : 1;
   guint is_expanded : 1;
@@ -71,64 +70,75 @@ struct _GtkCellRendererClass
   GtkObjectClass parent_class;
 
   /* vtable - not signals */
-  void (* get_size)  (GtkCellRenderer *cell,
-                     GtkWidget       *widget,
-                     GdkRectangle    *cell_area,
-                     gint            *x_offset,
-                     gint            *y_offset,
-                     gint            *width,
-                     gint            *height);
-
-  void (* render)    (GtkCellRenderer     *cell,
-                     GdkWindow           *window,
-                     GtkWidget           *widget,
-                     GdkRectangle        *background_area,
-                     GdkRectangle        *cell_area,
-                     GdkRectangle        *expose_area,
-                     GtkCellRendererState flags);
-
-  gboolean (* event) (GtkCellRenderer     *cell,
-                     GdkEvent            *event,
-                     GtkWidget           *widget,
-                     gchar               *path,
-                     GdkRectangle        *background_area,
-                     GdkRectangle        *cell_area,
-                      GtkCellRendererState flags);
+  void             (* get_size)      (GtkCellRenderer      *cell,
+                                     GtkWidget            *widget,
+                                     GdkRectangle         *cell_area,
+                                     gint                 *x_offset,
+                                     gint                 *y_offset,
+                                     gint                 *width,
+                                     gint                 *height);
+  void             (* render)        (GtkCellRenderer      *cell,
+                                     GdkWindow            *window,
+                                     GtkWidget            *widget,
+                                     GdkRectangle         *background_area,
+                                     GdkRectangle         *cell_area,
+                                     GdkRectangle         *expose_area,
+                                     GtkCellRendererState  flags);
+  gboolean         (* activate)      (GtkCellRenderer      *cell,
+                                     GdkEvent             *event,
+                                     GtkWidget            *widget,
+                                     gchar                *path,
+                                     GdkRectangle         *background_area,
+                                     GdkRectangle         *cell_area,
+                                     GtkCellRendererState  flags);
+  GtkCellEditable *(* start_editing) (GtkCellRenderer      *cell,
+                                     GdkEvent             *event,
+                                     GtkWidget            *widget,
+                                     gchar                *path,
+                                     GdkRectangle         *background_area,
+                                     GdkRectangle         *cell_area,
+                                     GtkCellRendererState  flags);
 };
 
-GtkType  gtk_cell_renderer_get_type       (void);
-void     gtk_cell_renderer_get_size       (GtkCellRenderer      *cell,
-                                          GtkWidget            *widget,
-                                          GdkRectangle         *cell_area,
-                                          gint                 *x_offset,
-                                          gint                 *y_offset,
-                                          gint                 *width,
-                                          gint                 *height);
-void     gtk_cell_renderer_render         (GtkCellRenderer      *cell,
-                                          GdkWindow            *window,
-                                          GtkWidget            *widget,
-                                          GdkRectangle         *background_area,
-                                          GdkRectangle         *cell_area,
-                                          GdkRectangle         *expose_area,
-                                          GtkCellRendererState  flags);
-gboolean gtk_cell_renderer_event          (GtkCellRenderer      *cell,
-                                          GdkEvent             *event,
-                                          GtkWidget            *widget,
-                                          gchar                *path,
-                                          GdkRectangle         *background_area,
-                                          GdkRectangle         *cell_area,
-                                          GtkCellRendererState  flags);
-void     gtk_cell_renderer_set_fixed_size (GtkCellRenderer      *cell,
-                                          gint                  width,
-                                          gint                  height);
-void     gtk_cell_renderer_get_fixed_size (GtkCellRenderer      *cell,
-                                          gint                 *width,
-                                          gint                 *height);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
+GType            gtk_cell_renderer_get_type       (void) G_GNUC_CONST;
+
+void             gtk_cell_renderer_get_size       (GtkCellRenderer      *cell,
+                                                  GtkWidget            *widget,
+                                                  GdkRectangle         *cell_area,
+                                                  gint                 *x_offset,
+                                                  gint                 *y_offset,
+                                                  gint                 *width,
+                                                  gint                 *height);
+void             gtk_cell_renderer_render         (GtkCellRenderer      *cell,
+                                                  GdkWindow            *window,
+                                                  GtkWidget            *widget,
+                                                  GdkRectangle         *background_area,
+                                                  GdkRectangle         *cell_area,
+                                                  GdkRectangle         *expose_area,
+                                                  GtkCellRendererState  flags);
+gboolean         gtk_cell_renderer_activate       (GtkCellRenderer      *cell,
+                                                  GdkEvent             *event,
+                                                  GtkWidget            *widget,
+                                                  gchar                *path,
+                                                  GdkRectangle         *background_area,
+                                                  GdkRectangle         *cell_area,
+                                                  GtkCellRendererState  flags);
+GtkCellEditable *gtk_cell_renderer_start_editing  (GtkCellRenderer      *cell,
+                                                  GdkEvent             *event,
+                                                  GtkWidget            *widget,
+                                                  gchar                *path,
+                                                  GdkRectangle         *background_area,
+                                                  GdkRectangle         *cell_area,
+                                                  GtkCellRendererState  flags);
+void             gtk_cell_renderer_set_fixed_size (GtkCellRenderer      *cell,
+                                                  gint                  width,
+                                                  gint                  height);
+void             gtk_cell_renderer_get_fixed_size (GtkCellRenderer      *cell,
+                                                  gint                 *width,
+                                                  gint                 *height);
+
+
+G_END_DECLS
 
 #endif /* __GTK_CELL_RENDERER_H__ */
index d506f557235c15aae497475c98b8055a8b6a61d9..6f33ff9087f8a157341ecc3247179d16a21ecae9 100644 (file)
@@ -46,13 +46,13 @@ static void gtk_cell_renderer_toggle_render     (GtkCellRenderer            *cel
                                                 GdkRectangle               *cell_area,
                                                 GdkRectangle               *expose_area,
                                                 guint                       flags);
-static gboolean gtk_cell_renderer_toggle_event  (GtkCellRenderer            *cell,
-                                                GdkEvent                   *event,
-                                                GtkWidget                  *widget,
-                                                gchar                      *path,
-                                                GdkRectangle               *background_area,
-                                                GdkRectangle               *cell_area,
-                                                guint                       flags);
+static gboolean gtk_cell_renderer_toggle_activate  (GtkCellRenderer            *cell,
+                                                   GdkEvent                   *event,
+                                                   GtkWidget                  *widget,
+                                                   gchar                      *path,
+                                                   GdkRectangle               *background_area,
+                                                   GdkRectangle               *cell_area,
+                                                   guint                       flags);
 
 
 enum {
@@ -119,7 +119,7 @@ gtk_cell_renderer_toggle_class_init (GtkCellRendererToggleClass *class)
 
   cell_class->get_size = gtk_cell_renderer_toggle_get_size;
   cell_class->render = gtk_cell_renderer_toggle_render;
-  cell_class->event = gtk_cell_renderer_toggle_event;
+  cell_class->activate = gtk_cell_renderer_toggle_activate;
   
   g_object_class_install_property (object_class,
                                   PROP_ACTIVE,
@@ -321,13 +321,13 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell,
 }
 
 static gint
-gtk_cell_renderer_toggle_event (GtkCellRenderer *cell,
-                               GdkEvent        *event,
-                               GtkWidget       *widget,
-                               gchar           *path,
-                               GdkRectangle    *background_area,
-                               GdkRectangle    *cell_area,
-                               guint            flags)
+gtk_cell_renderer_toggle_activate (GtkCellRenderer *cell,
+                                  GdkEvent        *event,
+                                  GtkWidget       *widget,
+                                  gchar           *path,
+                                  GdkRectangle    *background_area,
+                                  GdkRectangle    *cell_area,
+                                  guint            flags)
 {
   GtkCellRendererToggle *celltoggle;
   gboolean retval = FALSE;
index 18040214d01c5582727ad707c16d74493ede25b2..dfddd0a1deea17d92cb3cbe7792c9eb7ad47047a 100644 (file)
@@ -408,6 +408,8 @@ static GdkColor gtk_default_active_bg =      { 0, 0xc350, 0xc350, 0xc350 };
 static GdkColor gtk_default_prelight_bg =    { 0, 0xea60, 0xea60, 0xea60 };
 static GdkColor gtk_default_selected_bg =    { 0,      0,      0, 0x9c40 };
 static GdkColor gtk_default_insensitive_bg = { 0, 0xd6d6, 0xd6d6, 0xd6d6 };
+static GdkColor gtk_default_selected_base =  { 0, 0xa4a4, 0xdfdf, 0xffff };
+static GdkColor gtk_default_active_base =    { 0, 0xbcbc, 0xd2d2, 0xeeee };
 
 static gpointer parent_class = NULL;
 static GdkFont *static_default_font = NULL;
@@ -496,7 +498,10 @@ gtk_style_init (GtkStyle *style)
       style->base[i] = style->white;
     }
 
-  style->base[GTK_STATE_SELECTED] = gtk_default_selected_bg;
+  style->base[GTK_STATE_SELECTED] = gtk_default_selected_base;
+  style->text[GTK_STATE_SELECTED] = style->black;
+  style->base[GTK_STATE_ACTIVE] = gtk_default_active_base;
+  style->text[GTK_STATE_ACTIVE] = style->black;
   style->base[GTK_STATE_INSENSITIVE] = gtk_default_prelight_bg;
   style->text[GTK_STATE_INSENSITIVE] = gtk_default_insensitive_fg;
   
@@ -2941,12 +2946,10 @@ gtk_default_draw_flat_box (GtkStyle      *style,
                   !strncmp ("cell_odd", detail, strlen ("cell_odd")))
             {
              /* This has to be really broken; alex made me do it. -jrb */
-             /* Red rum!!! REd RUM!!! */
              if (GTK_WIDGET_HAS_FOCUS (widget))
-               gc1 = style->bg_gc[state_type];
+               gc1 = style->base_gc[state_type];
              else 
-               gc1 = style->bg_gc[GTK_STATE_ACTIVE];
-             
+               gc1 = style->base_gc[GTK_STATE_ACTIVE];
             }
           else
             {
index 8a114c33f8e9cf770f53809acc5d92159351b8a6..b3bd769e46368e12327a6ce450cb064b20a59aad 100644 (file)
@@ -43,7 +43,7 @@ gtk_tree_sortable_get_type (void)
        NULL
       };
       tree_sortable_type = g_type_register_static (G_TYPE_INTERFACE, "GtkTreeSortable", &tree_sortable_info, 0);
-      g_type_interface_add_prerequisite (tree_sortable_type, G_TYPE_OBJECT);
+      g_type_interface_add_prerequisite (tree_sortable_type, GTK_TYPE_TREE_MODEL);
     }
 
   return tree_sortable_type;
index e30d74cc6bc3cb80b2811d40c9d740466d34ca24..bc748f0aeb7de717eb12b6f70e3d1c266c40b98e 100644 (file)
@@ -165,7 +165,6 @@ static gboolean gtk_tree_view_button_release       (GtkWidget        *widget,
                                                    GdkEventButton   *event);
 static void     gtk_tree_view_set_focus_child      (GtkContainer     *container,
                                                    GtkWidget        *child);
-static void     gtk_tree_view_draw_focus           (GtkWidget        *widget);
 static gint     gtk_tree_view_focus_in             (GtkWidget        *widget,
                                                    GdkEventFocus    *event);
 static gint     gtk_tree_view_focus_out            (GtkWidget        *widget,
@@ -340,6 +339,7 @@ static gboolean gtk_tree_view_real_expand_row                (GtkTreeView
 static void     gtk_tree_view_real_set_cursor                (GtkTreeView       *tree_view,
                                                              GtkTreePath       *path,
                                                              gboolean           clear_and_select);
+static void     gtk_tree_view_ensure_focus_column            (GtkTreeView       *tree_view);
 
 
 /* interactive search */
@@ -1897,6 +1897,29 @@ ensure_unprelighted (GtkTreeView *tree_view)
   g_assert (tree_view->priv->prelight_node == NULL);
 }
 
+static void
+gtk_tree_view_ensure_focus_column (GtkTreeView *tree_view)
+{
+  GList *list;
+  if (tree_view->priv->focus_column != NULL &&
+      tree_view->priv->focus_column->visible)
+    return;
+
+  if (tree_view->priv->focus_column)
+    gtk_tree_view_column_cell_focus (tree_view->priv->focus_column, 0, TRUE);
+
+  for (list = tree_view->priv->columns; list; list = list->next)
+    {
+      GtkTreeViewColumn *column = list->data;
+
+      if (column->visible)
+       {
+         gtk_tree_view_column_cell_focus (column, 1, FALSE);
+         return;
+       }
+    }
+}
+
 
 
 /* Our motion arrow is either a box (in the case of the original spot)
@@ -2354,93 +2377,6 @@ gtk_tree_view_motion (GtkWidget      *widget,
   return FALSE;
 }
 
-/* Draws the focus rectangle around the cursor row */
-static void
-gtk_tree_view_draw_focus (GtkWidget *widget)
-{
-  GtkTreeView *tree_view;
-  GtkTreePath *cursor_path;
-  GtkRBTree *tree = NULL;
-  GtkRBNode *node = NULL;
-  gint x, y;
-  gint width, height;
-  gint vertical_separator;
-
-  g_return_if_fail (GTK_IS_TREE_VIEW (widget));
-
-  tree_view = GTK_TREE_VIEW (widget);
-
-  gtk_widget_style_get (widget,        "vertical_separator", &vertical_separator, NULL);
-
-  if (! GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_DRAW_KEYFOCUS))
-    return;
-
-  if (! gtk_tree_row_reference_valid (tree_view->priv->cursor))
-    return;
-
-  cursor_path = gtk_tree_row_reference_get_path (tree_view->priv->cursor);
-
-  _gtk_tree_view_find_node (tree_view, cursor_path, &tree, &node);
-
-  if (tree == NULL)
-    {
-      gtk_tree_path_free (cursor_path);
-      return;
-    }
-
-  gdk_drawable_get_size (tree_view->priv->bin_window,
-                         &width, NULL);
-
-
-  x = 0;
-  y = BACKGROUND_FIRST_PIXEL (tree_view, tree, node);
-  gdk_drawable_get_size (tree_view->priv->bin_window,
-                        &width, NULL);
-  width = width - 1;
-  height = BACKGROUND_HEIGHT (node) - 1;
-  if (tree_view->priv->focus_column != NULL)
-    {
-      GtkTreeIter iter;
-
-      gtk_tree_model_get_iter (tree_view->priv->model, &iter, cursor_path);
-      gtk_tree_view_column_cell_set_cell_data (tree_view->priv->focus_column,
-                                              tree_view->priv->model,
-                                              &iter,
-                                              GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_PARENT),
-                                              node->children?TRUE:FALSE);
-
-      if (gtk_tree_view_column_cell_can_focus (tree_view->priv->focus_column))
-       {
-         GdkRectangle cell_area;
-         gint x_offset;
-         gint y_offset;
-
-         cell_area.x = tree_view->priv->focus_column->button->allocation.x;
-         cell_area.y = y;
-         cell_area.width = tree_view->priv->focus_column->width;
-         cell_area.height = CELL_HEIGHT (node, vertical_separator);
-
-         gtk_tree_view_column_cell_get_size (tree_view->priv->focus_column,
-                                             &cell_area, &x_offset, &y_offset, &width, &height);
-
-         width += 2;
-         height += 2;
-
-         x = cell_area.x + x_offset - 1;
-         y = cell_area.y + y_offset - 1 + vertical_separator/2;
-       }
-    }
-
-  gtk_paint_focus (widget->style,
-                  tree_view->priv->bin_window,
-                  NULL,
-                  widget,
-                  "treeview",
-                  x, y, width, height);
-
-  gtk_tree_path_free (cursor_path);
-}
-
 /* Warning: Very scary function.
  * Modify at your own risk
  */
@@ -2481,14 +2417,11 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
     return TRUE;
 
   gtk_tree_view_check_dirty_and_clean (GTK_TREE_VIEW (widget));
-  /* we want to account for a potential HEADER offset.
-   * That is, if the header exists, we want to offset our event by its
-   * height to find the right node.
+  gtk_tree_view_ensure_focus_column (GTK_TREE_VIEW (widget));
+  /* we want to account for a potential HEADER offset.  That is, if the header
+   * exists, we want to offset our event by its height to find the right node.
    */
   new_y = (event->area.y<TREE_VIEW_HEADER_HEIGHT (tree_view))?TREE_VIEW_HEADER_HEIGHT (tree_view):event->area.y;
-
-  /* y_offset is the */
-
   y_offset = -_gtk_rbtree_find_offset (tree_view->priv->tree,
                                        TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, new_y),
                                       &tree,
@@ -2645,7 +2578,7 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
          else
            state = GTK_STATE_NORMAL;
 
-          /* Draw background */
+         /* Draw background */
           gtk_paint_flat_box (widget->style,
                               event->window,
                              state,
@@ -2695,11 +2628,20 @@ gtk_tree_view_bin_expose (GtkWidget      *widget,
                                                &event->area,
                                                flags);
            }
+         if (node == cursor &&
+             GTK_WIDGET_HAS_FOCUS (widget) &&
+             column == tree_view->priv->focus_column)
+           {
+             gtk_tree_view_column_cell_draw_focus (column,
+                                                   event->window,
+                                                   &background_area,
+                                                   &cell_area,
+                                                   &event->area,
+                                                   flags);
+           }
          cell_offset += column->width;
        }
 
-      if (node == cursor && GTK_WIDGET_HAS_FOCUS (widget))
-       gtk_tree_view_draw_focus (widget);
 
       if (node == drag_highlight)
         {
@@ -5853,14 +5795,11 @@ gtk_tree_view_move_cursor_left_right (GtkTreeView *tree_view,
                                                &iter,
                                                GTK_RBNODE_FLAG_SET (cursor_node, GTK_RBNODE_IS_PARENT),
                                                cursor_node->children?TRUE:FALSE);
-      if (gtk_tree_view_column_cell_can_focus (column))
+      if (gtk_tree_view_column_cell_focus (column, count, FALSE))
        {
-         if (gtk_tree_view_column_cell_focus (column, count, FALSE))
-           {
-             tree_view->priv->focus_column = column;
-             found_column = TRUE;
-             break;
-           }
+         tree_view->priv->focus_column = column;
+         found_column = TRUE;
+         break;
        }
     loop_end:
       if (count == 1)
index c1dac7c480f64306c4e75329eea83812807213ba..787decc08d2c84a116e08894254331a25d6434e4 100644 (file)
@@ -108,10 +108,6 @@ static void gtk_tree_view_column_set_attributesv               (GtkTreeViewColum
                                                                va_list                  args);
 static GtkTreeViewColumnCellInfo *gtk_tree_view_column_get_cell_info (GtkTreeViewColumn *tree_column,
                                                                      GtkCellRenderer   *cell_renderer);
-static void gtk_tree_view_column_cell_foreach (GtkTreeViewColumn *tree_column,
-                                              gboolean           direction,
-                                              GFunc              function,
-                                              gpointer           data);
 
 
 
@@ -2071,7 +2067,7 @@ gtk_tree_view_column_cell_set_cell_data (GtkTreeViewColumn *tree_column,
     }
 
 }
-#if 0
+
 /**
  * gtk_tree_view_column_cell_get_size:
  * @tree_column: A #GtkTreeViewColumn.
@@ -2085,26 +2081,6 @@ gtk_tree_view_column_cell_set_cell_data (GtkTreeViewColumn *tree_column,
  * primarily by the GtkTreeView.
  **/
 void
-gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column,
-                                   GdkRectangle      *cell_area,
-                                   gint              *x_offset,
-                                   gint              *y_offset,
-                                   gint              *width,
-                                   gint              *height)
-{
-  g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column));
-
-  gtk_cell_renderer_get_size (((GtkTreeViewColumnCellInfo *) tree_column->cell_list->data)->cell,
-                             tree_column->tree_view,
-                             cell_area,
-                             x_offset,
-                             y_offset,
-                             width,
-                             height);
-
-}
-#endif
-void
 gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column,
                                    GdkRectangle      *cell_area,
                                    gint              *x_offset,
@@ -2284,13 +2260,13 @@ gtk_tree_view_column_cell_event (GtkTreeViewColumn *tree_column,
                NULL);
   if (visible && can_activate)
     {
-      if (gtk_cell_renderer_event (((GtkTreeViewColumnCellInfo *) tree_column->cell_list->data)->cell,
-                                  event,
-                                  tree_column->tree_view,
-                                  path_string,
-                                  background_area,
-                                  cell_area,
-                                  flags))
+      if (gtk_cell_renderer_activate (((GtkTreeViewColumnCellInfo *) tree_column->cell_list->data)->cell,
+                                     event,
+                                     tree_column->tree_view,
+                                     path_string,
+                                     background_area,
+                                     cell_area,
+                                     flags))
        return TRUE;
 
     }
@@ -2303,34 +2279,32 @@ gtk_tree_view_column_cell_focus (GtkTreeViewColumn *tree_column,
                                 gint               direction,
                                 gboolean           unfocus)
 {
-  GList *list;
-  gboolean visible;
-  gboolean can_activate;
-
+  if (unfocus)
+    GTK_TREE_VIEW (tree_column->tree_view)->priv->focus_column = NULL;
+  else
+    GTK_TREE_VIEW (tree_column->tree_view)->priv->focus_column = tree_column;
+  return TRUE;
 }
 
-gboolean
-gtk_tree_view_column_cell_can_focus (GtkTreeViewColumn *tree_column)
-{
-  GList *list;
-  gboolean visible;
-  gboolean can_activate;
-
-  for (list = tree_column->cell_list; list; list = list->next)
-    {
-      GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data;
-      g_object_get (G_OBJECT (info->cell),
-                   "can_activate", &can_activate,
-                   "visible", &visible,
-                   NULL);
-      if (can_activate && visible)
-       return TRUE;
-    }
-
-  return FALSE;
+void
+gtk_tree_view_column_cell_draw_focus (GtkTreeViewColumn       *tree_column,
+                                     GdkWindow               *window,
+                                     GdkRectangle            *background_area,
+                                     GdkRectangle            *cell_area,
+                                     GdkRectangle            *expose_area,
+                                     guint                    flags)
+{
+  gtk_paint_focus (tree_column->tree_view->style,
+                  window,
+                  NULL,
+                  tree_column->tree_view,
+                  "treeview",
+                  cell_area->x,
+                  cell_area->y,
+                  cell_area->width-1,
+                  cell_area->height);
 }
 
-
 gboolean
 gtk_tree_view_column_cell_is_visible (GtkTreeViewColumn *tree_column)
 {
index 6f689226e4084237c82c5cb6b9534d49ee5c5054..3e9524dc9ee22f1c3e5e50d54f682a48aed0607e 100644 (file)
@@ -218,7 +218,12 @@ gboolean                gtk_tree_view_column_cell_event          (GtkTreeViewCol
 gboolean                gtk_tree_view_column_cell_focus          (GtkTreeViewColumn       *tree_column,
                                                                  gint                     direction,
                                                                  gboolean                 unfocus);
-gboolean                gtk_tree_view_column_cell_can_focus      (GtkTreeViewColumn       *tree_column);
+void                    gtk_tree_view_column_cell_draw_focus     (GtkTreeViewColumn       *tree_column,
+                                                                 GdkWindow               *window,
+                                                                 GdkRectangle            *background_area,
+                                                                 GdkRectangle            *cell_area,
+                                                                 GdkRectangle            *expose_area,
+                                                                 guint                    flags);
 gboolean                gtk_tree_view_column_cell_is_visible     (GtkTreeViewColumn       *tree_column);
 void                    gtk_tree_view_column_cell_set_dirty      (GtkTreeViewColumn       *tree_column);