GtkWidget is the base class all widgets in GTK+ derive from.
It manages the widget lifecycle, states and style.
Height-for-width Geometry Management
GTK+ uses a height-for-width (and width-for-height) geometry management system. Height-for-width means that a widget can change how much
vertical space it needs, depending on the amount of horizontal space that it is given (and similar for width-for-height). The most common
example is a label that reflows to fill up the available width, wraps to fewer lines, and therefore needs less height.
Height-for-width geometry management is implemented in GTK+ by way of five virtual methods:
There are some important things to keep in mind when implementing height-for-width and when using it in container implementations.
The geometry management system will query a widget hierarchy in only one orientation at a time. When widgets are initially queried for their
minimum sizes it is generally done in two initial passes in the SizeRequestMode
chosen by the toplevel.
For example, when queried in the normal gtk_size_request_height_for_width mode: First, the default minimum
and natural width for each widget in the interface will be computed using
get_preferred_width. Because the preferred widths for each
container depend on the preferred widths of their children, this information propagates up the hierarchy, and finally a minimum and natural
width is determined for the entire toplevel. Next, the toplevel will use the minimum width to query for the minimum height contextual to that
width using get_preferred_height_for_width, which
will also be a highly recursive operation. The minimum height for the minimum width is normally used to set the minimum size constraint on the
toplevel (unless set_geometry_hints is explicitly used instead).
After the toplevel window has initially requested its size in both dimensions it can go on to allocate itself a reasonable size (or a size
previously specified with set_default_size). During the recursive
allocation process it’s important to note that request cycles will be recursively executed while container widgets allocate their children.
Each container widget, once allocated a size, will go on to first share the space in one orientation among its children and then request each
child's height for its target allocated width or its width for allocated height, depending. In this way a Widget will
typically be requested its size a number of times before actually being allocated a size. The size a widget is finally allocated can of course
differ from the size it has requested. For this reason, Widget caches a small number of results to avoid re-querying
for the same sizes in one allocation cycle.
See GtkContainer’s geometry management section to learn more about how height-for-width allocations are performed by container
widgets.
If a widget does move content around to intelligently use up the allocated size then it must support the request in both
SizeRequestModes even if the widget in question only trades sizes in a single
orientation.
For instance, a Label that does height-for-width word wrapping will not expect to have
get_preferred_height called because that call is specific to
a width-for-height request. In this case the label must return the height required for its own minimum possible width. By following this rule
any widget that handles height-for-width or width-for-height requests will always be allocated at least enough space to fit its own content.
Here are some examples of how a gtk_size_request_height_for_width widget generally deals with
width-for-height requests, for get_preferred_height it will
do:
static void
foo_widget_get_preferred_height (GtkWidget *widget,
gint *min_height,
gint *nat_height)
{
if (i_am_in_height_for_width_mode)
{
gint min_width, nat_width;
GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget,
&min_width,
&nat_width);
GTK_WIDGET_GET_CLASS (widget)->get_preferred_height_for_width
(widget,
min_width,
min_height,
nat_height);
}
else
{
... some widgets do both. For instance, if a GtkLabel is
rotated to 90 degrees it will return the minimum and
natural height for the rotated label here.
}
}
And in get_preferred_width_for_height it will
simply return the minimum and natural width:
static void
foo_widget_get_preferred_width_for_height (GtkWidget *widget,
gint for_height,
gint *min_width,
gint *nat_width)
{
if (i_am_in_height_for_width_mode)
{
GTK_WIDGET_GET_CLASS (widget)->get_preferred_width (widget,
min_width,
nat_width);
}
else
{
... again if a widget is sometimes operating in
width-for-height mode (like a rotated GtkLabel) it can go
ahead and do its real width for height calculation here.
}
}
Often a widget needs to get its own request during size request or allocation. For example, when computing height it may need to also compute
width. Or when deciding how to use an allocation, the widget may need to know its natural size. In these cases, the widget should be careful to
call its virtual methods directly, like this:
GTK_WIDGET_GET_CLASS(widget)->get_preferred_width (widget,
&min,
&natural);
It will not work to use the wrapper functions, such as
get_preferred_width inside your own size request implementation. These return a request adjusted by
SizeGroup and by the
adjust_size_request virtual method. If a widget used the
wrappers inside its virtual method implementations, then the adjustments (such as widget margins) would be applied twice. GTK+ therefore does
not allow this and will warn if you try to do it.
Of course if you are getting the size request for another widget, such as a child of a container, you must use the wrapper APIs. Otherwise, you
would not properly consider widget margins, SizeGroup, and so forth.
Since 3.10 GTK+ also supports baseline vertical alignment of widgets. This means that widgets are positioned such that the typographical
baseline of widgets in the same row are aligned. This happens if a widget supports baselines, has a vertical alignment of
gtk_align_baseline, and is inside a container that supports baselines and has a natural “row” that it
aligns to the baseline, or a baseline assigned to it by the grandparent.
Baseline alignment support for a widget is done by the
get_preferred_height_and_baseline_for_width virtual function. It allows you to report a baseline in combination with the minimum and
natural height. If there is no baseline you can return -1 to indicate this. The default implementation of this virtual function calls into the
get_preferred_height and
get_preferred_height_for_width, so if baselines
are not supported it doesn’t need to be implemented.
If a widget ends up baseline aligned it will be allocated all the space in the parent as if it was gtk_align_fill
, but the selected baseline can be found via
get_allocated_baseline. If this has a value other than -1 you need to align the widget such that the baseline appears at the position.
Style Properties
Widget introduces “style properties” - these are basically object properties that are stored not on the object,
but in the style object associated to the widget. Style properties are set in resource files. This mechanism is used for configuring such
things as the location of the scrollbar arrows through the theme, giving theme authors more control over the look of applications without the
need to write a theme engine in C.
Use install_style_property to install style properties for a
widget class, find_style_property or
list_style_properties to get information about existing style
properties and style_get_property,
style_get or
style_get_valist to obtain the value of a style property.
GtkWidget as GtkBuildable
The GtkWidget implementation of the GtkBuildable interface supports a custom `<accelerator>` element, which has attributes named
”key”, ”modifiers” and ”signal” and allows to specify accelerators.
An example of a UI definition fragment specifying an accelerator:
<object class="GtkButton">
<accelerator key="q" modifiers="GDK_CONTROL_MASK" signal="clicked"/>
</object>
In addition to accelerators, GtkWidget also support a custom `<accessible>` element, which supports actions and relations. Properties on
the accessible implementation of an object can be set by accessing the internal child “accessible” of a Widget.
An example of a UI definition fragment specifying an accessible:
<object class="GtkLabel" id="label1"/>
<property name="label">I am a Label for a Button</property>
</object>
<object class="GtkButton" id="button1">
<accessibility>
<action action_name="click" translatable="yes">Click the button.</action>
<relation target="label1" type="labelled-by"/>
</accessibility>
<child internal-child="accessible">
<object class="AtkObject" id="a11y-button1">
<property name="accessible-name">Clickable Button</property>
</object>
</child>
</object>
Finally, GtkWidget allows style information such as style classes to be associated with widgets, using the custom `<style>` element:
<object class="GtkButton" id="button1">
<style>
<class name="my-special-button-class"/>
<class name="dark-button"/>
</style>
</object>
Building composite widgets from template XML #
GtkWidget exposes some facilities to automate the procedure of creating composite widgets using
Builder interface description language.
To create composite widgets with Builder XML, one must associate the interface
description with the widget class at class initialization time using
set_template.
The interface description semantics expected in composite template descriptions is slightly different from regular
Builder XML.
Unlike regular interface descriptions, set_template will expect a `<
template>` tag as a direct child of the toplevel `<interface>` tag. The `<template>` tag must specify the “class” attribute
which must be the type name of the widget. Optionally, the “parent” attribute may be specified to specify the direct parent type of the
widget type, this is ignored by the GtkBuilder but required for Glade to introspect what kind of properties and internal children exist for a
given type when the actual type does not exist.
The XML which is contained inside the `<template>` tag behaves as if it were added to the `<object>` tag defining "widget" itself.
You may set properties on widget
by inserting `<property>` tags into the `<template>` tag, and also add `<child>`
tags to add children and extend "widget" in the normal way you would with `<object>` tags.
Additionally, `<object>` tags can also be added before and after the initial `<template>` tag in the normal way, allowing one to
define auxiliary objects which might be referenced by other widgets declared as children of the `<template>` tag.
An example of a GtkBuilder Template Definition:
<interface>
<template class="FooWidget" parent="GtkBox">
<property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
<property name="spacing">4</property>
<child>
<object class="GtkButton" id="hello_button">
<property name="label">Hello World</property>
<signal name="clicked" handler="hello_button_clicked" object="FooWidget" swapped="yes"/>
</object>
</child>
<child>
<object class="GtkButton" id="goodbye_button">
<property name="label">Goodbye World</property>
</object>
</child>
</template>
</interface>
Typically, you'll place the template fragment into a file that is bundled with your project, using
Resource. In order to load the template, you need to call
set_template_from_resource from the class initialization of
your Widget type:
static void
foo_widget_class_init (FooWidgetClass *klass)
{
// ...
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass),
"/com/example/ui/foowidget.ui");
}
You will also need to call init_template from the instance initialization
function:
static void
foo_widget_init (FooWidget *self)
{
// ...
gtk_widget_init_template (GTK_WIDGET (self));
}
You can access widgets defined in the template using the
get_template_child function, but you will typically declare a pointer in the instance private data structure of your type using the same
name as the widget in the template definition, and call gtk_widget_class_bind_template_child_private
with that name, e.g.
typedef struct {
GtkWidget *hello_button;
GtkWidget *goodbye_button;
} FooWidgetPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (FooWidget, foo_widget, GTK_TYPE_BOX)
static void
foo_widget_class_init (FooWidgetClass *klass)
{
// ...
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass),
"/com/example/ui/foowidget.ui");
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass),
FooWidget, hello_button);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (klass),
FooWidget, goodbye_button);
}
static void
foo_widget_init (FooWidget *widget)
{
}
You can also use gtk_widget_class_bind_template_callback
to connect a signal callback defined in the template with a function
visible in the scope of the class, e.g.
// the signal handler has the instance and user data swapped
// because of the swapped="yes" attribute in the template XML
static void
hello_button_clicked (FooWidget *self,
GtkButton *button)
{
g_print ("Hello, world!\n");
}
static void
foo_widget_class_init (FooWidgetClass *klass)
{
// ...
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (klass),
"/com/example/ui/foowidget.ui");
gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (klass), hello_button_clicked);
}
- public bool activate ()
For widgets that can be “activated” (buttons, menu items, etc.
- public void add_accelerator (string accel_signal, AccelGroup accel_group, uint accel_key, ModifierType accel_mods, AccelFlags accel_flags)
Installs an accelerator for this this in
accel_group
that causes accel_signal
to be emitted if the accelerator is activated.
- public void add_device_events (Device device, EventMask events)
Adds the device events in the bitfield events
to the event mask
for this.
- public void add_events (int events)
Adds the events in the bitfield events
to the event mask for
this.
- public void add_mnemonic_label (Widget label)
Adds a widget to the list of mnemonic labels for this widget.
- public uint add_tick_callback (owned TickCallback callback)
Queues an animation frame update and adds a callback to be called before
each frame.
- public virtual void adjust_baseline_allocation (ref int baseline)
- public virtual void adjust_baseline_request (ref int minimum_baseline, ref int natural_baseline)
- public virtual void adjust_size_allocation (Orientation orientation, ref int minimum_size, ref int natural_size, ref int allocated_pos, ref int allocated_size)
- public virtual void adjust_size_request (Orientation orientation, ref int minimum_size, ref int natural_size)
- public class void bind_template_callback_full (string callback_name, Callback callback_symbol)
Declares a callback_symbol
to handle callback_name
from the template XML defined for widget_type
.
- public class void bind_template_child_full (string name, bool internal_child, ssize_t struct_offset)
Automatically assign an object declared in the class template XML to be set
to a location on a freshly built instance’s private data, or alternatively accessible via
get_template_child.
- public bool child_focus (DirectionType direction)
This function is used by custom widget implementations; if you're writing an
app, you’d use grab_focus to move the focus to a particular widget, and
set_focus_chain to change the focus tab order.
- public void class_path (out uint path_length, out string path, out string path_reversed)
Same as path,
but always uses the name of a widget’s type, never uses a custom name set with gtk_widget_set_name
.
- public bool compute_expand (Orientation orientation)
Computes whether a container should give this widget extra space when
possible.
- public virtual void compute_expand_internal (out bool hexpand_p, out bool vexpand_p)
- public Context create_pango_context ()
Creates a new Context
with the appropriate font map, font options, font description, and base direction for drawing text for this widget.
- public Layout create_pango_layout (string? text)
Creates a new Layout
with the appropriate font map, font description, and base direction for drawing text for this widget.
- public void destroyed (ref unowned Widget widget_pointer)
This function sets *widget_pointer
to
null if widget_pointer
!= null.
- public bool device_is_shadowed (Device device)
Returns true if device
has
been shadowed by a GTK+ device grab on another widget, so it would stop sending events to this.
- public virtual void dispatch_child_properties_changed (ParamSpec[] pspecs)
- public void draw_to_cairo_context (Context cr)
- public void ensure_style ()
Ensures that this has a style (
this->style).
- public void error_bell ()
Notifies the user about an input-related error on this widget.
- public class unowned ParamSpec find_style_property (string property_name)
Finds a style property of a widget class by name.
- public void freeze_child_notify ()
- public virtual unowned Object get_accessible ()
Returns the accessible object that describes the widget to an assistive
technology.
- public unowned ActionGroup? get_action_group (string prefix)
Retrieves the
ActionGroup that was registered using prefix
.
- public int get_allocated_baseline ()
Returns the baseline that has currently been allocated to
this.
- public int get_allocated_height ()
Returns the height that has currently been allocated to
this.
- public void get_allocated_size (out Allocation allocation, out int baseline)
Retrieves the widget’s allocated size.
- public int get_allocated_width ()
Returns the width that has currently been allocated to
this.
- public void get_allocation (out Allocation allocation)
Retrieves the widget’s allocation.
- public unowned Widget? get_ancestor (Type widget_type)
Gets the first ancestor of this with type
widget_type
.
- public bool get_app_paintable ()
Determines whether the application intends to draw on the widget in an
draw handler.
- public bool get_can_default ()
Determines whether this can be a default
widget.
- public bool get_can_focus ()
Determines whether this can own the input
focus.
- public void get_child_requisition (out Requisition requisition)
This function is only for use in widget implementations.
- public bool get_child_visible ()
- public void get_clip (out Allocation clip)
Retrieves the widget’s clip area.
- public unowned Clipboard get_clipboard (Atom selection)
Returns the clipboard object for the given selection to be used with
this.
- public string get_composite_name ()
Obtains the composite name of a widget.
- public class unowned string get_css_name ()
Gets the name used by this class for matching in CSS code.
- public bool get_device_enabled (Device device)
Returns whether device
can interact with
this and its children.
- public EventMask get_device_events (Device device)
Returns the events mask for the widget corresponding to an specific device.
- public TextDirection get_direction ()
Gets the reading direction for a particular widget.
- public unowned Display get_display ()
Get the Display for
the toplevel window associated with this widget.
- public bool get_double_buffered ()
Determines whether the widget is double buffered.
- public int get_events ()
Returns the event mask (see
EventMask) for the widget.
- public bool get_focus_on_click ()
Returns whether the widget should grab focus when it is clicked with the
mouse.
- public unowned FontMap? get_font_map ()
- public unowned FontOptions? get_font_options ()
- public unowned FrameClock? get_frame_clock ()
Obtains the frame clock for a widget.
- public Align get_halign ()
Gets the value of the
halign property.
- public bool get_has_tooltip ()
Returns the current value of the has-tooltip property.
- public bool get_has_window ()
Determines whether this has a
Window of its own.
- public bool get_hexpand ()
Gets whether the widget would like any available extra horizontal space.
- public bool get_hexpand_set ()
Gets whether
set_hexpand has been used to explicitly set the expand flag on this widget.
- public bool get_mapped ()
Whether the widget is mapped.
- public int get_margin_bottom ()
- public int get_margin_end ()
- public int get_margin_left ()
- public int get_margin_right ()
- public int get_margin_start ()
- public int get_margin_top ()
- public ModifierType get_modifier_mask (ModifierIntent intent)
Returns the modifier mask the this’s
windowing system backend uses for a particular purpose.
- public unowned RcStyle get_modifier_style ()
Returns the current modifier style for the widget.
- public bool get_no_show_all ()
Returns the current value of the
no_show_all property, which determines whether calls to
show_all will affect this widget.
- public double get_opacity ()
Fetches the requested opacity for this widget.
- public unowned Context get_pango_context ()
Gets a Context with
the appropriate font map, font description, and base direction for this widget.
- public unowned Container? get_parent ()
Returns the parent container of this.
- public unowned Window? get_parent_window ()
Gets this’s parent window, or
null if it does not have one.
- public unowned WidgetPath get_path ()
Returns the WidgetPath
representing this, if the widget is not connected to a toplevel widget, a partial path will be
created.
- public void get_pointer (out int x, out int y)
Obtains the location of the mouse pointer in widget coordinates.
- public virtual void get_preferred_height (out int minimum_height, out int natural_height)
Retrieves a widget’s initial minimum and natural height.
- public virtual void get_preferred_height_and_baseline_for_width (int width, out int minimum_height, out int natural_height, out int minimum_baseline, out int natural_baseline)
Retrieves a widget’s minimum and natural height and the corresponding
baselines if it would be given the specified width
, or the default height if width
is -1.
- public virtual void get_preferred_height_for_width (int width, out int minimum_height, out int natural_height)
Retrieves a widget’s minimum and natural height if it would be given the
specified width
.
- public virtual void get_preferred_height_for_width_internal (int width, out int minimum_height, out int natural_height)
- public virtual void get_preferred_height_internal (out int minimum_height, out int natural_height)
- public void get_preferred_size (out Requisition minimum_size, out Requisition natural_size)
Retrieves the minimum and natural size of a widget, taking into account the
widget’s preference for height-for-width management.
- public virtual void get_preferred_width (out int minimum_width, out int natural_width)
Retrieves a widget’s initial minimum and natural width.
- public virtual void get_preferred_width_for_height (int height, out int minimum_width, out int natural_width)
Retrieves a widget’s minimum and natural width if it would be given the
specified height
.
- public virtual void get_preferred_width_for_height_internal (int height, out int minimum_width, out int natural_width)
- public virtual void get_preferred_width_internal (out int minimum_width, out int natural_width)
- public bool get_realized ()
Determines whether this is realized.
- public bool get_receives_default ()
Determines whether this is always treated
as the default widget within its toplevel when it has the focus, even if another widget is the default.
- public virtual SizeRequestMode get_request_mode ()
Gets whether the widget prefers a height-for-width layout or a
width-for-height layout.
- public Requisition get_requisition ()
Retrieves the widget’s requisition.
- public unowned Window get_root_window ()
Get the root window where this widget is located.
- public int get_scale_factor ()
Retrieves the internal scale factor that maps from window coordinates to the
actual device pixels.
- public unowned Screen get_screen ()
Get the Screen from the
toplevel window associated with this widget.
- public bool get_sensitive ()
Returns the widget’s sensitivity (in the sense of returning the value that
has been set using set_sensitive).
- public unowned Settings get_settings ()
Gets the settings object holding the settings used for this widget.
- public void get_size_request (out int width, out int height)
Gets the size request that was explicitly set for the widget using
set_size_request.
- public StateType get_state ()
Returns the widget’s state.
- public StateFlags get_state_flags ()
Returns the widget state as a flag set.
- public unowned Style get_style ()
Simply an accessor function that returns this
->style.
- public unowned StyleContext get_style_context ()
Returns the style context associated to this
.
- public bool get_support_multidevice ()
Returns true if
this is multiple pointer aware.
- public unowned Object get_template_child (Type widget_type, string name)
Fetch an object build from the template XML for widget_type
in
this this instance.
- public string? get_tooltip_markup ()
Gets the contents of the tooltip for this.
- public string? get_tooltip_text ()
Gets the contents of the tooltip for this.
- public unowned Window get_tooltip_window ()
Returns the Window of
the current tooltip.
- public unowned Widget get_toplevel ()
This function returns the topmost widget in the container hierarchy
this is a part of.
- public Align get_valign ()
Gets the value of the
valign property.
- public Align get_valign_with_baseline ()
Gets the value of the
valign property, including gtk_align_baseline
.
- public bool get_vexpand ()
Gets whether the widget would like any available extra vertical space.
- public bool get_vexpand_set ()
Gets whether
set_vexpand has been used to explicitly set the expand flag on this widget.
- public bool get_visible ()
Determines whether the widget is visible.
- public unowned Visual get_visual ()
Gets the visual that will be used to render this
.
- public unowned Window? get_window ()
Returns the widget’s window if it is realized,
null otherwise
- public void grab_default ()
Causes this to become the default widget.
- public bool has_grab ()
Determines whether the widget is currently grabbing events, so it is the
only widget receiving input events (keyboard and mouse).
- public bool has_rc_style ()
Determines if the widget style has been looked up through the rc mechanism.
- public bool has_screen ()
Checks whether there is a
Screen is associated with this widget.
- public bool has_visible_focus ()
Determines if the widget should show a visible indication that it has the
global input focus.
- public bool hide_on_delete ()
- public bool in_destruction ()
Returns whether the widget is currently being destroyed.
- public void init_template ()
Creates and initializes child widgets defined in templates.
- public void input_shape_combine_region (Region? region)
Sets an input shape for this widget’s GDK window.
- public void insert_action_group (string name, ActionGroup? group)
Inserts group
into this.
- public class void install_style_property (ParamSpec pspec)
Installs a style property on a widget class.
- public class void install_style_property_parser (ParamSpec pspec, RcPropertyParser parser)
Installs a style property on a widget class.
- public bool intersect (Rectangle area, out Rectangle? intersection = null)
Computes the intersection of a this’s
area and area
, storing the intersection in intersection
, and returns true if
there was an intersection.
- public bool is_ancestor (Widget ancestor)
Determines whether this is somewhere
inside ancestor
, possibly with intermediate containers.
- public bool is_composited ()
Whether this can rely on having its alpha
channel drawn correctly.
- public bool is_drawable ()
Determines whether this can be drawn to.
- public bool is_sensitive ()
Returns the widget’s effective sensitivity, which means it is sensitive
itself and also its parent widget is sensitive
- public bool is_toplevel ()
Determines whether this is a toplevel
widget.
- public bool is_visible ()
Determines whether the widget and all its parents are marked as visible.
- public List<unowned Closure> list_accel_closures ()
- public (unowned string)[] list_action_prefixes ()
Retrieves a null-terminated array of
strings containing the prefixes of ActionGroup's available to
this.
- public List<unowned Widget> list_mnemonic_labels ()
Returns a newly allocated list of the widgets, normally labels, for which
this widget is the target of a mnemonic (see for example,
set_mnemonic_widget).
- public class (unowned ParamSpec)[] list_style_properties ()
Returns all style properties of a widget class.
- public void modify_base (StateType state, Color? color)
Sets the base color for a widget in a particular state.
- public void modify_bg (StateType state, Color? color)
Sets the background color for a widget in a particular state.
- public void modify_cursor (Color? primary, Color? secondary)
Sets the cursor color to use in a widget, overriding the
Widget cursor-color and secondary-cursor-color style properties.
- public void modify_fg (StateType state, Color? color)
Sets the foreground color for a widget in a particular state.
- public void modify_font (FontDescription? font_desc)
Sets the font to use for a widget.
- public void modify_style (RcStyle style)
Modifies style values on the widget.
- public void modify_text (StateType state, Color? color)
Sets the text color for a widget in a particular state.
- public void override_background_color (StateFlags state, RGBA? color)
Sets the background color to use for a widget.
- public void override_color (StateFlags state, RGBA? color)
Sets the color to use for a widget.
- public void override_cursor (RGBA? cursor, RGBA? secondary_cursor)
Sets the cursor color to use in a widget, overriding the cursor-color and
secondary-cursor-color style properties.
- public void override_font (FontDescription? font_desc)
Sets the font to use for a widget.
- public void override_symbolic_color (string name, RGBA? color)
Sets a symbolic color for a widget.
- public void path (out uint path_length, out string path, out string path_reversed)
Obtains the full path to this.
- public void queue_allocate ()
This function is only for use in widget implementations.
- public void queue_compute_expand ()
Mark this as needing to recompute its
expand flags.
- public void queue_draw ()
- public void queue_draw_area (int x, int y, int width, int height)
Convenience function that calls
queue_draw_region on the region created from the given
coordinates.
- public virtual void queue_draw_region (Region region)
Invalidates the area of this defined by
region
by calling invalidate_region on the widget’s
window and all its child windows.
- public void queue_resize ()
This function is only for use in widget implementations.
- public void queue_resize_no_redraw ()
This function works like
queue_resize, except that the widget is not invalidated.
- public Region region_intersect (Region region)
Computes the intersection of a this’s
area and region
, returning the intersection.
- public void register_window (Window window)
Registers a Window with
the widget and sets it up so that the widget receives events for it.
- public bool remove_accelerator (AccelGroup accel_group, uint accel_key, ModifierType accel_mods)
Removes an accelerator from this,
previously installed with add_accelerator.
- public void remove_mnemonic_label (Widget label)
Removes a widget from the list of mnemonic labels for this widget.
- public void remove_tick_callback (uint id)
- public Pixbuf? render_icon (string stock_id, IconSize size, string? detail)
A convenience function that uses the theme settings for
this to look up stock_id
and render it to a pixbuf.
- public Pixbuf? render_icon_pixbuf (string stock_id, IconSize size)
A convenience function that uses the theme engine and style settings for
this to look up stock_id
and render it to a pixbuf.
- public void reparent (Widget new_parent)
Moves a widget from one
Container to another, handling reference count issues to avoid destroying
the widget.
- public void reset_rc_styles ()
Reset the styles of this and all
descendents, so when they are looked up again, they get the correct values for the currently loaded RC file settings.
- public void reset_style ()
Updates the style context of this and all
descendants by updating its widget path.
- public int send_expose (Event event)
Very rarely-used function.
- public bool send_focus_change (Event event)
Sends the focus change event
to this
- public void set_accel_path (string? accel_path, AccelGroup? accel_group)
Given an accelerator group, accel_group
, and an accelerator
path, accel_path
, sets up an accelerator in accel_group
so whenever the key binding that is defined for
accel_path
is pressed, this will be activated.
- public class void set_accessible_role (Role role)
Sets the default Role to be
set on accessibles created for widgets of this.
- public class void set_accessible_type (Type type)
Sets the type to be used for creating accessibles for widgets of
this.
- public void set_allocation (Allocation allocation)
Sets the widget’s allocation.
- public void set_app_paintable (bool app_paintable)
Sets whether the application intends to draw on the widget in an
draw handler.
- public void set_can_default (bool can_default)
Specifies whether this can be a default
widget.
- public void set_can_focus (bool can_focus)
Specifies whether this can own the input
focus.
- public void set_child_visible (bool is_visible)
Sets whether this should be mapped along
with its when its parent is mapped and this has been shown with
show.
- public void set_clip (Allocation clip)
Sets the widget’s clip.
- public void set_composite_name (string name)
Sets a widgets composite name.
- public class void set_connect_func (owned BuilderConnectFunc connect_func)
For use in language bindings, this will override the default
BuilderConnectFunc to be used when parsing GtkBuilder XML from this
class’s template data.
- public class void set_css_name (string name)
Sets the name to be used for CSS matching of widgets.
- public void set_device_enabled (Device device, bool enabled)
Enables or disables a
Device to interact with this and all its
children.
- public void set_device_events (Device device, EventMask events)
Sets the device event mask (see
EventMask) for a widget.
- public void set_direction (TextDirection dir)
Sets the reading direction on a particular widget.
- public void set_double_buffered (bool double_buffered)
Widgets are double buffered by default; you can use this function to turn
off the buffering.
- public void set_events (int events)
Sets the event mask (see
EventMask) for a widget.
- public void set_focus_on_click (bool focus_on_click)
Sets whether the widget should grab focus when it is clicked with the mouse.
- public void set_font_map (FontMap? font_map)
Sets the font map to use for Pango rendering.
- public void set_font_options (FontOptions? options)
Sets the FontOptions
used for Pango rendering in this widget.
- public void set_halign (Align align)
Sets the horizontal alignment of this.
- public void set_has_tooltip (bool has_tooltip)
Sets the has-tooltip property on this to
has_tooltip
.
- public void set_has_window (bool has_window)
Specifies whether this has a
Window of its own.
- public void set_hexpand (bool expand)
Sets whether the widget would like any available extra horizontal space.
- public void set_hexpand_set (bool @set)
Sets whether the hexpand flag (see
get_hexpand) will be used.
- public void set_mapped (bool mapped)
Marks the widget as being mapped.
- public void set_margin_bottom (int margin)
Sets the bottom margin of this.
- public void set_margin_end (int margin)
Sets the end margin of this.
- public void set_margin_left (int margin)
Sets the left margin of this.
- public void set_margin_right (int margin)
Sets the right margin of this.
- public void set_margin_start (int margin)
Sets the start margin of this.
- public void set_margin_top (int margin)
Sets the top margin of this.
- public void set_no_show_all (bool no_show_all)
Sets the
no_show_all property, which determines whether calls to show_all
will affect this widget.
- public void set_opacity (double opacity)
Request the this to be rendered partially
transparent, with opacity 0 being fully transparent and 1 fully opaque.
- public void set_parent (Container parent)
This function is useful only when implementing subclasses of
Container.
- public void set_parent_window (Window parent_window)
Sets a non default parent window for this.
- public void set_realized (bool realized)
Marks the widget as being realized.
- public void set_receives_default (bool receives_default)
Specifies whether this will be treated as
the default widget within its toplevel when it has the focus, even if another widget is the default.
- public void set_redraw_on_allocate (bool redraw_on_allocate)
Sets whether the entire widget is queued for drawing when its size
allocation changes.
- public void set_sensitive (bool sensitive)
Sets the sensitivity of a widget.
- public void set_size_request (int width, int height)
Sets the minimum size of a widget; that is, the widget’s size request will
be at least width
by height
.
- public void set_state (StateType state)
This function is for use in widget implementations.
- public void set_state_flags (StateFlags flags, bool clear)
This function is for use in widget implementations.
- public void set_style (Style? style)
Used to set the Style
for a widget (this->style).
- public void set_support_multidevice (bool support_multidevice)
Enables or disables multiple pointer awareness.
- public class void set_template (Bytes template_bytes)
This should be called at class initialization time to specify the GtkBuilder
XML to be used to extend a widget.
- public class void set_template_from_resource (string resource_name)
- public void set_tooltip_markup (string? markup)
Sets markup
as the contents of the tooltip, which is marked up
with the Pango text markup language.
- public void set_tooltip_text (string? text)
Sets text
as the contents of the tooltip.
- public void set_tooltip_window (Window? custom_window)
Replaces the default window used for displaying tooltips with
custom_window
.
- public void set_valign (Align align)
Sets the vertical alignment of this.
- public void set_vexpand (bool expand)
Sets whether the widget would like any available extra vertical space.
- public void set_vexpand_set (bool @set)
Sets whether the vexpand flag (see
get_vexpand) will be used.
- public void set_visible (bool visible)
Sets the visibility state of this.
- public void set_visual (Visual? visual)
Sets the visual that should be used for by widget and its children for
creating Windows.
- public void set_window (owned Window window)
Sets a widget’s window.
- public void shape_combine_region (Region? region)
Sets a shape for this widget’s GDK window.
- public virtual void show_all ()
Recursively shows a widget, and any child widgets (if the widget is a
container).
- public void show_now ()
Shows a widget.
- public void size_allocate_with_baseline (Allocation allocation, int baseline)
This function is only used by
Container subclasses, to assign a size, position and (optionally) baseline
to their child widgets.
- public Requisition size_request ()
This function is typically used when implementing a
Container subclass.
- public void style_attach ()
This function attaches the widget’s
Style to the widget's Window.
- public void style_get (...)
Gets the values of a multiple style properties of
this.
- public void style_get_property (string property_name, ref Value value)
Gets the value of a style property of this
.
- public void style_get_valist (string first_property_name, va_list var_args)
- public void thaw_child_notify ()
- public bool translate_coordinates (Widget dest_widget, int src_x, int src_y, out int dest_x, out int dest_y)
Translate coordinates relative to this’s
allocation to coordinates relative to dest_widget
’s allocations.
- public void trigger_tooltip_query ()
Triggers a tooltip query on the display where the toplevel of
this is located.
- public void unparent ()
This function is only for use in widget implementations.
- public void unregister_window (Window window)
- public void unset_state_flags (StateFlags flags)
This function is for use in widget implementations.
- public signal void accel_closures_changed ()
- public virtual signal bool button_press_event (EventButton event)
The button_press_event signal will be emitted
when a button (typically from a mouse) is pressed.
- public virtual signal bool button_release_event (EventButton event)
The button_release_event signal will be emitted
when a button (typically from a mouse) is released.
- public virtual signal bool can_activate_accel (uint signal_id)
Determines whether an accelerator that activates the signal identified by
signal_id
can currently be activated.
- public virtual signal void child_notify (ParamSpec child_property)
The child_notify signal is emitted for each
child property that has changed on an object.
- public virtual signal void composited_changed ()
The composited_changed signal is emitted when
the composited status of widgets
screen changes.
- public virtual signal bool configure_event (EventConfigure event)
The configure_event signal will be emitted when
the size, position or stacking of the widget
's window has changed.
- public virtual signal bool damage_event (EventExpose event)
Emitted when a redirected window belonging to widget
gets drawn
into.
- public virtual signal bool delete_event (EventAny event)
The delete_event signal is emitted if a user
requests that a toplevel window is closed.
- public virtual signal void destroy ()
Signals that all holders of a reference to the widget should release the
reference that they hold.
- public virtual signal bool destroy_event (EventAny event)
The destroy_event signal is emitted when a
Window is destroyed.
- public virtual signal void direction_changed (TextDirection previous_direction)
The direction_changed signal is emitted when the
text direction of a widget changes.
- public virtual signal void drag_begin (DragContext context)
The drag_begin signal is emitted on the drag
source when a drag is started.
- public virtual signal void drag_data_delete (DragContext context)
The drag_data_delete signal is emitted on the
drag source when a drag with the action gdk_action_move is successfully completed.
- public virtual signal void drag_data_get (DragContext context, SelectionData selection_data, uint info, uint time_)
The drag_data_get signal is emitted on the drag
source when the drop site requests the data which is dragged.
- public virtual signal void drag_data_received (DragContext context, int x, int y, SelectionData selection_data, uint info, uint time_)
The drag_data_received signal is emitted on the
drop site when the dragged data has been received.
- public virtual signal bool drag_drop (DragContext context, int x, int y, uint time_)
The drag_drop signal is emitted on the drop site
when the user drops the data onto the widget.
- public virtual signal void drag_end (DragContext context)
The drag_end signal is emitted on the drag
source when a drag is finished.
- public virtual signal bool drag_failed (DragContext context, DragResult result)
The drag_failed signal is emitted on the drag
source when a drag has failed.
- public virtual signal void drag_leave (DragContext context, uint time_)
The drag_leave signal is emitted on the drop
site when the cursor leaves the widget.
- public virtual signal bool drag_motion (DragContext context, int x, int y, uint time_)
The drag_motion signal is emitted on the drop
site when the user moves the cursor over the widget during a drag.
- public virtual signal bool draw (Context cr)
This signal is emitted when a widget is supposed to render itself.
- public virtual signal bool enter_notify_event (EventCrossing event)
The enter_notify_event will be emitted when the
pointer enters the widget
's window.
- public virtual signal bool event (Event event)
The GTK+ main loop will emit three signals for each GDK event delivered to a
widget: one generic event signal, another, more specific, signal that matches the type of event delivered (e.
- public signal void event_after (Event event)
After the emission of the
event signal and (optionally) the second more specific signal,
event_after will be emitted regardless of the previous two signals handlers return values.
- public virtual signal bool focus (DirectionType direction)
- public virtual signal bool focus_in_event (EventFocus event)
The focus_in_event signal will be emitted when
the keyboard focus enters the widget
's window.
- public virtual signal bool focus_out_event (EventFocus event)
The focus_out_event signal will be emitted when
the keyboard focus leaves the widget
's window.
- public virtual signal bool grab_broken_event (EventGrabBroken event)
Emitted when a pointer or keyboard grab on a window belonging to
widget
gets broken.
- public virtual signal void grab_focus ()
Causes this to have the keyboard focus for
the Window it's inside.
- public virtual signal void grab_notify (bool was_grabbed)
The grab_notify signal is emitted when a widget
becomes shadowed by a GTK+ grab (not a pointer or keyboard grab) on another widget, or when it becomes unshadowed due to a grab being
removed.
- public virtual signal void hide ()
The hide signal is emitted when widget
is hidden, for example with hide.
- public virtual signal void hierarchy_changed (Widget? previous_toplevel)
The hierarchy_changed signal is emitted when the
anchored state of a widget changes.
- public virtual signal bool key_press_event (EventKey event)
The key_press_event signal is emitted when a key
is pressed.
- public virtual signal bool key_release_event (EventKey event)
The key_release_event signal is emitted when a
key is released.
- public virtual signal bool keynav_failed (DirectionType direction)
Gets emitted if keyboard navigation fails.
- public virtual signal bool leave_notify_event (EventCrossing event)
The leave_notify_event will be emitted when the
pointer leaves the widget
's window.
- public virtual signal void map ()
The map signal is emitted when widget
is going to be mapped, that is when the widget is visible (which is controlled with
set_visible) and all its parents up to the toplevel widget are also
visible.
- public virtual signal bool map_event (EventAny event)
The map_event signal will be emitted when the
widget
's window is mapped.
- public virtual signal bool mnemonic_activate (bool group_cycling)
The default handler for this signal activates widget
if
group_cycling
is false, or just makes widget
grab focus if group_cycling
is true.
- public virtual signal bool motion_notify_event (EventMotion event)
The motion_notify_event signal is emitted when
the pointer moves over the widget's Window.
- public virtual signal void move_focus (DirectionType direction)
- public virtual signal void parent_set (Widget? previous_parent)
The parent_set signal is emitted when a new
parent has been set on a widget.
- public virtual signal bool popup_menu ()
This signal gets emitted whenever a widget should pop up a context menu.
- public virtual signal bool property_notify_event (EventProperty event)
The property_notify_event signal will be emitted
when a property on the widget
's window has been changed or deleted.
- public virtual signal bool proximity_in_event (EventProximity event)
- public virtual signal bool proximity_out_event (EventProximity event)
- public virtual signal bool query_tooltip (int x, int y, bool keyboard_tooltip, Tooltip tooltip)
Emitted when
has_tooltip is true and the hover
timeout has expired with the cursor hovering "above" widget
; or emitted when widget
got focus in keyboard mode.
- public virtual signal void realize ()
The realize signal is emitted when widget
is associated with a Window, which means that realize
has been called or the widget has been mapped (that is, it is going to be drawn).
- public virtual signal void screen_changed (Screen? previous_screen)
The screen_changed signal gets emitted when the
screen of a widget has changed.
- public virtual signal bool scroll_event (EventScroll event)
The scroll_event signal is emitted when a button
in the 4 to 7 range is pressed.
- public virtual signal bool selection_clear_event (EventSelection event)
The selection_clear_event signal will be emitted
when the the widget
's window has lost ownership of a selection.
- public virtual signal void selection_get (SelectionData selection_data, uint info, uint time_)
- public virtual signal bool selection_notify_event (EventSelection event)
- public virtual signal void selection_received (SelectionData selection_data, uint time_)
- public virtual signal bool selection_request_event (EventSelection event)
The selection_request_event signal will be
emitted when another client requests ownership of the selection owned by the widget
's window.
- public virtual signal void show ()
The show signal is emitted when widget
is shown, for example with show.
- public virtual signal bool show_help (WidgetHelpType help_type)
- public virtual signal void size_allocate (Allocation allocation)
- public virtual signal void state_changed (StateType previous_state)
The state_changed signal is emitted when the
widget state changes.
- public virtual signal void state_flags_changed (StateFlags previous_state_flags)
The state_flags_changed signal is emitted when
the widget state changes, see get_state_flags.
- public virtual signal void style_set (Style? previous_style)
The style_set signal is emitted when a new style
has been set on a widget.
- public virtual signal void style_updated ()
- public virtual signal bool touch_event (Event event)
- public virtual signal void unmap ()
The unmap signal is emitted when widget
is going to be unmapped, which means that either it or any of its parents up to the toplevel widget have been set as hidden.
- public virtual signal bool unmap_event (EventAny event)
The unmap_event signal will be emitted when the
widget
's window is unmapped.
- public virtual signal void unrealize ()
The unrealize signal is emitted when the
Window associated with widget
is destroyed, which means that
unrealize has been called or the widget has been unmapped (that is, it is going to be hidden).
- public virtual signal bool visibility_notify_event (EventVisibility event)
The visibility_notify_event will be emitted when
the widget
's window is obscured or unobscured.
- public virtual signal bool window_state_event (EventWindowState event)
The window_state_event will be emitted when the
state of the toplevel window associated to the widget
changes.