summaryrefslogtreecommitdiff
path: root/gtk/gtkcellarea.h
diff options
context:
space:
mode:
authorTristan Van Berkom <tristan.van.berkom@gmail.com>2010-12-03 00:29:22 +0900
committerTristan Van Berkom <tristan.van.berkom@gmail.com>2010-12-03 00:29:22 +0900
commita7ad110fe9beb0a3458b38574b2e74ac7b76d109 (patch)
tree17eb99336686221faf8ff3febfb05be461b4fab4 /gtk/gtkcellarea.h
parent005964b22a86104ce8a4e9bf344ba2c8c032a58a (diff)
downloadgtk+-a7ad110fe9beb0a3458b38574b2e74ac7b76d109.tar.gz
Adding more documentation to GtkCellArea, documented GtkCellAreaClass structure.
Diffstat (limited to 'gtk/gtkcellarea.h')
-rw-r--r--gtk/gtkcellarea.h64
1 files changed, 62 insertions, 2 deletions
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);