Toc Gallery Index Tree Gtk.Scrolled_Window

Screenshot

No screeshot

Hierarchy

Description

Gtk_Scrolled_Window is a Gtk_Bin child: it's a container the accepts a single child widget. Gtk_Scrolled_Window adds scrollbars to the child widget.

The scrolled window can work in two ways. Some widgets have native scrolling support; these widgets have "slots" for Gtk_Adjustment objects. The scrolled window installs Gtk_Adjustment objects in the child window's slots using the "set_scroll_adjustments" signal (Conceptually, these widgets implement a "Scrollable" interface).

The second way to use the scrolled window is useful with widgets that lack the "set_scroll_adjustments" signal. The Gtk_Viewport widget acts as a proxy, implementing scrollability for child widgets that lack their own scrolling capabilities.

If a widget has native scrolling abilities, it can be added to the Gtk_Scrolled_Window with Gtk.Container.Add. If a widget does not, you must first add the widget to a Gtk_Viewport, then add the Gtk_Viewport to the scrolled window. The convenience function Add_With_Viewport does exactly this, so you can ignore the presence of the viewport.

If you want to create your own new widget type that can be inserted directly into a scrolled_window, you need to specify a signal for Set_Scroll_Adjustments in the call to Gtk.Object.Initialize_Class_Record.

Types

  • type Gtk_Scrolled_Window is access all Gtk_Scrolled_Window_Record'Class;
  • type Gtk_Scrolled_Window_Record is new Bin.Gtk_Bin_Record with private;

