]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcellarea.h
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkcellarea.h
index 9d4b16d5b4627014df1448d390854743079db70d..0f4583712b4c74ef54f4a3c3a570a30c2f389a42 100644 (file)
  * 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.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
+#ifndef __GTK_CELL_AREA_H__
+#define __GTK_CELL_AREA_H__
+
 #if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
 #error "Only <gtk/gtk.h> can be included directly."
 #endif
 
-#ifndef __GTK_CELL_AREA_H__
-#define __GTK_CELL_AREA_H__
-
 #include <gtk/gtkcellrenderer.h>
 #include <gtk/gtkwidget.h>
 #include <gtk/gtktreemodel.h>
 
 G_BEGIN_DECLS
 
-#define GTK_TYPE_CELL_AREA               (gtk_cell_area_get_type ())
-#define GTK_CELL_AREA(obj)               (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_AREA, GtkCellArea))
-#define GTK_CELL_AREA_CLASS(klass)       (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CELL_AREA, GtkCellAreaClass))
-#define GTK_IS_CELL_AREA(obj)    (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_AREA))
+#define GTK_TYPE_CELL_AREA                (gtk_cell_area_get_type ())
+#define GTK_CELL_AREA(obj)                (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CELL_AREA, GtkCellArea))
+#define GTK_CELL_AREA_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CELL_AREA, GtkCellAreaClass))
+#define GTK_IS_CELL_AREA(obj)     (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CELL_AREA))
 #define GTK_IS_CELL_AREA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CELL_AREA))
 #define GTK_CELL_AREA_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CELL_AREA, GtkCellAreaClass))
 
 typedef struct _GtkCellArea              GtkCellArea;
 typedef struct _GtkCellAreaClass         GtkCellAreaClass;
 typedef struct _GtkCellAreaPrivate       GtkCellAreaPrivate;
-typedef struct _GtkCellAreaIter          GtkCellAreaIter;
+typedef struct _GtkCellAreaContext       GtkCellAreaContext;
+
+/**
+ * GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID:
+ * @object: the #GObject on which set_cell_property() or get_get_property()
+ *     was called
+ * @property_id: the numeric id of the property
+ * @pspec: the #GParamSpec of the property
+ *
+ * This macro should be used to emit a standard warning about unexpected
+ * properties in set_cell_property() and get_cell_property() implementations.
+ */
+#define GTK_CELL_AREA_WARN_INVALID_CELL_PROPERTY_ID(object, property_id, pspec) \
+  G_OBJECT_WARN_INVALID_PSPEC ((object), "cell property id", (property_id), (pspec))
 
 /**
  * GtkCellCallback:
  * @renderer: the cell renderer to operate on
- * @data: user-supplied data
+ * @data: (closure): user-supplied data
  *
  * The type of the callback functions used for iterating over
- * the cell renderers of a #GtkCellArea, see gtk_cell_area_forall().
+ * the cell renderers of a #GtkCellArea, see gtk_cell_area_foreach().
+ *
+ * Return value: %TRUE to stop iterating over cells.
  */
-typedef void    (*GtkCellCallback)     (GtkCellRenderer  *renderer,
-                                       gpointer          data);
+typedef gboolean    (*GtkCellCallback) (GtkCellRenderer  *renderer,
+                                        gpointer          data);
+
+/**
+ * GtkCellAllocCallback:
+ * @renderer: the cell renderer to operate on
+ * @cell_area: the area allocated to @renderer inside the rectangle
+ *     provided to gtk_cell_area_foreach_alloc().
+ * @cell_background: the background area for @renderer inside the
+ *     background area provided to gtk_cell_area_foreach_alloc().
+ * @data: (closure): user-supplied data
+ *
+ * The type of the callback functions used for iterating over the
+ * cell renderers and their allocated areas inside a #GtkCellArea,
+ * see gtk_cell_area_foreach_alloc().
+ *
+ * Return value: %TRUE to stop iterating over cells.
+ */
+typedef gboolean    (*GtkCellAllocCallback) (GtkCellRenderer    *renderer,
+                                             const GdkRectangle *cell_area,
+                                             const GdkRectangle *cell_background,
+                                             gpointer            data);
 
 
 struct _GtkCellArea
 {
+  /*< private >*/
   GInitiallyUnowned parent_instance;
 
   GtkCellAreaPrivate *priv;
 };
 
