diff --git a/gtk/gtkcellarea.c b/gtk/gtkcellarea.c index 9f5616b2ce..dcf0007f43 100644 --- a/gtk/gtkcellarea.c +++ b/gtk/gtkcellarea.c @@ -210,7 +210,7 @@ * Note that the cached height in this example really depends on how the layouting * widget works. The layouting widget might decide to give every row it's minimum * or natural height or if the model content is expected to fit inside the layouting - * widget with not scrolled window it would make sense to calculate the allocation + * widget with no scrolled window it would make sense to calculate the allocation * for each row at #GtkWidget.size_allocate() time using gtk_distribute_natural_allocation(). * * diff --git a/gtk/gtkcellarea.h b/gtk/gtkcellarea.h index abc73d0479..f857e19ab5 100644 --- a/gtk/gtkcellarea.h +++ b/gtk/gtkcellarea.h @@ -65,11 +65,70 @@ struct _GtkCellArea GtkCellAreaPrivate *priv; }; + +/** + * GtkCellAreaClass: + * @add: adds a #GtkCellRenderer to the area. + * @remove: removes a #GtkCellRenderer from the area. + * @forall: Calls the #GtkCellCallback function on every #GtkCellRenderer in the area + * with the provided user data. + * @get_cell_allocation: Gets the position (relative to the passed @cell_area rectangle) + * and size of a #GtkCellRenderer. + * @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 coresponding background areas. + * @apply_attributes: Apply the cell attributes to the cells. This is implemented as a signal and + * generally #GtkCellArea subclasses dont need to implement this since it's handled by the base + * class but can be overridden to apply some custom attributes. + * @create_context: Creates and returns a class specific #GtkCellAreaContext to store cell + * alignment and allocation details for a said #GtkCellArea class. + * @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 area's 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 area's 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, @@ -144,15 +203,16 @@ struct _GtkCellAreaClass GParamSpec *pspec); /* Focus */ - gboolean (* is_activatable) (GtkCellArea *area); 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); + /*< private >*/ /* Padding for future expansion */ void (*_gtk_reserved1) (void);