Gtk.Layout

Entities

Tagged Types

Access Types

Constants

Subprograms

Generic Instantiations

Description

Gtk.Layout.Gtk_Layout is similar to Gtk.Drawing_Area.Gtk_Drawing_Area in that it's a "blank slate" and doesn't do anything except paint a blank background by default. It's different in that it supports scrolling natively due to implementing Gtk.Scrollable.Gtk_Scrollable, and can contain child widgets since it's a Gtk.Container.Gtk_Container.

If you just want to draw, a Gtk.Drawing_Area.Gtk_Drawing_Area is a better choice since it has lower overhead. If you just need to position child widgets at specific points, then Gtk.Fixed.Gtk_Fixed provides that functionality on its own.

When handling expose events on a Gtk.Layout.Gtk_Layout, you must draw to the Gdk.Gdk_Window returned by Gtk.Layout.Get_Bin_Window, rather than to the one returned by Gtk.Widget.Get_Window as you would for a Gtk.Drawing_Area.Gtk_Drawing_Area.

A Gtk_Layout is a widget that can have an almost infinite size, without occupying a lot of memory. Its children can be located anywhere within it, but will only appear on the screen if the visible area of the layout contains them. Just like a Gtk_Viewport, its visible area is indicated by two Gtk_Adjustment widgets, and thus a Gtk_Layout can be put as is in a Gtk_Scrolled_Window. As for Gtk_Fixed containers, the children can be located anywhere in the layout (no automatic organization is done). But, as opposed to Gtk_Fixed widgets, a Gtk_Layout does not try to resize itself to show all its children.

Starting from GtkAda 2.0, you have to call Set_Size and specify the maximum size of the layout, otherwise children added with Put outside the size defined for the layout will never be visible. One way to do this is to systematically call Set_Size before calling Put, and make sure you specify a size big enough for the layout.

<screenshot>gtk-layout</screenshot> <group>Layout containers</group> <testgtk>create_layout.adb</testgtk>

"+"