+
+/**
+ * GtkCellAreaClass:
+ * @add: adds a #GtkCellRenderer to the area.
+ * @remove: removes a #GtkCellRenderer from the area.
+ * @foreach: calls the #GtkCellCallback function on every #GtkCellRenderer in
+ *     the area with the provided user data until the callback returns %TRUE.
+ * @foreach_alloc: Calls the #GtkCellAllocCallback function on every
+ *     #GtkCellRenderer in the area with the allocated area for the cell
+ *     and the provided user data until the callback returns %TRUE.
+ * @event: Handle an event in the area, this is generally used to activate
+ *     a cell at the event location for button events but can also be used
+ *     to generically pass events to #GtkWidgets drawn onto the area.
+ * @render: Actually render the area's cells to the specified rectangle,
+ *     @background_area should be correctly distributed to the cells
+ *     corresponding background areas.
+ * @apply_attributes: Apply the cell attributes to the cells. This is
+ *     implemented as a signal and generally #GtkCellArea subclasses don't
+ *     need to implement it since it is handled by the base class.
+ * @create_context: Creates and returns a class specific #GtkCellAreaContext
+ *     to store cell alignment and allocation details for a said #GtkCellArea
+ *     class.
+ * @copy_context: Creates a new #GtkCellAreaContext in the same state as
+ *     the passed @context with any cell alignment data and allocations intact.
+ * @get_request_mode: This allows an area to tell its layouting widget whether
+ *     it prefers to be allocated in %GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH or
+ *     %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT mode.
+ * @get_preferred_width: Calculates the minimum and natural width of the
+ *     areas cells with the current attributes applied while considering
+ *     the particular layouting details of the said #GtkCellArea. While
+ *     requests are performed over a series of rows, alignments and overall
+ *     minimum and natural sizes should be stored in the corresponding
+ *     #GtkCellAreaContext.
+ * @get_preferred_height_for_width: Calculates the minimum and natural height
+ *     for the area if the passed @context would be allocated the given width.
+ *     When implementing this virtual method it is safe to assume that @context
+ *     has already stored the aligned cell widths for every #GtkTreeModel row
+ *     that @context will be allocated for since this information was stored
+ *     at #GtkCellAreaClass.get_preferred_width() time. This virtual method
+ *     should also store any necessary alignments of cell heights for the
+ *     case that the context is allocated a height.
+ * @get_preferred_height: Calculates the minimum and natural height of the
+ *     areas cells with the current attributes applied. Essentially this is
+ *     the same as #GtkCellAreaClass.get_preferred_width() only for areas
+ *     that are being requested as %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT.
+ * @get_preferred_width_for_height: Calculates the minimum and natural width
+ *     for the area if the passed @context would be allocated the given
+ *     height. The same as #GtkCellAreaClass.get_preferred_height_for_width()
+ *     only for handling requests in the %GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT
+ *     mode.
+ * @set_cell_property: This should be implemented to handle changes in child
+ *     cell properties for a given #GtkCellRenderer that were previously
+ *     installed on the #GtkCellAreaClass with gtk_cell_area_class_install_cell_property().
+ * @get_cell_property: This should be implemented to report the values of
+ *     child cell properties for a given child #GtkCellRenderer.
+ * @focus: This virtual method should be implemented to navigate focus from
+ *     cell to cell inside the #GtkCellArea. The #GtkCellArea should move
+ *     focus from cell to cell inside the area and return %FALSE if focus
+ *     logically leaves the area with the following exceptions: When the
+ *     area contains no activatable cells, the entire area recieves focus.
+ *     Focus should not be given to cells that are actually "focus siblings"
+ *     of other sibling cells (see gtk_cell_area_get_focus_from_sibling()).
+ *     Focus is set by calling gtk_cell_area_set_focus_cell().
+ * @is_activatable: Returns whether the #GtkCellArea can respond to
+ *     #GtkCellAreaClass.activate(), usually this does not need to be
+ *     implemented since the base class takes care of this however it can
+ *     be enhanced if the #GtkCellArea subclass can handle activation in
+ *     other ways than activating its #GtkCellRenderers.
+ * @activate: This is called when the layouting widget rendering the
+ *     #GtkCellArea activates the focus cell (see gtk_cell_area_get_focus_cell()).
+ */
 struct _GtkCellAreaClass
 {
+  /*< private >*/
   GInitiallyUnownedClass parent_class;
 
-  /* vtable - not signals */
+  /*< public >*/
 
   /* Basic methods */
   void               (* add)                             (GtkCellArea             *area,
-                                                         GtkCellRenderer         *renderer);
+                                                          GtkCellRenderer         *renderer);
   void               (* remove)                          (GtkCellArea             *area,
-                                                         GtkCellRenderer         *renderer);
-  void               (* forall)                          (GtkCellArea             *area,
-                                                         GtkCellCallback          callback,
-                                                         gpointer                 callback_data);
+                                                          GtkCellRenderer         *renderer);
+  void               (* foreach)                         (GtkCellArea             *area,
+                                                          GtkCellCallback          callback,
+                                                          gpointer                 callback_data);
+  void               (* foreach_alloc)                   (GtkCellArea             *area,
+                                                          GtkCellAreaContext      *context,
+                                                          GtkWidget               *widget,
+                                                          const GdkRectangle      *cell_area,
+                                                          const GdkRectangle      *background_area,
+                                                          GtkCellAllocCallback     callback,
+                                                          gpointer                 callback_data);
   gint               (* event)                           (GtkCellArea             *area,
-                                                         GtkWidget               *widget,
-                                                         GdkEvent                *event,
-                                                         const GdkRectangle      *cell_area);
+                                                          GtkCellAreaContext      *context,
+                                                          GtkWidget               *widget,
+                                                          GdkEvent                *event,
+                                                          const GdkRectangle      *cell_area,
+                                                          GtkCellRendererState     flags);
   void               (* render)                          (GtkCellArea             *area,
-                                                         cairo_t                 *cr,
-                                                         GtkWidget               *widget,
-                                                         const GdkRectangle      *cell_area);
+                                                          GtkCellAreaContext      *context,
+                                                          GtkWidget               *widget,
+                                                          cairo_t                 *cr,
+                                                          const GdkRectangle      *background_area,
+                                                          const GdkRectangle      *cell_area,
+                                                          GtkCellRendererState     flags,
+                                                          gboolean                 paint_focus);
+  void               (* apply_attributes)                (GtkCellArea             *area,
+                                                          GtkTreeModel            *tree_model,
+                                                          GtkTreeIter             *iter,
+                                                          gboolean                 is_expander,
+                                                          gboolean                 is_expanded);
 
   /* Geometry */
