GtkLayout

GtkLayout — Infinite scrollable area containing child widgets and/or custom drawing

Synopsis

#include <gtk/gtk.h>

struct              GtkLayout;
GtkWidget *         gtk_layout_new                      (GtkAdjustment *hadjustment,
                                                         GtkAdjustment *vadjustment);
void                gtk_layout_put                      (GtkLayout *layout,
                                                         GtkWidget *child_widget,
                                                         gint x,
                                                         gint y);
void                gtk_layout_move                     (GtkLayout *layout,
                                                         GtkWidget *child_widget,
                                                         gint x,
                                                         gint y);
void                gtk_layout_set_size                 (GtkLayout *layout,
                                                         guint width,
                                                         guint height);
void                gtk_layout_get_size                 (GtkLayout *layout,
                                                         guint *width,
                                                         guint *height);
void                gtk_layout_freeze                   (GtkLayout *layout);
void                gtk_layout_thaw                     (GtkLayout *layout);
GtkAdjustment *     gtk_layout_get_hadjustment          (GtkLayout *layout);
GtkAdjustment *     gtk_layout_get_vadjustment          (GtkLayout *layout);
void                gtk_layout_set_hadjustment          (GtkLayout *layout,
                                                         GtkAdjustment *adjustment);
void                gtk_layout_set_vadjustment          (GtkLayout *layout,
                                                         GtkAdjustment *adjustment);
GdkWindow *         gtk_layout_get_bin_window           (GtkLayout *layout);

Object Hierarchy

  GObject
   +----GInitiallyUnowned
         +----GtkObject
               +----GtkWidget
                     +----GtkContainer
                           +----GtkLayout

Implemented Interfaces

GtkLayout implements AtkImplementorIface and GtkBuildable.

Properties

  "hadjustment"              GtkAdjustment*        : Read / Write
  "height"                   guint                 : Read / Write
  "vadjustment"              GtkAdjustment*        : Read / Write
  "width"                    guint                 : Read / Write

Child Properties

  "x"                        gint                  : Read / Write
  "y"                        gint                  : Read / Write

Signals

  "set-scroll-adjustments"                         : Action

Description

GtkLayout is similar to GtkDrawingArea in that it's a "blank slate" and doesn't do anything but paint a blank background by default. It's different in that it supports scrolling natively (you can add it to a GtkScrolledWindow), and it can contain child widgets, since it's a GtkContainer. However if you're just going to draw, a GtkDrawingArea is a better choice since it has lower overhead.

When handling expose events on a GtkLayout, you must draw to GTK_LAYOUT (layout)->bin_window, rather than to GTK_WIDGET (layout)->window, as you would for a drawing area.

Details

struct GtkLayout

struct GtkLayout {
  GdkWindow *GSEAL (bin_window);
};


gtk_layout_new ()

GtkWidget *         gtk_layout_new                      (GtkAdjustment *hadjustment,
                                                         GtkAdjustment *vadjustment);

Creates a new GtkLayout. Unless you have a specific adjustment you'd like the layout to use for scrolling, pass NULL for hadjustment and vadjustment.

hadjustment :

horizontal scroll adjustment, or NULL. [allow-none]

vadjustment :

vertical scroll adjustment, or NULL. [allow-none]

Returns :

a new GtkLayout

gtk_layout_put ()

void                gtk_layout_put                      (GtkLayout *layout,
                                                         GtkWidget *child_widget,
                                                         gint x,
                                                         gint y);

Adds child_widget to layout, at position (x,y). layout becomes the new parent container of child_widget.

layout :

a GtkLayout

child_widget :

child widget

x :

X position of child widget

y :

Y position of child widget

gtk_layout_move ()

void                gtk_layout_move                     (GtkLayout *layout,
                                                         GtkWidget *child_widget,
                                                         gint x,
                                                         gint y);

Moves a current child of layout to a new position.

layout :

a GtkLayout

child_widget :

a current child of layout

x :

X position to move to

y :

Y position to move to

gtk_layout_set_size ()

void                gtk_layout_set_size                 (GtkLayout *layout,
                                                         guint width,
                                                         guint height);

Sets the size of the scrollable area of the layout.

layout :

a GtkLayout

width :

width of entire scrollable area

height :

height of entire scrollable area

gtk_layout_get_size ()