function "+"
  (Widget : access Gtk_Layout_Record'Class)
return Gtk.Buildable.Gtk_Buildable
Parameters
Widget
Return Value

"+"

function "+"
  (Widget : access Gtk_Layout_Record'Class)
return Gtk.Scrollable.Gtk_Scrollable
Parameters
Widget
Return Value

"-"

function "-"
  (Interf : Gtk.Buildable.Gtk_Buildable)
return Gtk_Layout
Parameters
Interf
Return Value

"-"

function "-"
  (Interf : Gtk.Scrollable.Gtk_Scrollable)
return Gtk_Layout
Parameters
Interf
Return Value

Get_Bin_Window

function Get_Bin_Window
   (Layout : not null access Gtk_Layout_Record) return Gdk.Gdk_Window

Retrieve the bin window of the layout used for drawing operations. Since: gtk+ 2.14

Parameters
Layout
Return Value

a Gdk.Gdk_Window

Get_Border

function Get_Border
   (Self   : not null access Gtk_Layout_Record;
    Border : access Gtk.Style.Gtk_Border) return Boolean
Parameters
Self
Border
Return Value

Get_Hadjustment

function Get_Hadjustment
   (Self : not null access Gtk_Layout_Record)
    return Gtk.Adjustment.Gtk_Adjustment
Parameters
Self
Return Value

Get_Hscroll_Policy

function Get_Hscroll_Policy
   (Self : not null access Gtk_Layout_Record)
    return Gtk.Enums.Gtk_Scrollable_Policy
Parameters
Self
Return Value

Get_Size

procedure Get_Size
   (Layout : not null access Gtk_Layout_Record;
    Width  : out Guint;
    Height : out Guint)

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 ().

Parameters
Layout
Width

location to store the width set on Layout, or null

Height

location to store the height set on Layout, or null

Get_Type

function Get_Type return Glib.GType
Return Value

Get_Vadjustment

function Get_Vadjustment
   (Self : not null access Gtk_Layout_Record)
    return Gtk.Adjustment.Gtk_Adjustment
Parameters
Self
Return Value

Get_Vscroll_Policy

function Get_Vscroll_Policy
   (Self : not null access Gtk_Layout_Record)
    return Gtk.Enums.Gtk_Scrollable_Policy
Parameters
Self
Return Value

Gtk_Layout

type Gtk_Layout is access all Gtk_Layout_Record'Class;

Gtk_Layout_New

function Gtk_Layout_New
   (Hadjustment : Gtk.Adjustment.Gtk_Adjustment := null;
    Vadjustment : Gtk.Adjustment.Gtk_Adjustment := null)
    return Gtk_Layout

Creates a new Gtk.Layout.Gtk_Layout. Unless you have a specific adjustment you'd like the layout to use for scrolling, pass null for Hadjustment and Vadjustment.

Parameters
Hadjustment

horizontal scroll adjustment, or null

Vadjustment

vertical scroll adjustment, or null

Return Value

Gtk_Layout_Record

type Gtk_Layout_Record is new Gtk_Container_Record with null record;

Gtk_New

procedure Gtk_New
   (Layout      : out Gtk_Layout;
    Hadjustment : Gtk.Adjustment.Gtk_Adjustment := null;
    Vadjustment : Gtk.Adjustment.Gtk_Adjustment := null)

Creates a new Gtk.Layout.Gtk_Layout. Unless you have a specific adjustment you'd like the layout to use for scrolling, pass null for Hadjustment and Vadjustment. Initialize does nothing if the object was already created with another call to Initialize* or G_New.

Parameters
Layout
Hadjustment

horizontal scroll adjustment, or null

Vadjustment

vertical scroll adjustment, or null

Height_Property

Height_Property : constant Glib.Properties.Property_Uint;

Implements_Gtk_Buildable

package Implements_Gtk_Buildable is new Glib.Types.Implements
  (Gtk.Buildable.Gtk_Buildable, Gtk_Layout_Record, Gtk_Layout);

Implements_Gtk_Scrollable

package Implements_Gtk_Scrollable is new Glib.Types.Implements
  (Gtk.Scrollable.Gtk_Scrollable, Gtk_Layout_Record, Gtk_Layout);

Initialize

procedure Initialize
   (Layout      : not null access Gtk_Layout_Record'Class;
    Hadjustment : Gtk.Adjustment.Gtk_Adjustment := null;
    Vadjustment : Gtk.Adjustment.Gtk_Adjustment := null)

Creates a new Gtk.Layout.Gtk_Layout. Unless you have a specific adjustment you'd like the layout to use for scrolling, pass null for Hadjustment and Vadjustment. Initialize does nothing if the object was already created with another call to Initialize* or G_New.

Parameters
Layout
Hadjustment

horizontal scroll adjustment, or null

Vadjustment

vertical scroll adjustment, or null

Move

procedure Move
   (Layout       : not null access Gtk_Layout_Record;
    Child_Widget : not null access Gtk.Widget.Gtk_Widget_Record'Class;
    X            : Glib.Gint;
    Y            : Glib.Gint)

Moves a current child of Layout to a new position.

Parameters
Layout
Child_Widget

a current child of Layout

X

X position to move to

Y

Y position to move to

Put

procedure Put
   (Layout       : not null access Gtk_Layout_Record;
    Child_Widget : not null access Gtk.Widget.Gtk_Widget_Record'Class;
    X            : Glib.Gint;
    Y            : Glib.Gint)

The child will be displayed on the screen only if at least part of it intersects the visible area of the layout. The layout does not resize itself to automatically show the widget. You also need to call Set_Size, if the size you initially defined is smaller than (X, Y), or the child will never be visible even if the layout is scrolled.

Parameters
Layout
Child_Widget

child widget

X

X position of child widget

Y

Y position of child widget

Set_Hadjustment

procedure Set_Hadjustment
   (Self        : not null access Gtk_Layout_Record;
    Hadjustment : access Gtk.Adjustment.Gtk_Adjustment_Record'Class)
Parameters
Self
Hadjustment

Set_Hscroll_Policy

procedure Set_Hscroll_Policy
   (Self   : not null access Gtk_Layout_Record;
    Policy : Gtk.Enums.Gtk_Scrollable_Policy)
Parameters
Self
Policy

Set_Size

procedure Set_Size
   (Layout : not null access Gtk_Layout_Record;
    Width  : Guint;
    Height : Guint)

Sets the size of the scrollable area of the layout.

Parameters
Layout
Width

width of entire scrollable area

Height

height of entire scrollable area

Set_Vadjustment

procedure Set_Vadjustment
   (Self        : not null access Gtk_Layout_Record;
    Vadjustment : access Gtk.Adjustment.Gtk_Adjustment_Record'Class)
Parameters
Self
Vadjustment

Set_Vscroll_Policy

procedure Set_Vscroll_Policy
   (Self   : not null access Gtk_Layout_Record;
    Policy : Gtk.Enums.Gtk_Scrollable_Policy)
Parameters
Self
Policy

Width_Property

Width_Property : constant Glib.Properties.Property_Uint;