-  GtkCellAreaIter   *(* create_iter)                     (GtkCellArea             *area);
+  GtkCellAreaContext *(* create_context)                 (GtkCellArea             *area);
+  GtkCellAreaContext *(* copy_context)                   (GtkCellArea             *area,
+                                                          GtkCellAreaContext      *context);
   GtkSizeRequestMode (* get_request_mode)                (GtkCellArea             *area);
   void               (* get_preferred_width)             (GtkCellArea             *area,
-                                                         GtkCellAreaIter         *iter,
+                                                          GtkCellAreaContext      *context,
                                                           GtkWidget               *widget,
-                                                          gint                    *minimum_size,
-                                                          gint                    *natural_size);
+                                                          gint                    *minimum_width,
+                                                          gint                    *natural_width);
   void               (* get_preferred_height_for_width)  (GtkCellArea             *area,
-                                                         GtkCellAreaIter         *iter,
+                                                          GtkCellAreaContext      *context,
                                                           GtkWidget               *widget,
                                                           gint                     width,
                                                           gint                    *minimum_height,
                                                           gint                    *natural_height);
   void               (* get_preferred_height)            (GtkCellArea             *area,
-                                                         GtkCellAreaIter         *iter,
+                                                          GtkCellAreaContext      *context,
                                                           GtkWidget               *widget,
-                                                          gint                    *minimum_size,
-                                                          gint                    *natural_size);
+                                                          gint                    *minimum_height,
+                                                          gint                    *natural_height);
   void               (* get_preferred_width_for_height)  (GtkCellArea             *area,
-                                                         GtkCellAreaIter         *iter,
+                                                          GtkCellAreaContext      *context,
                                                           GtkWidget               *widget,
                                                           gint                     height,
                                                           gint                    *minimum_width,
                                                           gint                    *natural_width);
 