void                gtk_layout_get_size                 (GtkLayout *layout,
                                                         guint *width,
                                                         guint *height);

Gets the size that has been set on the layout, and that determines the total extents of the layout's scrollbar area. See gtk_layout_set_size().

layout :

a GtkLayout

width :

location to store the width set on layout, or NULL. [out][allow-none]

height :

location to store the height set on layout, or NULL. [out][allow-none]

gtk_layout_freeze ()

void                gtk_layout_freeze                   (GtkLayout *layout);

Warning

gtk_layout_freeze is deprecated and should not be used in newly-written code.

This is a deprecated function, it doesn't do anything useful.

layout :

a GtkLayout

gtk_layout_thaw ()

void                gtk_layout_thaw                     (GtkLayout *layout);

Warning

gtk_layout_thaw is deprecated and should not be used in newly-written code.

This is a deprecated function, it doesn't do anything useful.

layout :

a GtkLayout

gtk_layout_get_hadjustment ()

GtkAdjustment *     gtk_layout_get_hadjustment          (GtkLayout *layout);

This function should only be called after the layout has been placed in a GtkScrolledWindow or otherwise configured for scrolling. It returns the GtkAdjustment used for communication between the horizontal scrollbar and layout.

See GtkScrolledWindow, GtkScrollbar, GtkAdjustment for details.

layout :

a GtkLayout

Returns :

horizontal scroll adjustment. [transfer none]

gtk_layout_get_vadjustment ()

GtkAdjustment *     gtk_layout_get_vadjustment          (GtkLayout *layout);

This function should only be called after the layout has been placed in a GtkScrolledWindow or otherwise configured for scrolling. It returns the GtkAdjustment used for communication between the vertical scrollbar and layout.

See GtkScrolledWindow, GtkScrollbar, GtkAdjustment for details.

layout :

a GtkLayout

Returns :

vertical scroll adjustment. [transfer none]

gtk_layout_set_hadjustment ()

void                gtk_layout_set_hadjustment          (GtkLayout *layout,
                                                         GtkAdjustment *adjustment);

Sets the horizontal scroll adjustment for the layout.

See GtkScrolledWindow, GtkScrollbar, GtkAdjustment for details.

layout :

a GtkLayout

adjustment :

new scroll adjustment. [allow-none]

gtk_layout_set_vadjustment ()

void                gtk_layout_set_vadjustment          (GtkLayout *layout,
                                                         GtkAdjustment *adjustment);

Sets the vertical scroll adjustment for the layout.

See GtkScrolledWindow, GtkScrollbar, GtkAdjustment for details.

layout :

a GtkLayout

adjustment :

new scroll adjustment. [allow-none]

gtk_layout_get_bin_window ()

GdkWindow *         gtk_layout_get_bin_window           (GtkLayout *layout);

Retrieve the bin window of the layout used for drawing operations.

layout :

a GtkLayout

Returns :

a GdkWindow. [transfer none]

Since 2.14

Property Details

The "hadjustment" property

  "hadjustment"              GtkAdjustment*        : Read / Write

The GtkAdjustment for the horizontal position.


The "height" property

  "height"                   guint                 : Read / Write

The height of the layout.

Allowed values: <= G_MAXINT

Default value: 100


The "vadjustment" property

  "vadjustment"              GtkAdjustment*        : Read / Write

The GtkAdjustment for the vertical position.


The "width" property

  "width"                    guint                 : Read / Write

The width of the layout.

Allowed values: <= G_MAXINT

Default value: 100

Child Property Details

The "x" child property

  "x"                        gint                  : Read / Write

X position of child widget.

Default value: 0


The "y" child property

  "y"                        gint                  : Read / Write

Y position of child widget.

Default value: 0

Signal Details

The "set-scroll-adjustments" signal

void                user_function                      (GtkLayout     *horizontal,
                                                        GtkAdjustment *vertical,
                                                        GtkAdjustment *arg2,
                                                        gpointer       user_data)       : Action

Set the scroll adjustments for the layout. Usually scrolled containers like GtkScrolledWindow will emit this signal to connect two instances of GtkScrollbar to the scroll directions of the GtkLayout.

horizontal :

the horizontal GtkAdjustment

vertical :

the vertical GtkAdjustment

user_data :

user data set when the signal handler was connected.

See Also

GtkDrawingArea, GtkScrolledWindow