gtk.widget
Module for [Widget] class
Types 3
The base class for all widgets.
[gtk.widget.Widget] is the base class all widgets in GTK derive from. It manages the widget lifecycle, layout, 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 two virtual methods:
vfunc@Gtk.Widget.get_request_modevfunc@Gtk.Widget.measure
There are some important things to keep in mind when implementing height-for-width and when using it in widget implementations.
If you implement a direct [gtk.widget.Widget] subclass that supports height-for-width or width-for-height geometry management for itself or its child widgets, the vfunc@Gtk.Widget.get_request_mode virtual function must be implemented as well and return the widget's preferred request mode. The default implementation of this virtual function returns [gtk.types.SizeRequestMode.ConstantSize], which means that the widget will only ever get -1 passed as the for_size value to its vfunc@Gtk.Widget.measure implementation.
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 [gtk.types.SizeRequestMode] chosen by the toplevel.
For example, when queried in the normal [gtk.types.SizeRequestMode.HeightForWidth] mode:
First, the default minimum and natural width for each widget in the interface will be computed using [gtk.widget.Widget.measure] with an orientation of [gtk.types.Orientation.Horizontal] and a for_size of -1. Because the preferred widths for each widget 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 [gtk.widget.Widget.measure] with an orientation of [gtk.types.Orientation.Vertical] and a for_size of the just computed width. This 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.
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 [gtk.window.Window.setDefaultSize]). During the recursive allocation process it’s important to note that request cycles will be recursively executed while widgets allocate their children. Each 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 [gtk.widget.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, [gtk.widget.Widget] caches a small number of results to avoid re-querying for the same sizes in one allocation cycle.
If a widget does move content around to intelligently use up the allocated size then it must support the request in both [gtk.types.SizeRequestMode]s even if the widget in question only trades sizes in a single orientation.
For instance, a [gtk.label.Label] that does height-for-width word wrapping will not expect to have vfunc@Gtk.Widget.measure with an orientation of [gtk.types.Orientation.Vertical] 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.types.SizeRequestMode.HeightForWidth] widget generally deals with width-for-height requests:
static void
foo_widget_measure (GtkWidget *widget,
GtkOrientation orientation,
int for_size,
int *minimum_size,
int *natural_size,
int *minimum_baseline,
int *natural_baseline)
{
if (orientation == GTK_ORIENTATION_HORIZONTAL)
{
// Calculate minimum and natural width
}
else // VERTICAL
{
if (i_am_in_height_for_width_mode)
{
int min_width, dummy;
// First, get the minimum width of our widget
GTK_WIDGET_GET_CLASS (widget)->measure (widget, GTK_ORIENTATION_HORIZONTAL, -1,
&min_width, &dummy, &dummy, &dummy);
// Now use the minimum width to retrieve the minimum and natural height to display
// that width.
GTK_WIDGET_GET_CLASS (widget)->measure (widget, GTK_ORIENTATION_VERTICAL, min_width,
minimum_size, natural_size, &dummy, &dummy);
}
else
{
// ... some widgets do both.
}
}
}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 in the code example above.
It will not work to use the wrapper function [gtk.widget.Widget.measure] inside your own vfunc@Gtk.Widget.size_allocate implementation. These return a request adjusted by [gtk.size_group.SizeGroup], the widget's align and expand flags, as well as its CSS style.
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 widget, you must use [gtk.widget.Widget.measure]; otherwise, you would not properly consider widget margins, [gtk.size_group.SizeGroup], and so forth.
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 using baselines, and is inside a widget 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 also done by the vfunc@Gtk.Widget.measure virtual function. It allows you to report both a minimum and natural size.
If a widget ends up baseline aligned it will be allocated all the space in the parent as if it was [gtk.types.Align.Fill], but the selected baseline can be found via [gtk.widget.Widget.getBaseline]. If the baseline has a value other than -1 you need to align the widget such that the baseline appears at the position.
GtkWidget as GtkBuildable
The [gtk.widget.Widget] implementation of the [gtk.buildable.Buildable] interface supports various custom elements to specify additional aspects of widgets that are not directly expressed as properties.
If the widget uses a [gtk.layout_manager.LayoutManager], [gtk.widget.Widget] supports a custom <layout> element, used to define layout properties:
<object class="GtkGrid" id="my_grid">
<child>
<object class="GtkLabel" id="label1">
<property name="label">Description</property>
<layout>
<property name="column">0</property>
<property name="row">0</property>
<property name="row-span">1</property>
<property name="column-span">1</property>
</layout>
</object>
</child>
<child>
<object class="GtkEntry" id="description_entry">
<layout>
<property name="column">1</property>
<property name="row">0</property>
<property name="row-span">1</property>
<property name="column-span">1</property>
</layout>
</object>
</child>
</object>[gtk.widget.Widget] 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>[gtk.widget.Widget] allows defining accessibility information, such as properties, relations, and states, using the custom <accessibility> element:
<object class="GtkButton" id="button1">
<accessibility>
<property name="label">Download</property>
<relation name="labelled-by">label1</relation>
</accessibility>
</object>Building composite widgets from template XML
GtkWidget exposes some facilities to automate the procedure of creating composite widgets using "templates".
To create composite widgets with [gtk.builder.Builder] XML, one must associate the interface description with the widget class at class initialization time using [gtk.widget_class.WidgetClass.setTemplate].
The interface description semantics expected in composite template descriptions is slightly different from regular [gtk.builder.Builder] XML.
Unlike regular interface descriptions, [gtk.widget_class.WidgetClass.setTemplate] 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 [gtk.builder.Builder] but can be used by UI design tools 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 the widget itself. You may set properties on a widget by inserting <property> tags into the <template> tag, and also add <child> tags to add children and extend a 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.
Since, unlike the <object> tag, the <template> tag does not contain an “id” attribute, if you need to refer to the instance of the object itself that the template will create, simply refer to the template class name in an applicable element content.
Here is an example of a template definition, which includes an example of this in the <signal> tag:
<interface>
<template class="FooWidget" parent="GtkBox">
<property name="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 [gio.resource.Resource]. In order to load the template, you need to call [gtk.widget_class.WidgetClass.setTemplateFromResource] from the class initialization of your [gtk.widget.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 [gtk.widget.Widget.initTemplate] from the instance initialization function:
static void
foo_widget_init (FooWidget *self)
{
gtk_widget_init_template (GTK_WIDGET (self));
// Initialize the rest of the widget...
}as well as calling [gtk.widget.Widget.disposeTemplate] from the dispose function:
static void
foo_widget_dispose (GObject *gobject)
{
FooWidget *self = FOO_WIDGET (gobject);
// Dispose objects for which you have a reference...
// Clear the template children for this widget type
gtk_widget_dispose_template (GTK_WIDGET (self), FOO_TYPE_WIDGET);
G_OBJECT_CLASS (foo_widget_parent_class)->dispose (gobject);
}You can access widgets defined in the template using the [gtk.widget.Widget.getTemplateChild] 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.WidgetClass.bindTemplateChildFull] (or one of its wrapper macros func@Gtk.widget_class_bind_template_child and func@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_dispose (GObject *gobject)
{
gtk_widget_dispose_template (GTK_WIDGET (gobject), FOO_TYPE_WIDGET);
G_OBJECT_CLASS (foo_widget_parent_class)->dispose (gobject);
}
static void
foo_widget_class_init (FooWidgetClass *klass)
{
// ...
G_OBJECT_CLASS (klass)->dispose = foo_widget_dispose;
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)
{
gtk_widget_init_template (GTK_WIDGET (widget));
}You can also use [gtk.widget_class.WidgetClass.bindTemplateCallbackFull] (or is wrapper macro func@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);
}Widget self()Returns `this`, for use in `with` statements.WidgetGidBuilder builder()Get builder for [gtk.widget.Widget] Returns: New builder objectbool canFocus() @propertyGet `canFocus` property. Returns: Whether the widget or any of its descendents can accept the input focus.void canFocus(bool propval) @propertySet `canFocus` property. Params: propval = Whether the widget or any of its descendents can accept the input focus.bool canTarget() @propertyGet `canTarget` property. Returns: Whether the widget can receive pointer events.void canTarget(bool propval) @propertySet `canTarget` property. Params: propval = Whether the widget can receive pointer events.void cursor(gdk.cursor.Cursor propval) @propertySet `cursor` property. Params: propval = The cursor used by @widget.bool focusOnClick() @propertyGet `focusOnClick` property. Returns: Whether the widget should grab focus when it is clicked with the mouse.void focusOnClick(bool propval) @propertySet `focusOnClick` property. Params: propval = Whether the widget should grab focus when it is clicked with the mouse.bool focusable() @propertyGet `focusable` property. Returns: Whether this widget itself will accept the input focus.void focusable(bool propval) @propertySet `focusable` property. Params: propval = Whether this widget itself will accept the input focus.gtk.types.Align halign() @propertyGet `halign` property. Returns: How to distribute horizontal space if widget gets extra space.void halign(gtk.types.Align propval) @propertySet `halign` property. Params: propval = How to distribute horizontal space if widget gets extra space.bool hasTooltip() @propertyGet `hasTooltip` property. Returns: Enables or disables the emission of the ::query-tooltip signal on @widget.void hasTooltip(bool propval) @propertySet `hasTooltip` property. Params: propval = Enables or disables the emission of the ::query-tooltip signal on @widget.int heightRequest() @propertyGet `heightRequest` property. Returns: Override for height request of the widget.void heightRequest(int propval) @propertySet `heightRequest` property. Params: propval = Override for height request of the widget.void hexpand(bool propval) @propertySet `hexpand` property. Params: propval = Whether to expand horizontally.bool hexpandSet() @propertyGet `hexpandSet` property. Returns: Whether to use the `hexpand` property.void hexpandSet(bool propval) @propertySet `hexpandSet` property. Params: propval = Whether to use the `hexpand` property.gtk.layout_manager.LayoutManager layoutManager() @propertyGet `layoutManager` property. Returns: The [gtk.layout_manager.LayoutManager] instance to use to compute the preferred size of the widget, and allocate its children.void layoutManager(gtk.layout_manager.LayoutManager propval) @propertySet `layoutManager` property. Params: propval = The [gtk.layout_manager.LayoutManager] instance to use to compute the preferred size of the widget, and allocate its children.void marginBottom(int propval) @propertySet `marginBottom` property. Params: propval = Margin on bottom side of widget.void marginEnd(int propval) @propertySet `marginEnd` property. Params: propval = Margin on end of widget, horizontally.int marginStart() @propertyGet `marginStart` property. Returns: Margin on start of widget, horizontally.void marginStart(int propval) @propertySet `marginStart` property. Params: propval = Margin on start of widget, horizontally.void marginTop(int propval) @propertySet `marginTop` property. Params: propval = Margin on top side of widget.void opacity(double propval) @propertySet `opacity` property. Params: propval = The requested opacity of the widget.gtk.types.Overflow overflow() @propertyGet `overflow` property. Returns: How content outside the widget's content area is treated.void overflow(gtk.types.Overflow propval) @propertySet `overflow` property. Params: propval = How content outside the widget's content area is treated.gtk.widget.Widget parent() @propertyGet `parent` property. Returns: The parent widget of this widget.bool receivesDefault() @propertyGet `receivesDefault` property. Returns: Whether the widget will receive the default action when it is focused.void receivesDefault(bool propval) @propertySet `receivesDefault` property. Params: propval = Whether the widget will receive the default action when it is focused.gtk.root.Root root() @propertyGet `root` property. Returns: The [gtk.root.Root] widget of the widget tree containing this widget.void sensitive(bool propval) @propertySet `sensitive` property. Params: propval = Whether the widget responds to input.string tooltipMarkup() @propertyGet `tooltipMarkup` property. Returns: Sets the text of tooltip to be the given string, which is marked up with Pango markup.void tooltipMarkup(string propval) @propertySet `tooltipMarkup` property. Params: propval = Sets the text of tooltip to be the given string, which is marked up with Pango markup.string tooltipText() @propertyGet `tooltipText` property. Returns: Sets the text of tooltip to be the given string.void tooltipText(string propval) @propertySet `tooltipText` property. Params: propval = Sets the text of tooltip to be the given string.gtk.types.Align valign() @propertyGet `valign` property. Returns: How to distribute vertical space if widget gets extra space.void valign(gtk.types.Align propval) @propertySet `valign` property. Params: propval = How to distribute vertical space if widget gets extra space.void vexpand(bool propval) @propertySet `vexpand` property. Params: propval = Whether to expand vertically.bool vexpandSet() @propertyGet `vexpandSet` property. Returns: Whether to use the `vexpand` property.void vexpandSet(bool propval) @propertySet `vexpandSet` property. Params: propval = Whether to use the `vexpand` property.void visible(bool propval) @propertySet `visible` property. Params: propval = Whether the widget is visible.int widthRequest() @propertyGet `widthRequest` property. Returns: Override for width request of the widget.void widthRequest(int propval) @propertySet `widthRequest` property. Params: propval = Override for width request of the widget.void margin(int propval) @propertyConvenience property to set `marginStart`, `marginEnd`, `marginTop`, and `marginBottom`. Params: propval = Margin for all 4 sides of the widget.gtk.types.TextDirection getDefaultDirection()Obtains the current default reading direction.void setDefaultDirection(gtk.types.TextDirection dir)Sets the default reading direction for widgets.void actionSetEnabled(string actionName, bool enabled)Enable or disable an action installed with [gtk.widget_class.WidgetClass.installAction].bool activate()For widgets that can be “activated” (buttons, menu items, etc.), this function activates them.bool activateAction(string name, glib.variant.Variant args = null)Looks up the action in the action groups associated with widget and its ancestors, and activates it.void activateDefault()Activates the `default.activate` action from widget.void addController(gtk.event_controller.EventController controller)Adds controller to widget so that it will receive events.void addCssClass(string cssClass)Adds a style class to widget.void addMnemonicLabel(gtk.widget.Widget label)Adds a widget to the list of mnemonic labels for this widget.uint addTickCallback(gtk.types.TickCallback callback)Queues an animation frame update and adds a callback to be called before each frame.void allocate(int width, int height, int baseline, gsk.transform.Transform transform = null)This function is only used by [gtk.widget.Widget] subclasses, to assign a size, position and (optionally) baseline to their child widgets.bool childFocus(gtk.types.DirectionType direction)Called by widgets as the user moves around the window using keyboard shortcuts.bool computeBounds(gtk.widget.Widget target, out graphene.rect.Rect outBounds)Computes the bounds for widget in the coordinate space of target.bool computeExpand(gtk.types.Orientation orientation)Computes whether a container should give this widget extra space when possible.bool computePoint(gtk.widget.Widget target, graphene.point.Point point, out graphene.point.Point outPoint)Translates the given point in widget's coordinates to coordinates relative to target’s coordinate system.bool computeTransform(gtk.widget.Widget target, out graphene.matrix.Matrix outTransform)Computes a matrix suitable to describe a transformation from widget's coordinate system into target's coordinate system.bool contains(double x, double y)Tests if the point at (`x`, `y`) is contained in widget.pango.context.Context createPangoContext()Creates a new [pango.context.Context] with the appropriate font map, font options, font description, and base direction for drawing text for this widget.pango.layout.Layout createPangoLayout(string text = null)Creates a new [pango.layout.Layout] with the appropriate font map, font description, and base direction for drawing text for this widget.void disposeTemplate(gobject.types.GType widgetType)Clears the template children for the given widget.bool dragCheckThreshold(int startX, int startY, int currentX, int currentY)Checks to see if a drag movement has passed the GTK drag threshold.void errorBell()Notifies the user about an input-related error on this widget.int getAllocatedBaseline()Returns the baseline that has currently been allocated to widget.int getAllocatedHeight()Returns the height that has currently been allocated to widget.int getAllocatedWidth()Returns the width that has currently been allocated to widget.void getAllocation(out gtk.types.Allocation allocation)Retrieves the widget’s allocation.gtk.widget.Widget getAncestor(gobject.types.GType widgetType)Gets the first ancestor of widget with type widget_type.int getBaseline()Returns the baseline that has currently been allocated to widget.bool getCanFocus()Determines whether the input focus can enter widget or any of its children.bool getCanTarget()Queries whether widget can be the target of pointer events. Returns: true if widget can receive pointer eventsbool getChildVisible()Gets the value set with [gtk.widget.Widget.setChildVisible].gdk.clipboard.Clipboard getClipboard()Gets the clipboard object for widget.void getColor(out gdk.rgba.RGBA color)Gets the current foreground color for the widget’s CSS style.string[] getCssClasses()Returns the list of style classes applied to widget. Returns: a null-terminated list of css classes currently applied to widget. The returned list must freed using [glib.global.strfreev].string getCssName()Returns the CSS name that is used for self. Returns: the CSS namegdk.cursor.Cursor getCursor()Queries the cursor set on widget.gtk.types.TextDirection getDirection()Gets the reading direction for a particular widget.gdk.display.Display getDisplay()Get the [gdk.display.Display] for the toplevel window associated with this widget.gtk.widget.Widget getFirstChild()Returns the widget’s first child.gtk.widget.Widget getFocusChild()Returns the current focus child of widget. Returns: The current focus child of widgetbool getFocusOnClick()Returns whether the widget should grab focus when it is clicked with the mouse.bool getFocusable()Determines whether widget can own the input focus.pango.font_map.FontMap getFontMap()Gets the font map of widget.cairo.font_options.FontOptions getFontOptions()Returns the [cairo.font_options.FontOptions] of widget.gdk.frame_clock.FrameClock getFrameClock()Obtains the frame clock for a widget.gtk.types.Align getHalign()Gets the horizontal alignment of widget.bool getHasTooltip()Returns the current value of the `has-tooltip` property. Returns: current value of `has-tooltip` on widget.int getHeight()Returns the content height of the widget.bool getHexpand()Gets whether the widget would like any available extra horizontal space.bool getHexpandSet()Gets whether [gtk.widget.Widget.setHexpand] has been used to explicitly set the expand flag on this widget.gtk.widget.Widget getLastChild()Returns the widget’s last child.gtk.layout_manager.LayoutManager getLayoutManager()Retrieves the layout manager used by widget.bool getMapped()Whether the widget is mapped. Returns: true if the widget is mapped, false otherwise.int getMarginBottom()Gets the bottom margin of widget. Returns: The bottom margin of widgetint getMarginEnd()Gets the end margin of widget. Returns: The end margin of widgetint getMarginStart()Gets the start margin of widget. Returns: The start margin of widgetint getMarginTop()Gets the top margin of widget. Returns: The top margin of widgetstring getName()Retrieves the name of a widget.gtk.native.Native getNative()Returns the nearest [gtk.native.Native] ancestor of widget.gtk.widget.Widget getNextSibling()Returns the widget’s next sibling.double getOpacity()#Fetches the requested opacity for this widget.gtk.types.Overflow getOverflow()Returns the widget’s overflow value. Returns: The widget's overflow.pango.context.Context getPangoContext()Gets a [pango.context.Context] with the appropriate font map, font description, and base direction for this widget.gtk.widget.Widget getParent()Returns the parent widget of widget. Returns: the parent widget of widgetvoid getPreferredSize(out gtk.requisition.Requisition minimumSize, out gtk.requisition.Requisition naturalSize)Retrieves the minimum and natural size of a widget, taking into account the widget’s preference for height-for-width management.gtk.widget.Widget getPrevSibling()Returns the widget’s previous sibling.gdk.clipboard.Clipboard getPrimaryClipboard()Gets the primary clipboard of widget.bool getRealized()Determines whether widget is realized. Returns: true if widget is realized, false otherwisebool getReceivesDefault()Determines whether widget is always treated as the default widget within its toplevel when it has the focus, even if another widget is the default.gtk.types.SizeRequestMode getRequestMode()Gets whether the widget prefers a height-for-width layout or a width-for-height layout.gtk.root.Root getRoot()Returns the [gtk.root.Root] widget of widget.int getScaleFactor()Retrieves the internal scale factor that maps from window coordinates to the actual device pixels.bool getSensitive()Returns the widget’s sensitivity.gtk.settings.Settings getSettings()Gets the settings object holding the settings used for this widget.int getSize(gtk.types.Orientation orientation)Returns the content width or height of the widget.void getSizeRequest(out int width, out int height)Gets the size request that was explicitly set for the widget using [gtk.widget.Widget.setSizeRequest].gtk.types.StateFlags getStateFlags()Returns the widget state as a flag set.gtk.style_context.StyleContext getStyleContext()Returns the style context associated to widget.gobject.object.ObjectWrap getTemplateChild(gobject.types.GType widgetType, string name)Fetch an object build from the template XML for widget_type in this widget instance.string getTooltipMarkup()Gets the contents of the tooltip for widget.string getTooltipText()Gets the contents of the tooltip for widget.gtk.types.Align getValign()Gets the vertical alignment of widget. Returns: the vertical alignment of widgetbool getVexpand()Gets whether the widget would like any available extra vertical space.bool getVexpandSet()Gets whether [gtk.widget.Widget.setVexpand] has been used to explicitly set the expand flag on this widget.bool getVisible()Determines whether the widget is visible.int getWidth()Returns the content width of the widget.bool grabFocus()Causes widget to have the keyboard focus for the [gtk.window.Window] it's inside.bool hasCssClass(string cssClass)Returns whether css_class is currently applied to widget.bool hasDefault()Determines whether widget is the current default widget within its toplevel. Returns: true if widget is the current default widget within its toplevel, false otherwisebool hasFocus()Determines if the widget has the global input focus.bool hasVisibleFocus()Determines if the widget should show a visible indication that it has the global input focus.void hide()Reverses the effects of [gtk.widget.Widget.show].bool inDestruction()Returns whether the widget is currently being destroyed.void initTemplate()Creates and initializes child widgets defined in templates.void insertActionGroup(string name, gio.action_group.ActionGroup group = null)Inserts group into widget.void insertAfter(gtk.widget.Widget parent, gtk.widget.Widget previousSibling = null)Inserts widget into the child widget list of parent.void insertBefore(gtk.widget.Widget parent, gtk.widget.Widget nextSibling = null)Inserts widget into the child widget list of parent.bool isAncestor(gtk.widget.Widget ancestor)Determines whether widget is somewhere inside ancestor, possibly with intermediate containers.bool isDrawable()Determines whether widget can be drawn to.bool isFocus()Determines if the widget is the focus widget within its toplevel.bool isSensitive()Returns the widget’s effective sensitivity.bool isVisible()Determines whether the widget and all its parents are marked as visible.bool keynavFailed(gtk.types.DirectionType direction)Emits the `::keynav-failed` signal on the widget.gtk.widget.Widget[] listMnemonicLabels()Returns the widgets for which this widget is the target of a mnemonic.void map()Causes a widget to be mapped if it isn’t already.void measure(gtk.types.Orientation orientation, int forSize, out int minimum, out int natural, out int minimumBaseline, out int naturalBaseline)Measures widget in the orientation orientation and for the given for_size.bool mnemonicActivate(bool groupCycling)Emits the ::mnemonic-activate signal.gio.list_model.ListModel observeChildren()Returns a [gio.list_model.ListModel] to track the children of widget.gio.list_model.ListModel observeControllers()Returns a [gio.listmodel.ListModel] to track the [gtk.eventcontroller.EventController]s of widget.gtk.widget.Widget pick(double x, double y, gtk.types.PickFlags flags)Finds the descendant of widget closest to the point (`x`, `y`).void queueAllocate()Flags the widget for a rerun of the `vfuncGtk.Widget.size_allocate` function.void queueDraw()Schedules this widget to be redrawn in the paint phase of the current or the next frame.void queueResize()Flags a widget to have its size renegotiated.void realize()Creates the GDK resources associated with a widget.void removeController(gtk.event_controller.EventController controller)Removes controller from widget, so that it doesn't process events anymore.void removeCssClass(string cssClass)Removes a style from widget.void removeMnemonicLabel(gtk.widget.Widget label)Removes a widget from the list of mnemonic labels for this widget.void removeTickCallback(uint id)Removes a tick callback previously registered with [gtk.widget.Widget.addTickCallback].void setCanFocus(bool canFocus)Specifies whether the input focus can enter the widget or any of its children.void setCanTarget(bool canTarget)Sets whether widget can be the target of pointer events.void setChildVisible(bool childVisible)Sets whether widget should be mapped along with its parent.void setCssClasses(string[] classes)Clear all style classes applied to widget and replace them with classes.void setCursor(gdk.cursor.Cursor cursor = null)Sets the cursor to be shown when pointer devices point towards widget.void setCursorFromName(string name = null)Sets a named cursor to be shown when pointer devices point towards widget.void setDirection(gtk.types.TextDirection dir)Sets the reading direction on a particular widget.void setFocusChild(gtk.widget.Widget child = null)Set child as the current focus child of widget.void setFocusOnClick(bool focusOnClick)Sets whether the widget should grab focus when it is clicked with the mouse.void setFocusable(bool focusable)Specifies whether widget can own the input focus.void setFontMap(pango.font_map.FontMap fontMap = null)Sets the font map to use for Pango rendering.void setFontOptions(cairo.font_options.FontOptions options = null)Sets the [cairo.font_options.FontOptions] used for Pango rendering in this widget.void setHalign(gtk.types.Align align_)Sets the horizontal alignment of widget.void setHasTooltip(bool hasTooltip)Sets the `has-tooltip` property on widget to has_tooltip.void setHexpand(bool expand)Sets whether the widget would like any available extra horizontal space.void setHexpandSet(bool set)Sets whether the hexpand flag will be used.void setLayoutManager(gtk.layout_manager.LayoutManager layoutManager = null)Sets the layout manager delegate instance that provides an implementation for measuring and allocating the children of widget.void setMarginBottom(int margin)Sets the bottom margin of widget.void setMarginEnd(int margin)Sets the end margin of widget.void setMarginStart(int margin)Sets the start margin of widget.void setMarginTop(int margin)Sets the top margin of widget.void setName(string name)Sets a widgets name.void setOpacity(double opacity)Request the widget to be rendered partially transparent.void setOverflow(gtk.types.Overflow overflow)Sets how widget treats content that is drawn outside the widget's content area.void setParent(gtk.widget.Widget parent)Sets parent as the parent widget of widget.void setReceivesDefault(bool receivesDefault)Specifies whether widget will be treated as the default widget within its toplevel when it has the focus, even if another widget is the default.void setSensitive(bool sensitive)Sets the sensitivity of a widget.void setSizeRequest(int width, int height)Sets the minimum size of a widget.void setStateFlags(gtk.types.StateFlags flags, bool clear)Turns on flag values in the current widget state.void setTooltipMarkup(string markup = null)Sets markup as the contents of the tooltip, which is marked up with Pango markup.void setTooltipText(string text = null)Sets text as the contents of the tooltip.void setValign(gtk.types.Align align_)Sets the vertical alignment of widget.void setVexpand(bool expand)Sets whether the widget would like any available extra vertical space.void setVexpandSet(bool set)Sets whether the vexpand flag will be used.void setVisible(bool visible)Sets the visibility state of widget.bool shouldLayout()Returns whether widget should contribute to the measuring and allocation of its parent.void show()Flags a widget to be displayed.void sizeAllocate(gtk.types.Allocation allocation, int baseline)Allocates widget with a transformation that translates the origin to the position in allocation.void snapshotChild(gtk.widget.Widget child, gtk.snapshot.Snapshot snapshot)Snapshot the a child of widget.bool translateCoordinates(gtk.widget.Widget destWidget, double srcX, double srcY, out double destX, out double destY)Translate coordinates relative to srcwidget’s allocation to coordinates relative to destwidget’s allocations.void triggerTooltipQuery()Triggers a tooltip query on the display where the toplevel of widget is located.void unmap()Causes a widget to be unmapped if it’s currently mapped.void unparent()Dissociate widget from its parent.void unrealize()Causes a widget to be unrealized (frees all GDK resources associated with the widget).void unsetStateFlags(gtk.types.StateFlags flags)Turns off flag values for the current widget state.gulong connectDestroy(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtk.widget.Widget)))
&& Parameters!T.length < 2)Connect to `Destroy` signal.gulong connectDirectionChanged(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == gtk.types.TextDirection)))
&& (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] : gtk.widget.Widget)))
&& Parameters!T.length < 3)Connect to `DirectionChanged` signal.gulong connectHide(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtk.widget.Widget)))
&& Parameters!T.length < 2)Connect to `Hide` signal.gulong connectKeynavFailed(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == bool)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == gtk.types.DirectionType)))
&& (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] : gtk.widget.Widget)))
&& Parameters!T.length < 3)Connect to `KeynavFailed` signal.gulong connectMap(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtk.widget.Widget)))
&& Parameters!T.length < 2)Connect to `Map` signal.gulong connectMnemonicActivate(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == bool)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == bool)))
&& (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] : gtk.widget.Widget)))
&& Parameters!T.length < 3)Connect to `MnemonicActivate` signal.gulong connectMoveFocus(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == gtk.types.DirectionType)))
&& (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] : gtk.widget.Widget)))
&& Parameters!T.length < 3)Connect to `MoveFocus` signal.gulong connectQueryTooltip(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == bool)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == int)))
&& (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] == int)))
&& (Parameters!T.length < 3 || (ParameterStorageClassTuple!T[2] == ParameterStorageClass.none && is(Parameters!T[2] == bool)))
&& (Parameters!T.length < 4 || (ParameterStorageClassTuple!T[3] == ParameterStorageClass.none && is(Parameters!T[3] : gtk.tooltip.Tooltip)))
&& (Parameters!T.length < 5 || (ParameterStorageClassTuple!T[4] == ParameterStorageClass.none && is(Parameters!T[4] : gtk.widget.Widget)))
&& Parameters!T.length < 6)Connect to `QueryTooltip` signal.gulong connectRealize(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtk.widget.Widget)))
&& Parameters!T.length < 2)Connect to `Realize` signal.gulong connectShow(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtk.widget.Widget)))
&& Parameters!T.length < 2)Connect to `Show` signal.gulong connectStateFlagsChanged(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] == gtk.types.StateFlags)))
&& (Parameters!T.length < 2 || (ParameterStorageClassTuple!T[1] == ParameterStorageClass.none && is(Parameters!T[1] : gtk.widget.Widget)))
&& Parameters!T.length < 3)Connect to `StateFlagsChanged` signal.gulong connectUnmap(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtk.widget.Widget)))
&& Parameters!T.length < 2)Connect to `Unmap` signal.gulong connectUnrealize(T)(T callback, Flag!"After" after = No.After) if (isCallable!T
&& is(ReturnType!T == void)
&& (Parameters!T.length < 1 || (ParameterStorageClassTuple!T[0] == ParameterStorageClass.none && is(Parameters!T[0] : gtk.widget.Widget)))
&& Parameters!T.length < 2)Connect to `Unrealize` signal.T margin(int propval)Convenience property to set `marginStart`, `marginEnd`, `marginTop`, and `marginBottom`. Params: propval = Margin for all 4 sides of the widget.T canFocus(bool propval)Set `canFocus` property. Params: propval = Whether the widget or any of its descendents can accept the input focus.T canTarget(bool propval)Set `canTarget` property. Params: propval = Whether the widget can receive pointer events. Returns: Builder instance for fluent chainingT cssName(string propval)Set `cssName` property. Params: propval = The name of this widget in the CSS tree.T cursor(gdk.cursor.Cursor propval)Set `cursor` property. Params: propval = The cursor used by @widget. Returns: Builder instance for fluent chainingT focusOnClick(bool propval)Set `focusOnClick` property. Params: propval = Whether the widget should grab focus when it is clicked with the mouse.T focusable(bool propval)Set `focusable` property. Params: propval = Whether this widget itself will accept the input focus. Returns: Builder instance for fluent chainingT halign(gtk.types.Align propval)Set `halign` property. Params: propval = How to distribute horizontal space if widget gets extra space. Returns: Builder instance for fluent chainingT hasTooltip(bool propval)Set `hasTooltip` property. Params: propval = Enables or disables the emission of the ::query-tooltip signal on @widget.T heightRequest(int propval)Set `heightRequest` property. Params: propval = Override for height request of the widget.T hexpand(bool propval)Set `hexpand` property. Params: propval = Whether to expand horizontally. Returns: Builder instance for fluent chainingT hexpandSet(bool propval)Set `hexpandSet` property. Params: propval = Whether to use the `hexpand` property. Returns: Builder instance for fluent chainingT layoutManager(gtk.layout_manager.LayoutManager propval)Set `layoutManager` property. Params: propval = The [gtk.layout_manager.LayoutManager] instance to use to compute the preferred size of the widget, and allocate its children.T marginBottom(int propval)Set `marginBottom` property. Params: propval = Margin on bottom side of widget.T marginEnd(int propval)Set `marginEnd` property. Params: propval = Margin on end of widget, horizontally.T marginStart(int propval)Set `marginStart` property. Params: propval = Margin on start of widget, horizontally.T marginTop(int propval)Set `marginTop` property. Params: propval = Margin on top side of widget.T name(string propval)Set `name` property. Params: propval = The name of the widget. Returns: Builder instance for fluent chainingT opacity(double propval)Set `opacity` property. Params: propval = The requested opacity of the widget. Returns: Builder instance for fluent chainingT overflow(gtk.types.Overflow propval)Set `overflow` property. Params: propval = How content outside the widget's content area is treated.T receivesDefault(bool propval)Set `receivesDefault` property. Params: propval = Whether the widget will receive the default action when it is focused. Returns: Builder instance for fluent chainingT sensitive(bool propval)Set `sensitive` property. Params: propval = Whether the widget responds to input. Returns: Builder instance for fluent chainingT tooltipMarkup(string propval)Set `tooltipMarkup` property. Params: propval = Sets the text of tooltip to be the given string, which is marked up with Pango markup.T tooltipText(string propval)Set `tooltipText` property. Params: propval = Sets the text of tooltip to be the given string.T valign(gtk.types.Align propval)Set `valign` property. Params: propval = How to distribute vertical space if widget gets extra space. Returns: Builder instance for fluent chainingT vexpand(bool propval)Set `vexpand` property. Params: propval = Whether to expand vertically. Returns: Builder instance for fluent chainingT vexpandSet(bool propval)Set `vexpandSet` property. Params: propval = Whether to use the `vexpand` property. Returns: Builder instance for fluent chainingT visible(bool propval)Set `visible` property. Params: propval = Whether the widget is visible. Returns: Builder instance for fluent chainingT widthRequest(int propval)Set `widthRequest` property. Params: propval = Override for width request of the widget.Fluent builder for [gtk.widget.Widget]
Widget build()