+  /* Cell Properties */
+  void               (* set_cell_property)               (GtkCellArea             *area,
+                                                          GtkCellRenderer         *renderer,
+                                                          guint                    property_id,
+                                                          const GValue            *value,
+                                                          GParamSpec              *pspec);
+  void               (* get_cell_property)               (GtkCellArea             *area,
+                                                          GtkCellRenderer         *renderer,
+                                                          guint                    property_id,
+                                                          GValue                  *value,
+                                                          GParamSpec              *pspec);
+
+  /* Focus */
+  gboolean           (* focus)                           (GtkCellArea             *area,
+                                                          GtkDirectionType         direction);
+  gboolean           (* is_activatable)                  (GtkCellArea             *area);
+  gboolean           (* activate)                        (GtkCellArea             *area,
+                                                          GtkCellAreaContext      *context,
+                                                          GtkWidget               *widget,
+                                                          const GdkRectangle      *cell_area,
+                                                          GtkCellRendererState     flags,
+                                                          gboolean                 edit_only);
+
+  /*< private >*/
 
   /* Padding for future expansion */
   void (*_gtk_reserved1) (void);
@@ -126,64 +276,206 @@ struct _GtkCellAreaClass
   void (*_gtk_reserved8) (void);
 };
 
-GType              gtk_cell_area_get_type                       (void) G_GNUC_CONST;
+GType                 gtk_cell_area_get_type                       (void) G_GNUC_CONST;
 
 /* Basic methods */
-void               gtk_cell_area_add                            (GtkCellArea        *area,
-                                                                GtkCellRenderer    *renderer);
-void               gtk_cell_area_remove                         (GtkCellArea        *area,
-                                                                GtkCellRenderer    *renderer);
-void               gtk_cell_area_forall                         (GtkCellArea        *area,
-                                                                GtkCellCallback     callback,
-                                                                gpointer            callback_data);
-gint               gtk_cell_area_event                          (GtkCellArea        *area,
-                                                                GtkWidget          *widget,
-                                                                GdkEvent           *event,
-                                                                const GdkRectangle *cell_area);
-void               gtk_cell_area_render                         (GtkCellArea        *area,
-                                                                cairo_t            *cr,
-                                                                GtkWidget          *widget,
-                                                                const GdkRectangle *cell_area);
+void                  gtk_cell_area_add                            (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer);
+void                  gtk_cell_area_remove                         (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer);
+gboolean              gtk_cell_area_has_renderer                   (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer);
+void                  gtk_cell_area_foreach                        (GtkCellArea          *area,
+                                                                    GtkCellCallback       callback,
+                                                                    gpointer              callback_data);
+void                  gtk_cell_area_foreach_alloc                  (GtkCellArea          *area,
+                                                                    GtkCellAreaContext   *context,
+                                                                    GtkWidget            *widget,
+                                                                    const GdkRectangle   *cell_area,
+                                                                    const GdkRectangle   *background_area,
+                                                                    GtkCellAllocCallback  callback,
+                                                                    gpointer              callback_data);
+gint                  gtk_cell_area_event                          (GtkCellArea          *area,
+                                                                    GtkCellAreaContext   *context,
+                                                                    GtkWidget            *widget,
+                                                                    GdkEvent             *event,
+                                                                    const GdkRectangle   *cell_area,
+                                                                    GtkCellRendererState  flags);
+void                  gtk_cell_area_render                         (GtkCellArea          *area,
+                                                                    GtkCellAreaContext   *context,
+                                                                    GtkWidget            *widget,
+                                                                    cairo_t              *cr,
+                                                                    const GdkRectangle   *background_area,
+                                                                    const GdkRectangle   *cell_area,
+                                                                    GtkCellRendererState  flags,
+                                                                    gboolean              paint_focus);
+
+void                  gtk_cell_area_get_cell_allocation            (GtkCellArea          *area,
+                                                                    GtkCellAreaContext   *context,
+                                                                    GtkWidget            *widget,
+                                                                    GtkCellRenderer      *renderer,
+                                                                    const GdkRectangle   *cell_area,
+                                                                    GdkRectangle         *allocation);
+GtkCellRenderer      *gtk_cell_area_get_cell_at_position           (GtkCellArea          *area,
+                                                                    GtkCellAreaContext   *context,
+                                                                    GtkWidget            *widget,
+                                                                    const GdkRectangle   *cell_area,
+                                                                    gint                  x,
+                                                                    gint                  y,
+                                                                    GdkRectangle         *alloc_area);
 
 /* Geometry */
