## GtkWidgetPaintable GtkWidgetPaintable — Drawing a widget elsewhere |

## Functions

GdkPaintable * | gtk_widget_paintable_new ()
GtkWidget * | gtk_widget_paintable_get_widget ()
void | gtk_widget_paintable_set_widget ()

## Types and Values

| GtkWidgetPaintable

## Includes

    #include <gtk/gtk.h>

## Description

GtkWidgetPaintable is an implementation of the GdkPaintable interface that allows displaying the contents of a GtkWidget.

GtkWidgetPaintable will also take care of the widget not being in a state where it can be drawn (like when it isn't shown) and just draw nothing or where it does not have a size (like when it is hidden) and report no size in that case.

Of course, GtkWidgetPaintable allows you to monitor widgets for size changes by emitting the “invalidate-size” signal whenever the size of the widget changes as well as for visual changes by emitting the “invalidate-contents” signal whenever the widget changes.

You can of course use a GtkWidgetPaintable everywhere a GdkPaintable is allowed, including using it on a GtkPicture (or one of its parents) that it was set on itself via `gtk_picture_set_paintable()`. The paintable will take care of recursion when this happens. If you do this however, ensure the “can-shrink” property is set to `TRUE` or you might end up with an infinitely growing widget.

## Functions

### gtk_widget_paintable_new ()

    GdkPaintable *
    gtk_widget_paintable_new (GtkWidget *widget);

Creates a new widget paintable observing the given widget.

#### Parameters

widget | a GtkWidget or `NULL`. | [allow-none][transfer none]

#### Returns

a new GtkWidgetPaintable.

[transfer full][type GtkWidgetPaintable]

### gtk_widget_paintable_get_widget ()

    GtkWidget *
    gtk_widget_paintable_get_widget (GtkWidgetPaintable *self);

Returns the widget that is observed or `NULL` if none.

#### Parameters

self | a GtkWidgetPaintable |

#### Returns

the observed widget.

[transfer none][nullable]

### gtk_widget_paintable_set_widget ()

    void
    gtk_widget_paintable_set_widget (GtkWidgetPaintable *self,
                                     GtkWidget *widget);

Sets the widget that should be observed.

#### Parameters

self | a GtkWidgetPaintable |
widget | the widget to observe or `NULL`. | [allow-none]

## Types and Values

### GtkWidgetPaintable

    typedef struct _GtkWidgetPaintable GtkWidgetPaintable;

## See Also

GtkWidget, GdkPaintable