HippoCanvasContainer

HippoCanvasContainer

Synopsis


#include <hippo/hippo-canvas-container.h>

                    HippoCanvasContainer;
                    HippoCanvasContainerIface;
gboolean            hippo_canvas_container_get_child_visible
                                                        (HippoCanvasContainer *container,
                                                         HippoCanvasItem *child);
void                hippo_canvas_container_set_child_visible
                                                        (HippoCanvasContainer *container,
                                                         HippoCanvasItem *child,
                                                         gboolean visible);

Object Hierarchy

  GInterface
   +----HippoCanvasContainer

Known Implementations

HippoCanvasContainer is implemented by HippoCanvasGradient, HippoCanvasLink, HippoCanvasImage, HippoCanvasBox, HippoCanvasText and HippoCanvasImageButton.

Description

Details

HippoCanvasContainer

typedef struct _HippoCanvasContainer HippoCanvasContainer;


HippoCanvasContainerIface

typedef struct {
    GTypeInterface base_iface;

    gboolean (* get_child_visible) (HippoCanvasContainer        *container,
                                    HippoCanvasItem             *child);
    void     (* set_child_visible) (HippoCanvasContainer        *container,
                                    HippoCanvasItem             *child,
                                    gboolean                     visible);
} HippoCanvasContainerIface;


hippo_canvas_container_get_child_visible ()

gboolean            hippo_canvas_container_get_child_visible
                                                        (HippoCanvasContainer *container,
                                                         HippoCanvasItem *child);

container :

child :

Returns :


hippo_canvas_container_set_child_visible ()

void                hippo_canvas_container_set_child_visible
                                                        (HippoCanvasContainer *container,
                                                         HippoCanvasItem *child,
                                                         gboolean visible);

This is the equivalent of gtk_widget_show() and gtk_widget_hide() for GtkWidget. Unlike GtkWidget, in HippoCanvas visibility is a property of the container-child pair rather than a property of the child itself. Thus, if you remove a child from a container its visibility state is lost.

Internally, invisible children are just allocated a 0x0 size; they are not otherwise told they are invisible.

Making this a "child property" on the container instead of a flag on HippoCanvasItem is perhaps a little surprising, but is consistent with e.g. having the allocation origin in the container also. The general theme is that HippoCanvasItem has minimal knowledge of its context - doesn't know its origin coords, parent item, or whether it will be painted at all. Which makes it easier to implement canvas items and easier to use them in different/multiple contexts, but makes containers harder and more complex.

An implementation convenience of this approach is that the Windows and Linux canvas widgets need not handle the visibility of their root items.

container :

the container item

child :

child that is inside the container

visible :

FALSE if child should be given a 0x0 allocation and therefore be invisible