-GtkCellAreaIter   *gtk_cell_area_create_iter                    (GtkCellArea        *area);
-GtkSizeRequestMode gtk_cell_area_get_request_mode               (GtkCellArea        *area);
-void               gtk_cell_area_get_preferred_width            (GtkCellArea        *area,
-                                                                GtkCellAreaIter    *iter,
-                                                                GtkWidget          *widget,
-                                                                gint               *minimum_size,
-                                                                gint               *natural_size);
-void               gtk_cell_area_get_preferred_height_for_width (GtkCellArea        *area,
-                                                                GtkCellAreaIter    *iter,
-                                                                GtkWidget          *widget,
-                                                                gint                width,
-                                                                gint               *minimum_height,
-                                                                gint               *natural_height);
-void               gtk_cell_area_get_preferred_height           (GtkCellArea        *area,
-                                                                GtkCellAreaIter    *iter,
-                                                                GtkWidget          *widget,
-                                                                gint               *minimum_size,
-                                                                gint               *natural_size);
-void               gtk_cell_area_get_preferred_width_for_height (GtkCellArea        *area,
-                                                                GtkCellAreaIter    *iter,
-                                                                GtkWidget          *widget,
-                                                                gint                height,
-                                                                gint               *minimum_width,
-                                                                gint               *natural_width);
-
-
-/* Following apis are not class virtual methods */
-void               gtk_cell_area_apply_attributes               (GtkCellArea        *area,
-                                                                GtkTreeModel       *tree_model,
-                                                                GtkTreeIter        *iter);
-void               gtk_cell_area_attribute_connect              (GtkCellArea        *area,
-                                                                GtkCellRenderer    *renderer,
-                                                                const gchar        *attribute,
-                                                                gint                column); 
-void               gtk_cell_area_attribute_disconnect           (GtkCellArea        *area,
-                                                                GtkCellRenderer    *renderer,
-                                                                const gchar        *attribute);
+GtkCellAreaContext   *gtk_cell_area_create_context                 (GtkCellArea        *area);
+GtkCellAreaContext   *gtk_cell_area_copy_context                   (GtkCellArea        *area,
+                                                                    GtkCellAreaContext *context);
+GtkSizeRequestMode    gtk_cell_area_get_request_mode               (GtkCellArea        *area);
+void                  gtk_cell_area_get_preferred_width            (GtkCellArea        *area,
+                                                                    GtkCellAreaContext *context,
+                                                                    GtkWidget          *widget,
+                                                                    gint               *minimum_width,
+                                                                    gint               *natural_width);
+void                  gtk_cell_area_get_preferred_height_for_width (GtkCellArea        *area,
+                                                                    GtkCellAreaContext *context,
+                                                                    GtkWidget          *widget,
+                                                                    gint                width,
+                                                                    gint               *minimum_height,
+                                                                    gint               *natural_height);
+void                  gtk_cell_area_get_preferred_height           (GtkCellArea        *area,
+                                                                    GtkCellAreaContext *context,
+                                                                    GtkWidget          *widget,
+                                                                    gint               *minimum_height,
+                                                                    gint               *natural_height);
+void                  gtk_cell_area_get_preferred_width_for_height (GtkCellArea        *area,
+                                                                    GtkCellAreaContext *context,
+                                                                    GtkWidget          *widget,
+                                                                    gint                height,
+                                                                    gint               *minimum_width,
+                                                                    gint               *natural_width);
+const gchar *         gtk_cell_area_get_current_path_string        (GtkCellArea        *area);
+
+
+/* Attributes */
+void                  gtk_cell_area_apply_attributes               (GtkCellArea        *area,
+                                                                    GtkTreeModel       *tree_model,
+                                                                    GtkTreeIter        *iter,
+                                                                    gboolean            is_expander,
+                                                                    gboolean            is_expanded);
+void                  gtk_cell_area_attribute_connect              (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar        *attribute,
+                                                                    gint                column);
+void                  gtk_cell_area_attribute_disconnect           (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar        *attribute);
 
