GTK+ Reference Manual
<<< Previous Page | Home | Up | Next Page >>>

# GtkHandleBox

## Name

GtkHandleBox -- a widget for detachable window portions.

## Synopsis

    #include <gtk/gtk.h>

    struct      GtkHandleBox;
    GtkWidget*  gtk_handle_box_new              (void);
    void        gtk_handle_box_set_shadow_type  (GtkHandleBox *handle_box,
                                                 GtkShadowType type);
    void        gtk_handle_box_set_handle_position
                                                (GtkHandleBox *handle_box,
                                                 GtkPositionType position);
    void        gtk_handle_box_set_snap_edge    (GtkHandleBox *handle_box,
                                                 GtkPositionType edge);
    GtkPositionType gtk_handle_box_get_handle_position
                                                (GtkHandleBox *handle_box);
    GtkShadowType gtk_handle_box_get_shadow_type
                                                (GtkHandleBox *handle_box);
    GtkPositionType gtk_handle_box_get_snap_edge
                                                (GtkHandleBox *handle_box);

## Object Hierarchy

      GObject
       +----GtkObject
             +----GtkWidget
                   +----GtkContainer
                         +----GtkBin
                               +----GtkHandleBox

## Properties

      "shadow"               GtkShadowType        : Read / Write
      "shadow-type"          GtkShadowType        : Read / Write
      "handle-position"      GtkPositionType      : Read / Write
      "snap-edge"            GtkPositionType      : Read / Write

## Signal Prototypes

    "child-attached"
                void        user_function      (GtkHandleBox *handlebox,
                                                GtkWidget *widget,
                                                gpointer user_data);
    "child-detached"
                void        user_function      (GtkHandleBox *handlebox,
                                                GtkWidget *widget,
                                                gpointer user_data);

## Description

The GtkHandleBox widget allows a portion of a window to be "torn off". It is a bin widget which displays its child and a handle that the user can drag to tear off a separate window (the float window) containing the child widget. A thin ghost is drawn in the original location of the handlebox. By dragging the separate window back to its original location, it can be reattached.

When reattaching, the ghost and float window, must be aligned along one of the edges, the snap edge. This either can be specified by the application programmer explicitely, or GTK+ will pick a reasonable default based on the handle position.

To make detaching and reattaching the handlebox as minimally confusing as possible to the user, it is important to set the snap edge so that the snap edge does not move when the handlebox is deattached. For instance, if the handlebox is packed at the bottom of a VBox, then when the handlebox is detached, the bottom edge of the handlebox's allocation will remain fixed as the height of the handlebox shrinks, so the snap edge should be set to `GTK_POS_BOTTOM`.

## Details

### struct GtkHandleBox

    struct GtkHandleBox;

The GtkHandleBox struct contains the following fields. (These fields should be considered read-only. They should never be set by an application.)

GtkShadowType shadow_type; | The shadow type for the entry. (See gtk_handle_box_set_shadow_type()).
GtkPositionType handle_position; | The position of the handlebox's handle with respect to the child. (See gtk_handle_box_set_handle_position())
gint snap_edge; | A value of type GtkPosition type indicating snap edge for the widget. (See gtk_handle_box_set_snap_edge). The value of -1 indicates that this value has not been set.
gboolean child_detached; | A boolean value indicating whether the handlebox's child is attached or detached.

### gtk_handle_box_new ()

    GtkWidget*  gtk_handle_box_new              (void);

Create a new handle box.

Returns : | a new GtkHandleBox.

### gtk_handle_box_set_shadow_type ()

    void        gtk_handle_box_set_shadow_type  (GtkHandleBox *handle_box,
                                                 GtkShadowType type);

Sets the type of shadow to be drawn around the border of the handle box.

`handle_box` : | a GtkHandleBox
`type` : | the shadow type.

### gtk_handle_box_set_handle_position ()

    void        gtk_handle_box_set_handle_position
                                                (GtkHandleBox *handle_box,
                                                 GtkPositionType position);

Sets the side of the handlebox where the handle is drawn.

`handle_box` : | a GtkHandleBox
`position` : | the side of the handlebox where the handle should be drawn.

### gtk_handle_box_set_snap_edge ()

    void        gtk_handle_box_set_snap_edge    (GtkHandleBox *handle_box,
                                                 GtkPositionType edge);

Sets the snap edge of a handlebox. The snap edge is the edge of the detached child that must be aligned with the corresponding edge of the "ghost" left behind when the child was detached to reattach the torn-off window. Usually, the snap edge should be chosen so that it stays in the same place on the screen when the handlebox is torn off.

If the snap edge is not set, then an appropriate value will be guessed from the handle position. If the handle position is `GTK_POS_RIGHT` or `GTK_POS_LEFT`, then the snap edge will be `GTK_POS_TOP`, otherwise it will be `GTK_POS_LEFT`.

`handle_box` : | a GtkHandleBox
`edge` : | the snap edge, or -1 to unset the value; in which case GTK+ will try to guess an appropriate value in the future.

### gtk_handle_box_get_handle_position ()

    GtkPositionType gtk_handle_box_get_handle_position
                                                (GtkHandleBox *handle_box);

Gets the handle position of the handle box. See gtk_handle_box_set_handle_position().

`handle_box` : | a GtkHandleBox
Returns : | the current handle position.

### gtk_handle_box_get_shadow_type ()

    GtkShadowType gtk_handle_box_get_shadow_type
                                                (GtkHandleBox *handle_box);

Gets the type of shadow drawn around the handle box. See gtk_handle_box_set_shadow_type().

`handle_box` : | a GtkHandleBox
Returns : | the type of shadow currently drawn around the handle box.

### gtk_handle_box_get_snap_edge ()

    GtkPositionType gtk_handle_box_get_snap_edge
                                                (GtkHandleBox *handle_box);

Gets the edge used for determining reattachment of the handle box. See gtk_handle_box_set_snap_edge().

`handle_box` : | a GtkHandleBox
Returns : | the edge used for determining reattachment, or (GtkPositionType)-1 if this is determined (as per default) from the handle position.

## Properties

"`shadow`" (GtkShadowType : Read / Write)

  Deprecated property, use shadow_type instead.

"`shadow-type`" (GtkShadowType : Read / Write)

  Appearance of the shadow that surrounds the container.

"`handle-position`" (GtkPositionType : Read / Write)

  Position of the handle relative to the child widget.

"`snap-edge`" (GtkPositionType : Read / Write)

  Side of the handlebox that's lined up with the docking point to dock the handlebox.

## Signals

### The "child-attached" signal

    void        user_function                  (GtkHandleBox *handlebox,
                                                GtkWidget *widget,
                                                gpointer user_data);

This signal is emitted when the contents of the handlebox are reattached to the main window.

`handlebox` : | the object which received the signal.
`widget` : | the child widget of the handlebox. (this argument provides no extra information and is here only for backwards-compatibility)
`user_data` : | user data set when the signal handler was connected.

### The "child-detached" signal

    void        user_function                  (GtkHandleBox *handlebox,
                                                GtkWidget *widget,
                                                gpointer user_data);

This signal is emitted when the contents of the handlebox are detached from the main window.

`handlebox` : | the object which received the signal.
`widget` : | the child widget of the handlebox. (this argument provides no extra information and is here only for backwards-compatibility)
`user_data` : | user data set when the signal handler was connected.

<<< Previous Page | Home | Up | Next Page >>>
GtkEventBox | GtkIMContext