Subprograms

  • procedure Gtk_New (Scrolled_Window : out Gtk_Scrolled_Window; Hadjustment : Gtk_Adjustment := null; Vadjustment : Gtk_Adjustment := null);
    Create a new scrolled window. The two arguments are the scrolled window's horizontal and vertical adjustments; these will be shared with the scrollbars and the child widget to keep the bars in sync with the child. Usually you want to use the default value Null_Adjustment for the adjustments, which will cause the scrolled window to create them for you.
  • procedure Initialize (Scrolled_Window : access Gtk_Scrolled_Window_Record'Class; Hadjustment : Gtk_Adjustment := null; Vadjustment : Gtk_Adjustment := null);
    Internal initialization function. See the section "Creating your own widgets" in the documentation.
  • function Get_Type return Gtk.Gtk_Type;
    Return the internal value associated with a Gtk_Scrolled_Window.
  • procedure Set_Hadjustment (Scrolled_Window : access Gtk_Scrolled_Window_Record; Hadjustment : Gtk_Adjustment);
    function Get_Hadjustment (Scrolled_Window : access Gtk_Scrolled_Window_Record) return Gtk_Adjustment;
    Set the Gtk_Adjustment for the horizontal scrollbar. This adjustment is used to connect the horizontal scrollbar to the child widget's horizontal scroll functionality.
  • procedure Set_Vadjustment (Scrolled_Window : access Gtk_Scrolled_Window_Record; Vadjustment : Gtk_Adjustment);
    function Get_Vadjustment (Scrolled_Window : access Gtk_Scrolled_Window_Record) return Gtk_Adjustment;
    Set the Gtk_Adjustment for the vertical scrollbar. This adjustment is used to connect the vertical scrollbar to the child widget's vertical scroll functionality.
  • function Get_Hscrollbar (Scrolled_Window : access Gtk_Scrolled_Window_Record) return Gtk.Scrollbar.Gtk_Scrollbar;
    Returns the horizontal scrollbar, or null if it doesn't have one.
  • function Get_Vscrollbar (Scrolled_Window : access Gtk_Scrolled_Window_Record) return Gtk.Scrollbar.Gtk_Scrollbar;
    Returns the vertical scrollbar, or null if it doesn't have one.
  • procedure Set_Policy (Scrolled_Window : access Gtk_Scrolled_Window_Record; H_Scrollbar_Policy : Enums.Gtk_Policy_Type; V_Scrollbar_Policy : Enums.Gtk_Policy_Type);
    procedure Get_Policy (Scrolled_Window : access Gtk_Scrolled_Window_Record; H_Scrollbar_Policy : out Enums.Gtk_Policy_Type; V_Scrollbar_Policy : out Enums.Gtk_Policy_Type);
    Set the scrollbar policy for the horizontal and vertical scrollbars. It determines when the scrollbar should appear; it is a value from the Gtk_Policy_Type enumeration. If Policy_Always, the scrollbar is always present; if Policy_Never, the scrollbar is never present; if Policy_Automatic, the scrollbar is present only if needed (that is, if the slider part of the bar would be smaller than the trough - the display is larger than the page size).
  • procedure Set_Placement (Scrolled_Window : access Gtk_Scrolled_Window_Record; Window_Placement : Gtk.Enums.Gtk_Corner_Type);
    function Get_Placement (Scrolled_Window : access Gtk_Scrolled_Window_Record) return Gtk.Enums.Gtk_Corner_Type;
    Determine or return the location of the widget with respect to the scrollbars. The default is Corner_Top_Left.
  • procedure Set_Shadow_Type (Scrolled_Window : access Gtk_Scrolled_Window_Record; Shadow_Type : Gtk.Enums.Gtk_Shadow_Type);
    function Get_Shadow_Type (Scrolled_Window : access Gtk_Scrolled_Window_Record) return Gtk.Enums.Gtk_Shadow_Type;
    Change the type of shadow drawn around the contents of Scrolled_Window.
  • procedure Add_With_Viewport (Scrolled_Window : access Gtk_Scrolled_Window_Record; Child : access Gtk.Widget.Gtk_Widget_Record'Class);
    Used to add children without native scrolling capabilities. This is simply a convenience function; it is equivalent to adding the unscrollable child to a viewport, then adding the viewport to the scrolled window. If a child has native scrolling, use Gtk.Container.Add instead of this function.

    The viewport scrolls the child by moving its Gdk_Window, and takes the size of the child to be the size of its toplevel Gdk_Window. This will be very wrong for most widgets that support native scrolling; for example, if you add a Gtk_Clist with a viewport, the whole widget will scroll, including the column headings. Thus Gtk_Clist supports scrolling already, and should not be used with the GtkViewport proxy.

    A widget supports scrolling natively if it contains a valid "set_scroll_adjustments" signal.

Signals

  • move_focus_out
    procedure Handler (Window : access Gtk_Scrolled_Window_Record'Class; Direction : Gtk_Direction_Type);
    Request that the keyboard focus be moved. You almost never have to emit this signal yourself, unless you are binding it to a key for user interaction. You do not need to connect to this signal
  • scroll_child
    procedure Handler (Window : access Gtk_Scrolled_Window_Record'Class; Typ : Gtk_Scroll_Type; Horizontal : Gboolean);
    You should emit this signal to request a scrolling of the child. This signal is almost never needed directly, unless you connect it to a key binding. The boolean is used to further qualify Scroll_Start and Scroll_End, which do not have horizontal and vertical variants.

Properties

  • Hadjustment_Property
    Object
    The GtkAdjustment for the horizontal position
  • Hscrollbar_Policy_Property
    Enum
    When the horizontal scrollbar is displayed
  • Shadow_Type_Property
    Enum
    Style of bevel around the contents
  • Vadjustment_Property
    Object
    The GtkAdjustment for the vertical position
  • Vscrollbar_Policy_Property
    Enum
    When the vertical scrollbar is displayed
  • Window_Placement_Property
    Enum
    Where the contents are located with respect to the scrollbars

Style Properties

  • Scrollbar_Spacing_Property
    Int
    Number of pixels between the scrollbars and the scrolled window

Testgtk source code

This code is part of testgtk, a demo application packaged with GtkAda. Testgtk demonstrates the various widgets of GtkAda
----------------------------------------------------------------------- -- GtkAda - Ada95 binding for the Gimp Toolkit -- -- -- -- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet -- -- Copyright (C) 2000-2002 ACT-Europe -- -- -- -- This library is free software; you can redistribute it and/or -- -- modify it under the terms of the GNU General Public -- -- License as published by the Free Software Foundation; either -- -- version 2 of the License, or (at your option) any later version. -- -- -- -- This library is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- -- General Public License for more details. -- -- -- -- You should have received a copy of the GNU General Public -- -- License along with this library; if not, write to the -- -- Free Software Foundation, Inc., 59 Temple Place - Suite 330, -- -- Boston, MA 02111-1307, USA. -- -- -- -- -- -- -- -- -- -- ----------------------------------------------------------------------- with Glib; use Glib; with Gtk.Enums; use Gtk.Enums; with Gtk.Scrolled_Window; use Gtk.Scrolled_Window; with Gtk.Table; use Gtk.Table; with Gtk.Toggle_Button; use Gtk.Toggle_Button; with Gtk; use Gtk; package body Create_Scrolled is ---------- -- Help -- ---------- function Help return String is begin return "This demo shows how a @bGtk_Scrolled_Window@B can be used to" & " provide some scrolling in any other widget. In this example, the" & " @bGtk_Scrolled_Window@B contains a Gtk_Table, that is" & " automatically scrolled when the scrollbars are moved." & ASCII.LF & "No explicit signal is required in this demo, everything is done" & " through @bGtk_Adjustment@Bs, that contain the current value of the" & " @bGtK_Scrollbar@Bs and also specify the area to display in the" & " @bGtk_Table@B."; end Help; --------- -- Run -- --------- procedure Run (Frame : access Gtk.Frame.Gtk_Frame_Record'Class) is Table : Gtk_Table; Scrolled : Gtk_Scrolled_Window; Toggle : Gtk_Toggle_Button; begin Set_Label (Frame, "Scrolled Window"); Gtk_New (Scrolled); Set_Border_Width (Scrolled, Border_Width => 10); Set_Policy (Scrolled, H_Scrollbar_Policy => Policy_Automatic, V_Scrollbar_Policy => Policy_Automatic); Add (Frame, Scrolled); Gtk_New (Table, Rows => 20, Columns => 20, Homogeneous => False); Set_Row_Spacings (Table, Spacing => 10); Set_Col_Spacings (Table, Spacing => 10); Add_With_Viewport (Scrolled, Table); Set_Focus_Hadjustment (Table, Get_Hadjustment (Scrolled)); Set_Focus_Vadjustment (Table, Get_Vadjustment (Scrolled)); for I in 0 .. 19 loop for J in 0 .. 19 loop Gtk_New (Toggle, "button (" & Integer'Image (I) & "," & Integer'Image (J) & ")"); Attach_Defaults (Table, Toggle, Guint (I), Guint (I + 1), Guint (J), Guint (J + 1)); end loop; end loop; Show_All (Frame); end Run; end Create_Scrolled;

Alphabetical Index