+/* Cell Properties */
+void                  gtk_cell_area_class_install_cell_property    (GtkCellAreaClass   *aclass,
+                                                                    guint               property_id,
+                                                                    GParamSpec         *pspec);
+GParamSpec*           gtk_cell_area_class_find_cell_property       (GtkCellAreaClass   *aclass,
+                                                                    const gchar        *property_name);
+GParamSpec**          gtk_cell_area_class_list_cell_properties     (GtkCellAreaClass   *aclass,
+                                                                    guint                   *n_properties);
+void                  gtk_cell_area_add_with_properties            (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar     *first_prop_name,
+                                                                    ...) G_GNUC_NULL_TERMINATED;
+void                  gtk_cell_area_cell_set                       (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar        *first_prop_name,
+                                                                    ...) G_GNUC_NULL_TERMINATED;
+void                  gtk_cell_area_cell_get                       (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar        *first_prop_name,
+                                                                    ...) G_GNUC_NULL_TERMINATED;
+void                  gtk_cell_area_cell_set_valist                (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar        *first_property_name,
+                                                                    va_list             var_args);
+void                  gtk_cell_area_cell_get_valist                (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar        *first_property_name,
+                                                                    va_list             var_args);
+void                  gtk_cell_area_cell_set_property              (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar        *property_name,
+                                                                    const GValue       *value);
+void                  gtk_cell_area_cell_get_property              (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    const gchar        *property_name,
+                                                                    GValue             *value);
+
+/* Focus */
+gboolean              gtk_cell_area_is_activatable                 (GtkCellArea         *area);
+gboolean              gtk_cell_area_activate                       (GtkCellArea         *area,
+                                                                    GtkCellAreaContext  *context,
+                                                                    GtkWidget           *widget,
+                                                                    const GdkRectangle  *cell_area,
+                                                                    GtkCellRendererState flags,
+                                                                    gboolean             edit_only);
+gboolean              gtk_cell_area_focus                          (GtkCellArea         *area,
+                                                                    GtkDirectionType     direction);
+void                  gtk_cell_area_set_focus_cell                 (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer);
+GtkCellRenderer      *gtk_cell_area_get_focus_cell                 (GtkCellArea          *area);
+
+
+/* Focus siblings */
+void                  gtk_cell_area_add_focus_sibling              (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer,
+                                                                    GtkCellRenderer      *sibling);
+void                  gtk_cell_area_remove_focus_sibling           (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer,
+                                                                    GtkCellRenderer      *sibling);
+gboolean              gtk_cell_area_is_focus_sibling               (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer,
+                                                                    GtkCellRenderer      *sibling);
+const GList *         gtk_cell_area_get_focus_siblings             (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer);
+GtkCellRenderer      *gtk_cell_area_get_focus_from_sibling         (GtkCellArea          *area,
+                                                                    GtkCellRenderer      *renderer);
+
+/* Cell Activation/Editing */
+GtkCellRenderer      *gtk_cell_area_get_edited_cell                (GtkCellArea          *area);
+GtkCellEditable      *gtk_cell_area_get_edit_widget                (GtkCellArea          *area);
+gboolean              gtk_cell_area_activate_cell                  (GtkCellArea          *area,
+                                                                    GtkWidget            *widget,
+                                                                    GtkCellRenderer      *renderer,
+                                                                    GdkEvent             *event,
+                                                                    const GdkRectangle   *cell_area,
+                                                                    GtkCellRendererState  flags);
+void                  gtk_cell_area_stop_editing                   (GtkCellArea          *area,
+                                                                    gboolean              canceled);
+
+/* Functions for area implementations */
+
+/* Distinguish the inner cell area from the whole requested area including margins */
+void                  gtk_cell_area_inner_cell_area                (GtkCellArea        *area,
+                                                                    GtkWidget          *widget,
+                                                                    const GdkRectangle *cell_area,
+                                                                    GdkRectangle       *inner_area);
+
+/* Request the size of a cell while respecting the cell margins (requests are margin inclusive) */
+void                  gtk_cell_area_request_renderer               (GtkCellArea        *area,
+                                                                    GtkCellRenderer    *renderer,
+                                                                    GtkOrientation      orientation,
+                                                                    GtkWidget          *widget,
+                                                                    gint                for_size,
+                                                                    gint               *minimum_size,
+                                                                    gint               *natural_size);
+
+/* For api stability, this is called from gtkcelllayout.c in order to ensure the correct
+ * object is passed to the user function in gtk_cell_layout_set_cell_data_func.
+ *
+ * This private api takes gpointer & GFunc arguments to circumvent circular header file
+ * dependancies.
+ */
+void                 _gtk_cell_area_set_cell_data_func_with_proxy  (GtkCellArea           *area,
+                                                                   GtkCellRenderer       *cell,
+                                                                   GFunc                  func,
+                                                                   gpointer               func_data,
+                                                                   GDestroyNotify         destroy,
+                                                                   gpointer               proxy);
 
 G_END_DECLS