Package ch.bailu.gtk.gtk
Class CellArea
java.lang.Object
ch.bailu.gtk.type.Type
ch.bailu.gtk.type.Pointer
ch.bailu.gtk.gobject.Object
ch.bailu.gtk.gobject.InitiallyUnowned
ch.bailu.gtk.gtk.CellArea
- All Implemented Interfaces:
PointerInterface
- Direct Known Subclasses:
CellAreaBox
An abstract class for laying out `GtkCellRenderer`s
The `GtkCellArea` is an abstract class for [iface@Gtk.CellLayout]
widgets (also referred to as "layouting widgets") to interface with
an arbitrary number of [class@Gtk.CellRenderer]s and interact with the user
for a given [iface@Gtk.TreeModel] row.
The cell area handles events, focus navigation, drawing and
size requests and allocations for a given row of data.
Usually users dont have to interact with the `GtkCellArea` directly
unless they are implementing a cell-layouting widget themselves.
# Requesting area sizes
As outlined in
[GtkWidget’s geometry management section](class.Widget.html#height-for-width-geometry-management),
GTK uses a height-for-width
geometry management system to compute the sizes of widgets and user
interfaces. `GtkCellArea` uses the same semantics to calculate the
size of an area for an arbitrary number of `GtkTreeModel` rows.
When requesting the size of a cell area one needs to calculate
the size for a handful of rows, and this will be done differently by
different layouting widgets. For instance a [class@Gtk.TreeViewColumn]
always lines up the areas from top to bottom while a [class@Gtk.IconView]
on the other hand might enforce that all areas received the same
width and wrap the areas around, requesting height for more cell
areas when allocated less width.
It’s also important for areas to maintain some cell
alignments with areas rendered for adjacent rows (cells can
appear “columnized” inside an area even when the size of
cells are different in each row). For this reason the `GtkCellArea`
uses a [class@Gtk.CellAreaContext] object to store the alignments
and sizes along the way (as well as the overall largest minimum
and natural size for all the rows which have been calculated
with the said context).
The [class@Gtk.CellAreaContext] is an opaque object specific to the
`GtkCellArea` which created it (see [method@Gtk.CellArea.create_context]).
The owning cell-layouting widget can create as many contexts as
it wishes to calculate sizes of rows which should receive the
same size in at least one orientation (horizontally or vertically),
However, it’s important that the same [class@Gtk.CellAreaContext] which
was used to request the sizes for a given `GtkTreeModel` row be
used when rendering or processing events for that row.
In order to request the width of all the rows at the root level
of a `GtkTreeModel` one would do the following:
```c
GtkTreeIter iter;
int minimum_width;
int natural_width;
valid = gtk_tree_model_get_iter_first (model, &iter);
while (valid)
{
gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE);
gtk_cell_area_get_preferred_width (area, context, widget, NULL, NULL);
valid = gtk_tree_model_iter_next (model, &iter);
}
gtk_cell_area_context_get_preferred_width (context, &minimum_width, &natural_width);
```
Note that in this example it’s not important to observe the
returned minimum and natural width of the area for each row
unless the cell-layouting object is actually interested in the
widths of individual rows. The overall width is however stored
in the accompanying `GtkCellAreaContext` object and can be consulted
at any time.
This can be useful since `GtkCellLayout` widgets usually have to
support requesting and rendering rows in treemodels with an
exceedingly large amount of rows. The `GtkCellLayout` widget in
that case would calculate the required width of the rows in an
idle or timeout source (see [func@GLib.timeout_add]) and when the widget
is requested its actual width in [vfunc@Gtk.Widget.measure]
it can simply consult the width accumulated so far in the
`GtkCellAreaContext` object.
A simple example where rows are rendered from top to bottom and
take up the full width of the layouting widget would look like:
```c
static void
foo_get_preferred_width (GtkWidget *widget,
int *minimum_size,
int *natural_size)
{
Foo *self = FOO (widget);
FooPrivate *priv = foo_get_instance_private (self);
foo_ensure_at_least_one_handfull_of_rows_have_been_requested (self);
gtk_cell_area_context_get_preferred_width (priv->context, minimum_size, natural_size);
}
```
In the above example the `Foo` widget has to make sure that some
row sizes have been calculated (the amount of rows that `Foo` judged
was appropriate to request space for in a single timeout iteration)
before simply returning the amount of space required by the area via
the `GtkCellAreaContext`.
Requesting the height for width (or width for height) of an area is
a similar task except in this case the `GtkCellAreaContext` does not
store the data (actually, it does not know how much space the layouting
widget plans to allocate it for every row. It’s up to the layouting
widget to render each row of data with the appropriate height and
width which was requested by the `GtkCellArea`).
In order to request the height for width of all the rows at the
root level of a `GtkTreeModel` one would do the following:
```c
GtkTreeIter iter;
int minimum_height;
int natural_height;
int full_minimum_height = 0;
int full_natural_height = 0;
valid = gtk_tree_model_get_iter_first (model, &iter);
while (valid)
{
gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE);
gtk_cell_area_get_preferred_height_for_width (area, context, widget,
width, &minimum_height, &natural_height);
if (width_is_for_allocation)
cache_row_height (&iter, minimum_height, natural_height);
full_minimum_height += minimum_height;
full_natural_height += natural_height;
valid = gtk_tree_model_iter_next (model, &iter);
}
```
Note that in the above example we would need to cache the heights
returned for each row so that we would know what sizes to render the
areas for each row. However we would only want to really cache the
heights if the request is intended for the layouting widgets real
allocation.
In some cases the layouting widget is requested the height for an
arbitrary for_width, this is a special case for layouting widgets
who need to request size for tens of thousands of rows. For this
case it’s only important that the layouting widget calculate
one reasonably sized chunk of rows and return that height
synchronously. The reasoning here is that any layouting widget is
at least capable of synchronously calculating enough height to fill
the screen height (or scrolled window height) in response to a single
call to [vfunc@Gtk.Widget.measure]. Returning
a perfect height for width that is larger than the screen area is
inconsequential since after the layouting receives an allocation
from a scrolled window it simply continues to drive the scrollbar
values while more and more height is required for the row heights
that are calculated in the background.
# Rendering Areas
Once area sizes have been acquired at least for the rows in the
visible area of the layouting widget they can be rendered at
[vfunc@Gtk.Widget.snapshot] time.
A crude example of how to render all the rows at the root level
runs as follows:
```c
GtkAllocation allocation;
GdkRectangle cell_area = { 0, };
GtkTreeIter iter;
int minimum_width;
int natural_width;
gtk_widget_get_allocation (widget, &allocation);
cell_area.width = allocation.width;
valid = gtk_tree_model_get_iter_first (model, &iter);
while (valid)
{
cell_area.height = get_cached_height_for_row (&iter);
gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE);
gtk_cell_area_render (area, context, widget, cr,
&cell_area, &cell_area, state_flags, FALSE);
cell_area.y += cell_area.height;
valid = gtk_tree_model_iter_next (model, &iter);
}
```
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 its minimum or natural height or, if the model content
is expected to fit inside the layouting widget without scrolling, it
would make sense to calculate the allocation for each row at
the time the widget is allocated using [func@Gtk.distribute_natural_allocation].
# Handling Events and Driving Keyboard Focus
Passing events to the area is as simple as handling events on any
normal widget and then passing them to the [method@Gtk.CellArea.event]
API as they come in. Usually `GtkCellArea` is only interested in
button events, however some customized derived areas can be implemented
who are interested in handling other events. Handling an event can
trigger the [`signal@Gtk.CellArea::focus-changed`] signal to fire; as well
as [`signal@GtkCellArea::add-editable`] in the case that an editable cell
was clicked and needs to start editing. You can call
[method@Gtk.CellArea.stop_editing] at any time to cancel any cell editing
that is currently in progress.
The `GtkCellArea` drives keyboard focus from cell to cell in a way
similar to `GtkWidget`. For layouting widgets that support giving
focus to cells it’s important to remember to pass `GTK_CELL_RENDERER_FOCUSED`
to the area functions for the row that has focus and to tell the
area to paint the focus at render time.
Layouting widgets that accept focus on cells should implement the
[vfunc@Gtk.Widget.focus] virtual method. The layouting widget is always
responsible for knowing where `GtkTreeModel` rows are rendered inside
the widget, so at [vfunc@Gtk.Widget.focus] time the layouting widget
should use the `GtkCellArea` methods to navigate focus inside the area
and then observe the [enum@Gtk.DirectionType] to pass the focus to adjacent
rows and areas.
A basic example of how the [vfunc@Gtk.Widget.focus] virtual method
should be implemented:
```
static gboolean
foo_focus (GtkWidget *widget,
GtkDirectionType direction)
{
Foo *self = FOO (widget);
FooPrivate *priv = foo_get_instance_private (self);
int focus_row = priv->focus_row;
gboolean have_focus = FALSE;
if (!gtk_widget_has_focus (widget))
gtk_widget_grab_focus (widget);
valid = gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, priv->focus_row);
while (valid)
{
gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE);
if (gtk_cell_area_focus (priv->area, direction))
{
priv->focus_row = focus_row;
have_focus = TRUE;
break;
}
else
{
if (direction == GTK_DIR_RIGHT ||
direction == GTK_DIR_LEFT)
break;
else if (direction == GTK_DIR_UP ||
direction == GTK_DIR_TAB_BACKWARD)
{
if (focus_row == 0)
break;
else
{
focus_row--;
valid = gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, focus_row);
}
}
else
{
if (focus_row == last_row)
break;
else
{
focus_row++;
valid = gtk_tree_model_iter_next (priv->model, &iter);
}
}
}
}
return have_focus;
}
```
Note that the layouting widget is responsible for matching the
`GtkDirectionType` values to the way it lays out its cells.
# Cell Properties
The `GtkCellArea` introduces cell properties for `GtkCellRenderer`s.
This provides some general interfaces for defining the relationship
cell areas have with their cells. For instance in a [class@Gtk.CellAreaBox]
a cell might “expand” and receive extra space when the area is allocated
more than its full natural request, or a cell might be configured to “align”
with adjacent rows which were requested and rendered with the same
`GtkCellAreaContext`.
Use [method@Gtk.CellAreaClass.install_cell_property] to install cell
properties for a cell area class and [method@Gtk.CellAreaClass.find_cell_property]
or [method@Gtk.CellAreaClass.list_cell_properties] to get information about
existing cell properties.
To set the value of a cell property, use [method@Gtk.CellArea.cell_set_property],
[method@Gtk.CellArea.cell_set] or [method@Gtk.CellArea.cell_set_valist]. To obtain
the value of a cell property, use [method@Gtk.CellArea.cell_get_property]
[method@Gtk.CellArea.cell_get] or [method@Gtk.CellArea.cell_get_valist].
The `GtkCellArea` is an abstract class for [iface@Gtk.CellLayout]
widgets (also referred to as "layouting widgets") to interface with
an arbitrary number of [class@Gtk.CellRenderer]s and interact with the user
for a given [iface@Gtk.TreeModel] row.
The cell area handles events, focus navigation, drawing and
size requests and allocations for a given row of data.
Usually users dont have to interact with the `GtkCellArea` directly
unless they are implementing a cell-layouting widget themselves.
# Requesting area sizes
As outlined in
[GtkWidget’s geometry management section](class.Widget.html#height-for-width-geometry-management),
GTK uses a height-for-width
geometry management system to compute the sizes of widgets and user
interfaces. `GtkCellArea` uses the same semantics to calculate the
size of an area for an arbitrary number of `GtkTreeModel` rows.
When requesting the size of a cell area one needs to calculate
the size for a handful of rows, and this will be done differently by
different layouting widgets. For instance a [class@Gtk.TreeViewColumn]
always lines up the areas from top to bottom while a [class@Gtk.IconView]
on the other hand might enforce that all areas received the same
width and wrap the areas around, requesting height for more cell
areas when allocated less width.
It’s also important for areas to maintain some cell
alignments with areas rendered for adjacent rows (cells can
appear “columnized” inside an area even when the size of
cells are different in each row). For this reason the `GtkCellArea`
uses a [class@Gtk.CellAreaContext] object to store the alignments
and sizes along the way (as well as the overall largest minimum
and natural size for all the rows which have been calculated
with the said context).
The [class@Gtk.CellAreaContext] is an opaque object specific to the
`GtkCellArea` which created it (see [method@Gtk.CellArea.create_context]).
The owning cell-layouting widget can create as many contexts as
it wishes to calculate sizes of rows which should receive the
same size in at least one orientation (horizontally or vertically),
However, it’s important that the same [class@Gtk.CellAreaContext] which
was used to request the sizes for a given `GtkTreeModel` row be
used when rendering or processing events for that row.
In order to request the width of all the rows at the root level
of a `GtkTreeModel` one would do the following:
```c
GtkTreeIter iter;
int minimum_width;
int natural_width;
valid = gtk_tree_model_get_iter_first (model, &iter);
while (valid)
{
gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE);
gtk_cell_area_get_preferred_width (area, context, widget, NULL, NULL);
valid = gtk_tree_model_iter_next (model, &iter);
}
gtk_cell_area_context_get_preferred_width (context, &minimum_width, &natural_width);
```
Note that in this example it’s not important to observe the
returned minimum and natural width of the area for each row
unless the cell-layouting object is actually interested in the
widths of individual rows. The overall width is however stored
in the accompanying `GtkCellAreaContext` object and can be consulted
at any time.
This can be useful since `GtkCellLayout` widgets usually have to
support requesting and rendering rows in treemodels with an
exceedingly large amount of rows. The `GtkCellLayout` widget in
that case would calculate the required width of the rows in an
idle or timeout source (see [func@GLib.timeout_add]) and when the widget
is requested its actual width in [vfunc@Gtk.Widget.measure]
it can simply consult the width accumulated so far in the
`GtkCellAreaContext` object.
A simple example where rows are rendered from top to bottom and
take up the full width of the layouting widget would look like:
```c
static void
foo_get_preferred_width (GtkWidget *widget,
int *minimum_size,
int *natural_size)
{
Foo *self = FOO (widget);
FooPrivate *priv = foo_get_instance_private (self);
foo_ensure_at_least_one_handfull_of_rows_have_been_requested (self);
gtk_cell_area_context_get_preferred_width (priv->context, minimum_size, natural_size);
}
```
In the above example the `Foo` widget has to make sure that some
row sizes have been calculated (the amount of rows that `Foo` judged
was appropriate to request space for in a single timeout iteration)
before simply returning the amount of space required by the area via
the `GtkCellAreaContext`.
Requesting the height for width (or width for height) of an area is
a similar task except in this case the `GtkCellAreaContext` does not
store the data (actually, it does not know how much space the layouting
widget plans to allocate it for every row. It’s up to the layouting
widget to render each row of data with the appropriate height and
width which was requested by the `GtkCellArea`).
In order to request the height for width of all the rows at the
root level of a `GtkTreeModel` one would do the following:
```c
GtkTreeIter iter;
int minimum_height;
int natural_height;
int full_minimum_height = 0;
int full_natural_height = 0;
valid = gtk_tree_model_get_iter_first (model, &iter);
while (valid)
{
gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE);
gtk_cell_area_get_preferred_height_for_width (area, context, widget,
width, &minimum_height, &natural_height);
if (width_is_for_allocation)
cache_row_height (&iter, minimum_height, natural_height);
full_minimum_height += minimum_height;
full_natural_height += natural_height;
valid = gtk_tree_model_iter_next (model, &iter);
}
```
Note that in the above example we would need to cache the heights
returned for each row so that we would know what sizes to render the
areas for each row. However we would only want to really cache the
heights if the request is intended for the layouting widgets real
allocation.
In some cases the layouting widget is requested the height for an
arbitrary for_width, this is a special case for layouting widgets
who need to request size for tens of thousands of rows. For this
case it’s only important that the layouting widget calculate
one reasonably sized chunk of rows and return that height
synchronously. The reasoning here is that any layouting widget is
at least capable of synchronously calculating enough height to fill
the screen height (or scrolled window height) in response to a single
call to [vfunc@Gtk.Widget.measure]. Returning
a perfect height for width that is larger than the screen area is
inconsequential since after the layouting receives an allocation
from a scrolled window it simply continues to drive the scrollbar
values while more and more height is required for the row heights
that are calculated in the background.
# Rendering Areas
Once area sizes have been acquired at least for the rows in the
visible area of the layouting widget they can be rendered at
[vfunc@Gtk.Widget.snapshot] time.
A crude example of how to render all the rows at the root level
runs as follows:
```c
GtkAllocation allocation;
GdkRectangle cell_area = { 0, };
GtkTreeIter iter;
int minimum_width;
int natural_width;
gtk_widget_get_allocation (widget, &allocation);
cell_area.width = allocation.width;
valid = gtk_tree_model_get_iter_first (model, &iter);
while (valid)
{
cell_area.height = get_cached_height_for_row (&iter);
gtk_cell_area_apply_attributes (area, model, &iter, FALSE, FALSE);
gtk_cell_area_render (area, context, widget, cr,
&cell_area, &cell_area, state_flags, FALSE);
cell_area.y += cell_area.height;
valid = gtk_tree_model_iter_next (model, &iter);
}
```
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 its minimum or natural height or, if the model content
is expected to fit inside the layouting widget without scrolling, it
would make sense to calculate the allocation for each row at
the time the widget is allocated using [func@Gtk.distribute_natural_allocation].
# Handling Events and Driving Keyboard Focus
Passing events to the area is as simple as handling events on any
normal widget and then passing them to the [method@Gtk.CellArea.event]
API as they come in. Usually `GtkCellArea` is only interested in
button events, however some customized derived areas can be implemented
who are interested in handling other events. Handling an event can
trigger the [`signal@Gtk.CellArea::focus-changed`] signal to fire; as well
as [`signal@GtkCellArea::add-editable`] in the case that an editable cell
was clicked and needs to start editing. You can call
[method@Gtk.CellArea.stop_editing] at any time to cancel any cell editing
that is currently in progress.
The `GtkCellArea` drives keyboard focus from cell to cell in a way
similar to `GtkWidget`. For layouting widgets that support giving
focus to cells it’s important to remember to pass `GTK_CELL_RENDERER_FOCUSED`
to the area functions for the row that has focus and to tell the
area to paint the focus at render time.
Layouting widgets that accept focus on cells should implement the
[vfunc@Gtk.Widget.focus] virtual method. The layouting widget is always
responsible for knowing where `GtkTreeModel` rows are rendered inside
the widget, so at [vfunc@Gtk.Widget.focus] time the layouting widget
should use the `GtkCellArea` methods to navigate focus inside the area
and then observe the [enum@Gtk.DirectionType] to pass the focus to adjacent
rows and areas.
A basic example of how the [vfunc@Gtk.Widget.focus] virtual method
should be implemented:
```
static gboolean
foo_focus (GtkWidget *widget,
GtkDirectionType direction)
{
Foo *self = FOO (widget);
FooPrivate *priv = foo_get_instance_private (self);
int focus_row = priv->focus_row;
gboolean have_focus = FALSE;
if (!gtk_widget_has_focus (widget))
gtk_widget_grab_focus (widget);
valid = gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, priv->focus_row);
while (valid)
{
gtk_cell_area_apply_attributes (priv->area, priv->model, &iter, FALSE, FALSE);
if (gtk_cell_area_focus (priv->area, direction))
{
priv->focus_row = focus_row;
have_focus = TRUE;
break;
}
else
{
if (direction == GTK_DIR_RIGHT ||
direction == GTK_DIR_LEFT)
break;
else if (direction == GTK_DIR_UP ||
direction == GTK_DIR_TAB_BACKWARD)
{
if (focus_row == 0)
break;
else
{
focus_row--;
valid = gtk_tree_model_iter_nth_child (priv->model, &iter, NULL, focus_row);
}
}
else
{
if (focus_row == last_row)
break;
else
{
focus_row++;
valid = gtk_tree_model_iter_next (priv->model, &iter);
}
}
}
}
return have_focus;
}
```
Note that the layouting widget is responsible for matching the
`GtkDirectionType` values to the way it lays out its cells.
# Cell Properties
The `GtkCellArea` introduces cell properties for `GtkCellRenderer`s.
This provides some general interfaces for defining the relationship
cell areas have with their cells. For instance in a [class@Gtk.CellAreaBox]
a cell might “expand” and receive extra space when the area is allocated
more than its full natural request, or a cell might be configured to “align”
with adjacent rows which were requested and rendered with the same
`GtkCellAreaContext`.
Use [method@Gtk.CellAreaClass.install_cell_property] to install cell
properties for a cell area class and [method@Gtk.CellAreaClass.find_cell_property]
or [method@Gtk.CellAreaClass.list_cell_properties] to get information about
existing cell properties.
To set the value of a cell property, use [method@Gtk.CellArea.cell_set_property],
[method@Gtk.CellArea.cell_set] or [method@Gtk.CellArea.cell_set_valist]. To obtain
the value of a cell property, use [method@Gtk.CellArea.cell_get_property]
[method@Gtk.CellArea.cell_get] or [method@Gtk.CellArea.cell_get_valist].
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
static interface
static interface
static interface
static interface
static interface
Nested classes/interfaces inherited from class ch.bailu.gtk.gobject.Object
Object.OnBindingTransformFunc, Object.OnDestroyNotify, Object.OnDuplicateFunc, Object.OnNotify, Object.OnToggleNotify, Object.OnWeakNotify
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final String
Fields inherited from class ch.bailu.gtk.gobject.Object
SIGNAL_ON_NOTIFY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
activate
(CellAreaContext context, Widget widget, Rectangle cell_area, int flags, boolean edit_only) Activates @area, usually by activating the currently focused
cell, however some subclasses which embed widgets in the area
can also activate a widget if it currently has the focus.boolean
activateCell
(Widget widget, CellRenderer renderer, Event event, Rectangle cell_area, int flags) This is used by `GtkCellArea` subclasses when handling events
to activate cells, the base `GtkCellArea` class activates cells
for keyboard events for free in its own GtkCellArea->activate()
implementation.void
add
(CellRenderer renderer) Adds @renderer to @area with the default child cell properties.void
addFocusSibling
(CellRenderer renderer, CellRenderer sibling) Adds @sibling to @renderer’s focusable area, focus will be drawn
around @renderer and all of its siblings if @renderer can
focus for a given row.void
addWithProperties
(CellRenderer renderer, Str first_prop_name, Object... _elipse) Adds @renderer to @area, setting cell properties at the same time.void
addWithProperties
(CellRenderer renderer, String first_prop_name, Object... _elipse) Adds @renderer to @area, setting cell properties at the same time.void
applyAttributes
(TreeModel tree_model, TreeIter iter, boolean is_expander, boolean is_expanded) Applies any connected attributes to the renderers in
@area by pulling the values from @tree_model.Implements interfaceBuildable
.Implements interfaceCellLayout
.void
attributeConnect
(CellRenderer renderer, Str attribute, int column) Connects an @attribute to apply values from @column for the
`GtkTreeModel` in use.void
attributeConnect
(CellRenderer renderer, String attribute, int column) Connects an @attribute to apply values from @column for the
`GtkTreeModel` in use.void
attributeDisconnect
(CellRenderer renderer, Str attribute) Disconnects @attribute for the @renderer in @area so that
attribute will no longer be updated with values from the
model.void
attributeDisconnect
(CellRenderer renderer, String attribute) Disconnects @attribute for the @renderer in @area so that
attribute will no longer be updated with values from the
model.int
attributeGetColumn
(CellRenderer renderer, Str attribute) Returns the model column that an attribute has been mapped to,
or -1 if the attribute is not mapped.int
attributeGetColumn
(CellRenderer renderer, String attribute) Returns the model column that an attribute has been mapped to,
or -1 if the attribute is not mapped.void
cellGet
(CellRenderer renderer, Str first_prop_name, Object... _elipse) Gets the values of one or more cell properties for @renderer in @area.void
cellGet
(CellRenderer renderer, String first_prop_name, Object... _elipse) Gets the values of one or more cell properties for @renderer in @area.void
cellGetProperty
(CellRenderer renderer, Str property_name, Value value) Gets the value of a cell property for @renderer in @area.void
cellGetProperty
(CellRenderer renderer, String property_name, Value value) Gets the value of a cell property for @renderer in @area.void
cellSet
(CellRenderer renderer, Str first_prop_name, Object... _elipse) Sets one or more cell properties for @cell in @area.void
cellSet
(CellRenderer renderer, String first_prop_name, Object... _elipse) Sets one or more cell properties for @cell in @area.void
cellSetProperty
(CellRenderer renderer, Str property_name, Value value) Sets a cell property for @renderer in @area.void
cellSetProperty
(CellRenderer renderer, String property_name, Value value) Sets a cell property for @renderer in @area.copyContext
(CellAreaContext context) This is sometimes needed for cases where rows need to share
alignments in one orientation but may be separately grouped
in the opposing orientation.Creates a `GtkCellArea`Context to be used with @area for
all purposes.int
event
(CellAreaContext context, Widget widget, Event event, Rectangle cell_area, int flags) Delegates event handling to a `GtkCellArea`.boolean
focus
(int direction) This should be called by the @area’s owning layout widget
when focus is to be passed to @area, or moved within @area
for a given @direction and row data.void
foreach
(CellArea.OnCellCallback callback, Pointer callback_data) Calls @callback for every `GtkCellRenderer` in @area.void
foreachAlloc
(CellAreaContext context, Widget widget, Rectangle cell_area, Rectangle background_area, CellArea.OnCellAllocCallback callback, Pointer callback_data) Calls @callback for every `GtkCellRenderer` in @area with the
allocated rectangle inside @cell_area.void
getCellAllocation
(CellAreaContext context, Widget widget, CellRenderer renderer, Rectangle cell_area, Rectangle allocation) Derives the allocation of @renderer inside @area if @area
were to be renderered in @cell_area.getCellAtPosition
(CellAreaContext context, Widget widget, Rectangle cell_area, int x, int y, Rectangle alloc_area) Gets the `GtkCellRenderer` at @x and @y coordinates inside @area and optionally
returns the full cell allocation for it inside @cell_area.static ClassHandler
Gets the current `GtkTreePath` string for the currently
applied `GtkTreeIter`, this is implicitly updated when
gtk_cell_area_apply_attributes() is called and can be
used to interact with renderers from `GtkCellArea`
subclasses.Gets the `GtkCellRenderer` in @area that is currently
being edited.Gets the `GtkCellEditable` widget currently used
to edit the currently edited cell.Retrieves the currently focused cell for @areagetFocusFromSibling
(CellRenderer renderer) Gets the `GtkCellRenderer` which is expected to be focusable
for which @renderer is, or may be a sibling.getFocusSiblings
(CellRenderer renderer) Gets the focus sibling cell renderers for @renderer.static int
static long
static TypeSystem.TypeSize
void
getPreferredHeight
(CellAreaContext context, Widget widget, Int minimum_height, Int natural_height) Retrieves a cell area’s initial minimum and natural height.void
getPreferredHeightForWidth
(CellAreaContext context, Widget widget, int width, Int minimum_height, Int natural_height) Retrieves a cell area’s minimum and natural height if it would be given
the specified @width.void
getPreferredWidth
(CellAreaContext context, Widget widget, Int minimum_width, Int natural_width) Retrieves a cell area’s initial minimum and natural width.void
getPreferredWidthForHeight
(CellAreaContext context, Widget widget, int height, Int minimum_width, Int natural_width) Retrieves a cell area’s minimum and natural width if it would be given
the specified @height.int
Gets whether the area prefers a height-for-width layout
or a width-for-height layout.static long
static TypeSystem.TypeSize
boolean
hasRenderer
(CellRenderer renderer) Checks if @area contains @renderer.void
innerCellArea
(Widget widget, Rectangle cell_area, Rectangle inner_area) This is a convenience function for `GtkCellArea` implementations
to get the inner area where a given `GtkCellRenderer` will be
rendered.boolean
Returns whether the area can do anything when activated,
after applying new attributes to @area.boolean
isFocusSibling
(CellRenderer renderer, CellRenderer sibling) Returns whether @sibling is one of @renderer’s focus siblings
(see gtk_cell_area_add_focus_sibling()).onAddEditable
(CellArea.OnAddEditable signal) Connect to signal "add-editable".Connect to signal "apply-attributes".Connect to signal "focus-changed".Connect to signal "remove-editable".void
remove
(CellRenderer renderer) Removes @renderer from @area.void
removeFocusSibling
(CellRenderer renderer, CellRenderer sibling) Removes @sibling from @renderer’s focus sibling list
(see gtk_cell_area_add_focus_sibling()).void
requestRenderer
(CellRenderer renderer, int orientation, Widget widget, int for_size, Int minimum_size, Int natural_size) This is a convenience function for `GtkCellArea` implementations
to request size for cell renderers.void
setFocusCell
(CellRenderer renderer) Explicitly sets the currently focused cell to @renderer.void
snapshot
(CellAreaContext context, Widget widget, Snapshot snapshot, Rectangle background_area, Rectangle cell_area, int flags, boolean paint_focus) Snapshots @area’s cells according to @area’s layout onto at
the given coordinates.void
stopEditing
(boolean canceled) Explicitly stops the editing of the currently edited cell.Methods inherited from class ch.bailu.gtk.gobject.Object
addToggleRef, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, disconnect, disconnect, dupData, dupData, dupQdata, forceFloating, freezeNotify, get, get, getData, getData, getProperty, getProperty, getQdata, interfaceFindProperty, interfaceInstallProperty, isFloating, notify, notify, notifyByPspec, onNotify, ref, refSink, removeToggleRef, replaceData, replaceData, replaceQdata, runDispose, set, set, setData, setData, setDataFull, setDataFull, setProperty, setProperty, setQdata, setQdataFull, stealData, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref
Methods inherited from class ch.bailu.gtk.type.Pointer
asCPointer, cast, connectSignal, disconnectSignals, disconnectSignals, equals, hashCode, throwIfNull, throwNullPointerException, toString, unregisterCallbacks, unregisterCallbacks
Methods inherited from class ch.bailu.gtk.type.Type
asCPointer, asCPointer, asCPointerNotNull, asJnaPointer, asJnaPointer, asPointer, asPointer, cast, cast, throwIfNull
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface ch.bailu.gtk.type.PointerInterface
asCPointerNotNull, asJnaPointer, asPointer, isNotNull, isNull
-
Field Details
-
SIGNAL_ON_ADD_EDITABLE
- See Also:
-
SIGNAL_ON_APPLY_ATTRIBUTES
- See Also:
-
SIGNAL_ON_FOCUS_CHANGED
- See Also:
-
SIGNAL_ON_REMOVE_EDITABLE
- See Also:
-
-
Constructor Details
-
CellArea
-
-
Method Details
-
getClassHandler
-
activate
public boolean activate(@Nonnull CellAreaContext context, @Nonnull Widget widget, @Nonnull Rectangle cell_area, int flags, boolean edit_only) Activates @area, usually by activating the currently focused
cell, however some subclasses which embed widgets in the area
can also activate a widget if it currently has the focus.- Parameters:
context
- the `GtkCellArea`Context in context with the current row datawidget
- the `GtkWidget` that @area is rendering oncell_area
- the size and location of @area relative to @widget’s allocationflags
- the `GtkCellRenderer`State flags for @area for this row of data.edit_only
- if %TRUE then only cell renderers that are %GTK_CELL_RENDERER_MODE_EDITABLE will be activated.- Returns:
- Whether @area was successfully activated.
-
activateCell
public boolean activateCell(@Nonnull Widget widget, @Nonnull CellRenderer renderer, @Nonnull Event event, @Nonnull Rectangle cell_area, int flags) This is used by `GtkCellArea` subclasses when handling events
to activate cells, the base `GtkCellArea` class activates cells
for keyboard events for free in its own GtkCellArea->activate()
implementation.- Parameters:
widget
- the `GtkWidget` that @area is rendering ontorenderer
- the `GtkCellRenderer` in @area to activateevent
- the `GdkEvent` for which cell activation should occurcell_area
- the `GdkRectangle` in @widget relative coordinates of @renderer for the current row.flags
- the `GtkCellRenderer`State for @renderer- Returns:
- whether cell activation was successful
-
add
Adds @renderer to @area with the default child cell properties.- Parameters:
renderer
- the `GtkCellRenderer` to add to @area
-
addFocusSibling
Adds @sibling to @renderer’s focusable area, focus will be drawn
around @renderer and all of its siblings if @renderer can
focus for a given row.
Events handled by focus siblings can also activate the given
focusable @renderer.- Parameters:
renderer
- the `GtkCellRenderer` expected to have focussibling
- the `GtkCellRenderer` to add to @renderer’s focus area
-
addWithProperties
public void addWithProperties(@Nonnull CellRenderer renderer, @Nonnull Str first_prop_name, Object... _elipse) Adds @renderer to @area, setting cell properties at the same time.
See gtk_cell_area_add() and gtk_cell_area_cell_set() for more details.- Parameters:
renderer
- a `GtkCellRenderer` to be placed inside @areafirst_prop_name
- the name of the first cell property to set_elipse
- a %NULL-terminated list of property names and values, starting with @first_prop_name
-
addWithProperties
public void addWithProperties(@Nonnull CellRenderer renderer, String first_prop_name, Object... _elipse) Adds @renderer to @area, setting cell properties at the same time.
See gtk_cell_area_add() and gtk_cell_area_cell_set() for more details.- Parameters:
renderer
- a `GtkCellRenderer` to be placed inside @areafirst_prop_name
- the name of the first cell property to set_elipse
- a %NULL-terminated list of property names and values, starting with @first_prop_name
-
applyAttributes
public void applyAttributes(@Nonnull TreeModel tree_model, @Nonnull TreeIter iter, boolean is_expander, boolean is_expanded) Applies any connected attributes to the renderers in
@area by pulling the values from @tree_model.- Parameters:
tree_model
- the `GtkTreeModel` to pull values fromiter
- the `GtkTreeIter` in @tree_model to apply values foris_expander
- whether @iter has childrenis_expanded
- whether @iter is expanded in the view and children are visible
-
attributeConnect
Connects an @attribute to apply values from @column for the
`GtkTreeModel` in use.- Parameters:
renderer
- the `GtkCellRenderer` to connect an attribute forattribute
- the attribute namecolumn
- the `GtkTreeModel` column to fetch attribute values from
-
attributeConnect
Connects an @attribute to apply values from @column for the
`GtkTreeModel` in use.- Parameters:
renderer
- the `GtkCellRenderer` to connect an attribute forattribute
- the attribute namecolumn
- the `GtkTreeModel` column to fetch attribute values from
-
attributeDisconnect
Disconnects @attribute for the @renderer in @area so that
attribute will no longer be updated with values from the
model.- Parameters:
renderer
- the `GtkCellRenderer` to disconnect an attribute forattribute
- the attribute name
-
attributeDisconnect
Disconnects @attribute for the @renderer in @area so that
attribute will no longer be updated with values from the
model.- Parameters:
renderer
- the `GtkCellRenderer` to disconnect an attribute forattribute
- the attribute name
-
attributeGetColumn
Returns the model column that an attribute has been mapped to,
or -1 if the attribute is not mapped.- Parameters:
renderer
- a `GtkCellRenderer`attribute
- an attribute on the renderer- Returns:
- the model column, or -1
-
attributeGetColumn
Returns the model column that an attribute has been mapped to,
or -1 if the attribute is not mapped.- Parameters:
renderer
- a `GtkCellRenderer`attribute
- an attribute on the renderer- Returns:
- the model column, or -1
-
cellGet
public void cellGet(@Nonnull CellRenderer renderer, @Nonnull Str first_prop_name, Object... _elipse) Gets the values of one or more cell properties for @renderer in @area.- Parameters:
renderer
- a `GtkCellRenderer` which is inside @areafirst_prop_name
- the name of the first cell property to get_elipse
- return location for the first cell property, followed optionally by more name/return location pairs, followed by %NULL
-
cellGet
Gets the values of one or more cell properties for @renderer in @area.- Parameters:
renderer
- a `GtkCellRenderer` which is inside @areafirst_prop_name
- the name of the first cell property to get_elipse
- return location for the first cell property, followed optionally by more name/return location pairs, followed by %NULL
-
cellGetProperty
public void cellGetProperty(@Nonnull CellRenderer renderer, @Nonnull Str property_name, @Nonnull Value value) Gets the value of a cell property for @renderer in @area.- Parameters:
renderer
- a `GtkCellRenderer` inside @areaproperty_name
- the name of the property to getvalue
- a location to return the value
-
cellGetProperty
public void cellGetProperty(@Nonnull CellRenderer renderer, String property_name, @Nonnull Value value) Gets the value of a cell property for @renderer in @area.- Parameters:
renderer
- a `GtkCellRenderer` inside @areaproperty_name
- the name of the property to getvalue
- a location to return the value
-
cellSet
public void cellSet(@Nonnull CellRenderer renderer, @Nonnull Str first_prop_name, Object... _elipse) Sets one or more cell properties for @cell in @area.- Parameters:
renderer
- a `GtkCellRenderer` which is a cell inside @areafirst_prop_name
- the name of the first cell property to set_elipse
- a %NULL-terminated list of property names and values, starting with @first_prop_name
-
cellSet
Sets one or more cell properties for @cell in @area.- Parameters:
renderer
- a `GtkCellRenderer` which is a cell inside @areafirst_prop_name
- the name of the first cell property to set_elipse
- a %NULL-terminated list of property names and values, starting with @first_prop_name
-
cellSetProperty
public void cellSetProperty(@Nonnull CellRenderer renderer, @Nonnull Str property_name, @Nonnull Value value) Sets a cell property for @renderer in @area.- Parameters:
renderer
- a `GtkCellRenderer` inside @areaproperty_name
- the name of the cell property to setvalue
- the value to set the cell property to
-
cellSetProperty
public void cellSetProperty(@Nonnull CellRenderer renderer, String property_name, @Nonnull Value value) Sets a cell property for @renderer in @area.- Parameters:
renderer
- a `GtkCellRenderer` inside @areaproperty_name
- the name of the cell property to setvalue
- the value to set the cell property to
-
copyContext
This is sometimes needed for cases where rows need to share
alignments in one orientation but may be separately grouped
in the opposing orientation.
For instance, `GtkIconView` creates all icons (rows) to have
the same width and the cells theirin to have the same
horizontal alignments. However each row of icons may have
a separate collective height. `GtkIconView` uses this to
request the heights of each row based on a context which
was already used to request all the row widths that are
to be displayed.- Parameters:
context
- the `GtkCellArea`Context to copy- Returns:
- a newly created `GtkCellArea`Context copy of @context.
-
createContext
Creates a `GtkCellArea`Context to be used with @area for
all purposes. `GtkCellArea`Context stores geometry information
for rows for which it was operated on, it is important to use
the same context for the same row of data at all times (i.e.
one should render and handle events with the same `GtkCellArea`Context
which was used to request the size of those rows of data).- Returns:
- a newly created `GtkCellArea`Context which can be used with @area.
-
event
public int event(@Nonnull CellAreaContext context, @Nonnull Widget widget, @Nonnull Event event, @Nonnull Rectangle cell_area, int flags) Delegates event handling to a `GtkCellArea`.- Parameters:
context
- the `GtkCellArea`Context for this row of data.widget
- the `GtkWidget` that @area is rendering toevent
- the `GdkEvent` to handlecell_area
- the @widget relative coordinates for @areaflags
- the `GtkCellRenderer`State for @area in this row.- Returns:
- %TRUE if the event was handled by @area.
-
focus
public boolean focus(int direction) This should be called by the @area’s owning layout widget
when focus is to be passed to @area, or moved within @area
for a given @direction and row data.
Implementing `GtkCellArea` classes should implement this
method to receive and navigate focus in its own way particular
to how it lays out cells.- Parameters:
direction
- the `GtkDirectionType`- Returns:
- %TRUE if focus remains inside @area as a result of this call.
-
foreach
Calls @callback for every `GtkCellRenderer` in @area.- Parameters:
callback
- the `GtkCellCallback` to callcallback_data
- user provided data pointer
-
foreachAlloc
public void foreachAlloc(@Nonnull CellAreaContext context, @Nonnull Widget widget, @Nonnull Rectangle cell_area, @Nonnull Rectangle background_area, CellArea.OnCellAllocCallback callback, @Nullable Pointer callback_data) Calls @callback for every `GtkCellRenderer` in @area with the
allocated rectangle inside @cell_area.- Parameters:
context
- the `GtkCellArea`Context for this row of data.widget
- the `GtkWidget` that @area is rendering tocell_area
- the @widget relative coordinates and size for @areabackground_area
- the @widget relative coordinates of the background areacallback
- the `GtkCellAllocCallback` to callcallback_data
- user provided data pointer
-
getCellAllocation
public void getCellAllocation(@Nonnull CellAreaContext context, @Nonnull Widget widget, @Nonnull CellRenderer renderer, @Nonnull Rectangle cell_area, @Nonnull Rectangle allocation) Derives the allocation of @renderer inside @area if @area
were to be renderered in @cell_area.- Parameters:
context
- the `GtkCellArea`Context used to hold sizes for @area.widget
- the `GtkWidget` that @area is rendering onrenderer
- the `GtkCellRenderer` to get the allocation forcell_area
- the whole allocated area for @area in @widget for this rowallocation
- where to store the allocation for @renderer
-
getCellAtPosition
public CellRenderer getCellAtPosition(@Nonnull CellAreaContext context, @Nonnull Widget widget, @Nonnull Rectangle cell_area, int x, int y, @Nullable Rectangle alloc_area) Gets the `GtkCellRenderer` at @x and @y coordinates inside @area and optionally
returns the full cell allocation for it inside @cell_area.- Parameters:
context
- the `GtkCellArea`Context used to hold sizes for @area.widget
- the `GtkWidget` that @area is rendering oncell_area
- the whole allocated area for @area in @widget for this rowx
- the x positiony
- the y positionalloc_area
- where to store the inner allocated area of the returned cell renderer- Returns:
- the `GtkCellRenderer` at @x and @y.
-
getCurrentPathString
Gets the current `GtkTreePath` string for the currently
applied `GtkTreeIter`, this is implicitly updated when
gtk_cell_area_apply_attributes() is called and can be
used to interact with renderers from `GtkCellArea`
subclasses.- Returns:
- The current `GtkTreePath` string for the current attributes applied to @area. This string belongs to the area and should not be freed.
-
getEditWidget
Gets the `GtkCellEditable` widget currently used
to edit the currently edited cell.- Returns:
- The currently active `GtkCellEditable` widget
-
getEditedCell
Gets the `GtkCellRenderer` in @area that is currently
being edited.- Returns:
- The currently edited `GtkCellRenderer`
-
getFocusCell
Retrieves the currently focused cell for @area- Returns:
- the currently focused cell in @area.
-
getFocusFromSibling
Gets the `GtkCellRenderer` which is expected to be focusable
for which @renderer is, or may be a sibling.
This is handy for `GtkCellArea` subclasses when handling events,
after determining the renderer at the event location it can
then chose to activate the focus cell for which the event
cell may have been a sibling.- Parameters:
renderer
- the `GtkCellRenderer`- Returns:
- the `GtkCellRenderer` for which @renderer is a sibling
-
getFocusSiblings
Gets the focus sibling cell renderers for @renderer.- Parameters:
renderer
- the `GtkCellRenderer` expected to have focus- Returns:
- A `GList` of `GtkCellRenderer`s. The returned list is internal and should not be freed.
-
getPreferredHeight
public void getPreferredHeight(@Nonnull CellAreaContext context, @Nonnull Widget widget, @Nullable Int minimum_height, @Nullable Int natural_height) Retrieves a cell area’s initial minimum and natural height.
@area will store some geometrical information in @context along the way;
when requesting sizes over an arbitrary number of rows, it’s not important
to check the @minimum_height and @natural_height of this call but rather to
consult gtk_cell_area_context_get_preferred_height() after a series of
requests.- Parameters:
context
- the `GtkCellArea`Context to perform this request withwidget
- the `GtkWidget` where @area will be renderingminimum_height
- location to store the minimum heightnatural_height
- location to store the natural height
-
getPreferredHeightForWidth
public void getPreferredHeightForWidth(@Nonnull CellAreaContext context, @Nonnull Widget widget, int width, @Nullable Int minimum_height, @Nullable Int natural_height) Retrieves a cell area’s minimum and natural height if it would be given
the specified @width.
@area stores some geometrical information in @context along the way
while calling gtk_cell_area_get_preferred_width(). It’s important to
perform a series of gtk_cell_area_get_preferred_width() requests with
@context first and then call gtk_cell_area_get_preferred_height_for_width()
on each cell area individually to get the height for width of each
fully requested row.
If at some point, the width of a single row changes, it should be
requested with gtk_cell_area_get_preferred_width() again and then
the full width of the requested rows checked again with
gtk_cell_area_context_get_preferred_width().- Parameters:
context
- the `GtkCellArea`Context which has already been requested for widths.widget
- the `GtkWidget` where @area will be renderingwidth
- the width for which to check the height of this areaminimum_height
- location to store the minimum heightnatural_height
- location to store the natural height
-
getPreferredWidth
public void getPreferredWidth(@Nonnull CellAreaContext context, @Nonnull Widget widget, @Nullable Int minimum_width, @Nullable Int natural_width) Retrieves a cell area’s initial minimum and natural width.
@area will store some geometrical information in @context along the way;
when requesting sizes over an arbitrary number of rows, it’s not important
to check the @minimum_width and @natural_width of this call but rather to
consult gtk_cell_area_context_get_preferred_width() after a series of
requests.- Parameters:
context
- the `GtkCellArea`Context to perform this request withwidget
- the `GtkWidget` where @area will be renderingminimum_width
- location to store the minimum widthnatural_width
- location to store the natural width
-
getPreferredWidthForHeight
public void getPreferredWidthForHeight(@Nonnull CellAreaContext context, @Nonnull Widget widget, int height, @Nullable Int minimum_width, @Nullable Int natural_width) Retrieves a cell area’s minimum and natural width if it would be given
the specified @height.
@area stores some geometrical information in @context along the way
while calling gtk_cell_area_get_preferred_height(). It’s important to
perform a series of gtk_cell_area_get_preferred_height() requests with
@context first and then call gtk_cell_area_get_preferred_width_for_height()
on each cell area individually to get the height for width of each
fully requested row.
If at some point, the height of a single row changes, it should be
requested with gtk_cell_area_get_preferred_height() again and then
the full height of the requested rows checked again with
gtk_cell_area_context_get_preferred_height().- Parameters:
context
- the `GtkCellArea`Context which has already been requested for widths.widget
- the `GtkWidget` where @area will be renderingheight
- the height for which to check the width of this areaminimum_width
- location to store the minimum widthnatural_width
- location to store the natural width
-
getRequestMode
public int getRequestMode()Gets whether the area prefers a height-for-width layout
or a width-for-height layout.- Returns:
- The `GtkSizeRequestMode` preferred by @area.
-
hasRenderer
Checks if @area contains @renderer.- Parameters:
renderer
- the `GtkCellRenderer` to check- Returns:
- %TRUE if @renderer is in the @area.
-
innerCellArea
public void innerCellArea(@Nonnull Widget widget, @Nonnull Rectangle cell_area, @Nonnull Rectangle inner_area) This is a convenience function for `GtkCellArea` implementations
to get the inner area where a given `GtkCellRenderer` will be
rendered. It removes any padding previously added by gtk_cell_area_request_renderer().- Parameters:
widget
- the `GtkWidget` that @area is rendering ontocell_area
- the @widget relative coordinates where one of @area’s cells is to be placedinner_area
- the return location for the inner cell area
-
isActivatable
public boolean isActivatable()Returns whether the area can do anything when activated,
after applying new attributes to @area.- Returns:
- whether @area can do anything when activated.
-
isFocusSibling
Returns whether @sibling is one of @renderer’s focus siblings
(see gtk_cell_area_add_focus_sibling()).- Parameters:
renderer
- the `GtkCellRenderer` expected to have focussibling
- the `GtkCellRenderer` to check against @renderer’s sibling list- Returns:
- %TRUE if @sibling is a focus sibling of @renderer
-
remove
Removes @renderer from @area.- Parameters:
renderer
- the `GtkCellRenderer` to remove from @area
-
removeFocusSibling
Removes @sibling from @renderer’s focus sibling list
(see gtk_cell_area_add_focus_sibling()).- Parameters:
renderer
- the `GtkCellRenderer` expected to have focussibling
- the `GtkCellRenderer` to remove from @renderer’s focus area
-
requestRenderer
public void requestRenderer(@Nonnull CellRenderer renderer, int orientation, @Nonnull Widget widget, int for_size, @Nullable Int minimum_size, @Nullable Int natural_size) This is a convenience function for `GtkCellArea` implementations
to request size for cell renderers. It’s important to use this
function to request size and then use gtk_cell_area_inner_cell_area()
at render and event time since this function will add padding
around the cell for focus painting.- Parameters:
renderer
- the `GtkCellRenderer` to request size fororientation
- the `GtkOrientation` in which to request sizewidget
- the `GtkWidget` that @area is rendering ontofor_size
- the allocation contextual size to request for, or -1 if the base request for the orientation is to be returned.minimum_size
- location to store the minimum sizenatural_size
- location to store the natural size
-
setFocusCell
Explicitly sets the currently focused cell to @renderer.
This is generally called by implementations of
`GtkCellAreaClass.focus()` or `GtkCellAreaClass.event()`,
however it can also be used to implement functions such
as gtk_tree_view_set_cursor_on_cell().- Parameters:
renderer
- the `GtkCellRenderer` to give focus to
-
snapshot
public void snapshot(@Nonnull CellAreaContext context, @Nonnull Widget widget, @Nonnull Snapshot snapshot, @Nonnull Rectangle background_area, @Nonnull Rectangle cell_area, int flags, boolean paint_focus) Snapshots @area’s cells according to @area’s layout onto at
the given coordinates.- Parameters:
context
- the `GtkCellArea`Context for this row of data.widget
- the `GtkWidget` that @area is rendering tosnapshot
- the `GtkSnapshot` to draw tobackground_area
- the @widget relative coordinates for @area’s backgroundcell_area
- the @widget relative coordinates for @areaflags
- the `GtkCellRenderer`State for @area in this row.paint_focus
- whether @area should paint focus on focused cells for focused rows or not.
-
stopEditing
public void stopEditing(boolean canceled) Explicitly stops the editing of the currently edited cell.
If @canceled is %TRUE, the currently edited cell renderer
will emit the ::editing-canceled signal, otherwise the
the ::editing-done signal will be emitted on the current
edit widget.
See gtk_cell_area_get_edited_cell() and gtk_cell_area_get_edit_widget().- Parameters:
canceled
- whether editing was canceled.
-
onAddEditable
Connect to signal "add-editable".
SeeCellArea.OnAddEditable.onAddEditable(ch.bailu.gtk.gtk.CellRenderer, ch.bailu.gtk.gtk.CellEditable, ch.bailu.gtk.gdk.Rectangle, ch.bailu.gtk.type.Str)
for signal description.
FieldSIGNAL_ON_ADD_EDITABLE
contains original signal name and can be used as resource reference.- Parameters:
signal
- callback function (lambda).- Returns:
SignalHandler
. Can be used to disconnect signal and to release callback function.
-
onApplyAttributes
Connect to signal "apply-attributes".
SeeCellArea.OnApplyAttributes.onApplyAttributes(ch.bailu.gtk.gtk.TreeModel, ch.bailu.gtk.gtk.TreeIter, boolean, boolean)
for signal description.
FieldSIGNAL_ON_APPLY_ATTRIBUTES
contains original signal name and can be used as resource reference.- Parameters:
signal
- callback function (lambda).- Returns:
SignalHandler
. Can be used to disconnect signal and to release callback function.
-
onFocusChanged
Connect to signal "focus-changed".
SeeCellArea.OnFocusChanged.onFocusChanged(ch.bailu.gtk.gtk.CellRenderer, ch.bailu.gtk.type.Str)
for signal description.
FieldSIGNAL_ON_FOCUS_CHANGED
contains original signal name and can be used as resource reference.- Parameters:
signal
- callback function (lambda).- Returns:
SignalHandler
. Can be used to disconnect signal and to release callback function.
-
onRemoveEditable
Connect to signal "remove-editable".
SeeCellArea.OnRemoveEditable.onRemoveEditable(ch.bailu.gtk.gtk.CellRenderer, ch.bailu.gtk.gtk.CellEditable)
for signal description.
FieldSIGNAL_ON_REMOVE_EDITABLE
contains original signal name and can be used as resource reference.- Parameters:
signal
- callback function (lambda).- Returns:
SignalHandler
. Can be used to disconnect signal and to release callback function.
-
asBuildable
Implements interfaceBuildable
. Call this to get access to interface functions.- Returns:
Buildable
-
asCellLayout
Implements interfaceCellLayout
. Call this to get access to interface functions.- Returns:
CellLayout
-
getTypeID
public static long getTypeID() -
getParentTypeID
public static long getParentTypeID() -
getTypeSize
-
getParentTypeSize
-
getInstanceSize
public static int getInstanceSize()
-