## shell-generic-container shell-generic-container — A container class with signals for allocation |

## Functions

guint | shell_generic_container_get_n_skip_paint ()
gboolean | shell_generic_container_get_skip_paint ()
void | shell_generic_container_set_skip_paint ()

## Signals

void | allocate | Run Last
void | get-preferred-height | Run Last
void | get-preferred-width | Run Last

## Types and Values

#define | SHELL_TYPE_GENERIC_CONTAINER
| ShellGenericContainer

## Object Hierarchy

        GBoxed
        ╰── ShellGenericContainerAllocation
        GObject
        ╰── GInitiallyUnowned
            ╰── ClutterActor
                ╰── StWidget
                    ╰── ShellGenericContainer

## Implemented Interfaces

ShellGenericContainer implements ClutterContainer, ClutterScriptable, ClutterAnimatable and AtkImplementorIface.

## Description

ShellGenericContainer is mainly a workaround for the current lack of GObject subclassing + vfunc overrides in gjs. We implement the container interface, but proxy the virtual functions into signals, which gjs can catch.

ShellGenericContainer is an StWidget, and automatically takes its borders and padding into account during size request and allocation.

## Functions

### shell_generic_container_get_n_skip_paint ()

    guint
    shell_generic_container_get_n_skip_paint
                                   (ShellGenericContainer *self);

#### Parameters

self | A ShellGenericContainer |

#### Returns

Number of children which will not be painted.

### shell_generic_container_get_skip_paint ()

    gboolean
    shell_generic_container_get_skip_paint
                                   (ShellGenericContainer *self,
                                    ClutterActor *child);

Gets whether or not `actor` is skipped when painting.

#### Parameters

self | A ShellGenericContainer |
child | Child ClutterActor |

#### Returns

`TRUE` or `FALSE`

### shell_generic_container_set_skip_paint ()

    void
    shell_generic_container_set_skip_paint
                                   (ShellGenericContainer *self,
                                    ClutterActor *child,
                                    gboolean skip);

Set whether or not we should skip painting `actor` . Workaround for lack of gjs ability to override _paint vfunc.

#### Parameters

self | A ShellGenericContainer |
child | Child ClutterActor |
skip | `TRUE` if we should skip painting |

## Types and Values

### SHELL_TYPE_GENERIC_CONTAINER

    #define SHELL_TYPE_GENERIC_CONTAINER (shell_generic_container_get_type ())

### ShellGenericContainer

    typedef struct _ShellGenericContainer ShellGenericContainer;

## Signal Details

### The `“allocate”` signal

    void
    user_function (ShellGenericContainer *self,
                   ClutterActorBox       *box,
                   ClutterAllocationFlags flags,
                   gpointer               user_data)

Emitted when `self` is allocated, after chaining up to the parent allocate method.

Note that `box` is `self` 's content box (qv `st_theme_node_get_content_box()`), NOT its allocation.

#### Parameters

self | the ShellGenericContainer |
box | `self` 's content box |
flags | the allocation flags. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“get-preferred-height”` signal

    void
    user_function (ShellGenericContainer           *self,
                   gfloat                           for_width,
                   ShellGenericContainerAllocation *alloc,
                   gpointer                         user_data)

Emitted when `clutter_actor_get_preferred_height()` is called on `self` . You should fill in the fields of `alloc` with the your minimum and natural heights. ShellGenericContainer will deal with taking its borders and padding into account for you.

`alloc` 's fields are initialized to 0, so unless you have a fixed height specified (via “height” or CSS), you must connect to this signal and fill in the values.

#### Parameters

self | the ShellGenericContainer |
for_width | as in `clutter_actor_get_preferred_height()` |
alloc | a ShellGenericContainerAllocation to be filled in |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“get-preferred-width”` signal

    void
    user_function (ShellGenericContainer           *self,
                   gfloat                           for_height,
                   ShellGenericContainerAllocation *alloc,
                   gpointer                         user_data)

Emitted when `clutter_actor_get_preferred_width()` is called on `self` . You should fill in the fields of `alloc` with the your minimum and natural widths. ShellGenericContainer will deal with taking its borders and padding into account for you.

`alloc` 's fields are initialized to 0, so unless you have a fixed width specified (via “width” or CSS), you must connect to this signal and fill in the values.

#### Parameters

self | the ShellGenericContainer |
for_height | as in `clutter_actor_get_preferred_width()` |
alloc | a ShellGenericContainerAllocation to be filled in |
user_data | user data set when the signal handler was connected. |

Flags: Run Last