class Adw::Breakpoint
- Adw::Breakpoint
- GObject::Object
- Reference
- Object
Overview
Describes a breakpoint for #Window
or #Dialog
.
Breakpoints are used to create adaptive UI, allowing to change the layout depending on available size.
Breakpoint is a size threshold, specified by its condition, as well as one or more setters.
Each setter has a target object, a property and a value. When a breakpoint is applied, each setter sets the target property on their target object to the specified value, and reset it back to the original value when it's unapplied.
For more complicated scenarios, Breakpoint::#apply
and
Breakpoint::#unapply
can be used instead.
Breakpoints can be used within #Window
, #ApplicationWindow
,
#Dialog
or #BreakpointBin
.
Adw::Breakpoint
as Gtk::Buildable
:
Adw::Breakpoint
supports specifying its condition via the <condition>
element. The contents of the element must be a string in a format accepted by
BreakpointCondition::parse
.
It also supports adding setters via the <setter>
element. Each <setter>
element must have the object
attribute specifying the target object, and
the property
attribute specifying the property name. The contents of the
element are used as the setter value.
For G_TYPE_OBJECT
and G_TYPE_BOXED
derived properties, empty contents are
treated as NULL
.
Setter values can be translated with the usual translatable
, context
and
comments
attributes.
Example of an Adw::Breakpoint
UI definition:
WARNING ⚠️ The following code is in xml ⚠️
<object class="Adw::Breakpoint">
<condition>max-width: 400px</condition>
<setter object="button" property="visible">True</setter>
<setter object="box" property="orientation">vertical</setter>
<setter object="page" property="title" translatable="yes">Example</setter>
</object>
Included Modules
Defined in:
lib/gi-crystal/src/auto/adw-1/breakpoint.crConstructors
-
.new(condition : Adw::BreakpointCondition) : self
Creates a new
Adw::Breakpoint
with condition. -
.new
Initialize a new
Breakpoint
. - .new(*, condition : Adw::BreakpointCondition | Nil = nil)
Class Method Summary
-
.g_type : UInt64
Returns the type id (GType) registered in GLib type system.
Instance Method Summary
-
#==(other : self)
Returns
true
if this reference is the same as other. -
#add_setter(object : GObject::Object, property : String, value : _ | Nil) : Nil
Adds a setter to self.
-
#add_setters(objects : Enumerable(GObject::Object), names : Enumerable(String), values : Enumerable(_)) : Nil
Adds multiple setters to self.
- #apply_signal
-
#condition : Adw::BreakpointCondition | Nil
Gets the condition for self.
-
#condition=(condition : Adw::BreakpointCondition | Nil) : Nil
Sets the condition for self.
-
#hash(hasher)
See
Object#hash(hasher)
- #unapply_signal
Instance methods inherited from module Gtk::Buildable
buildable_id : String | Nil
buildable_id,
to_unsafe
to_unsafe
Constructor methods inherited from module Gtk::Buildable
cast(obj : GObject::Object) : self
cast
Class methods inherited from module Gtk::Buildable
cast?(obj : GObject::Object) : self | Nil
cast?,
g_type : UInt64
g_type
Instance methods inherited from class GObject::Object
==(other : self)
==,
bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding
bind_property,
bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding
bind_property_full,
data(key : String) : Pointer(Void) | Nil
data,
finalize
finalize,
freeze_notify : Nil
freeze_notify,
getv(names : Enumerable(String), values : Enumerable(_)) : Nil
getv,
hash(hasher)
hash,
notify(property_name : String) : Nil
notify,
notify_by_pspec(pspec : GObject::ParamSpec) : Nil
notify_by_pspec,
notify_signal
notify_signal,
property(property_name : String, value : _) : Nil
property,
qdata(quark : UInt32) : Pointer(Void) | Nil
qdata,
ref_count : UInt32
ref_count,
run_dispose : Nil
run_dispose,
set_data(key : String, data : Pointer(Void) | Nil) : Nil
set_data,
set_property(property_name : String, value : _) : Nil
set_property,
steal_data(key : String) : Pointer(Void) | Nil
steal_data,
steal_qdata(quark : UInt32) : Pointer(Void) | Nil
steal_qdata,
thaw_notify : Nil
thaw_notify,
to_unsafe : Pointer(Void)
to_unsafe,
watch_closure(closure : GObject::Closure) : Nil
watch_closure
Constructor methods inherited from class GObject::Object
cast(obj : GObject::Object) : self
cast,
new(pointer : Pointer(Void), transfer : GICrystal::Transfer)new new, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv
Class methods inherited from class GObject::Object
cast?(obj : GObject::Object) : self | Nil
cast?,
compat_control(what : UInt64, data : Pointer(Void) | Nil) : UInt64
compat_control,
g_type : UInt64
g_type,
interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec
interface_find_property,
interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec)
interface_list_properties
Macros inherited from class GObject::Object
previous_vfunc(*args)
previous_vfunc,
previous_vfunc!(*args)
previous_vfunc!,
signal(signature)
signal
Constructor Detail
Class Method Detail
Instance Method Detail
Returns true
if this reference is the same as other. Invokes same?
.
Adds a setter to self.
The setter will automatically set property on object to value when applying the breakpoint, and set it back to its original value upon unapplying it.
::: note
Setting properties to their original values does not work for properties
that have irreversible side effects. For example, changing
Gtk::Button#label
while [property@Gtk.Button:icon-name] is set
will reset the icon. However, resetting the label will not set
icon-name
to its original value.
Use the Breakpoint::#apply
and Breakpoint::#unapply
signals
for those properties instead, as follows:
WARNING ⚠️ The following code is in c ⚠️
static void
breakpoint_apply_cb (MyWidget *self)
{
gtk_button_set_icon_name (self->button, "go-previous-symbolic");
}
static void
breakpoint_apply_cb (MyWidget *self)
{
gtk_button_set_label (self->button, _("_Back"));
}
// ...
g_signal_connect_swapped (breakpoint, "apply",
G_CALLBACK (breakpoint_apply_cb), self);
g_signal_connect_swapped (breakpoint, "unapply",
G_CALLBACK (breakpoint_unapply_cb), self);
Adds multiple setters to self.
See Breakpoint::add_setter
.
Example:
WARNING ⚠️ The following code is in c ⚠️
adw_breakpoint_add_setters (breakpoint,
G_OBJECT (box), "orientation", GTK_ORIENTATION_VERTICAL,
G_OBJECT (button), "halign", GTK_ALIGN_FILL,
G_OBJECT (button), "valign", GTK_ALIGN_END,
NULL);