Struct libadwaita::ViewStack

source ·
pub struct ViewStack { /* private fields */ }
Expand description

A view container for ViewSwitcher.

ViewStack is a container which only shows one page at a time. It is typically used to hold an application’s main views.

It doesn’t provide a way to transition between pages. Instead, a separate widget such as ViewSwitcher can be used with ViewStack to provide this functionality.

ViewStack pages can have a title, an icon, an attention request, and a numbered badge that ViewSwitcher will use to let users identify which page is which. Set them using the title, icon-name, needs-attention, and badge-number properties.

Unlike gtk::Stack, transitions between views are not animated.

ViewStack maintains a ViewStackPage object for each added child, which holds additional per-child properties. You obtain the ViewStackPage for a child with page() and you can obtain a gtk::SelectionModel containing all the pages with pages().

§AdwViewStack as GtkBuildable

To set child-specific properties in a .ui file, create ViewStackPage objects explicitly, and set the child widget as a property on it:

  <object class="AdwViewStack" id="stack">
    <child>
      <object class="AdwViewStackPage">
        <property name="name">overview</property>
        <property name="title">Overview</property>
        <property name="child">
          <object class="AdwStatusPage">
            <property name="title">Welcome!</property>
          </object>
        </property>
      </object>
    </child>
  </object>

§CSS nodes

ViewStack has a single CSS node named stack.

§Accessibility

ViewStack uses the GTK_ACCESSIBLE_ROLE_TAB_PANEL for the stack pages which are the accessible parent objects of the child widgets.

§Properties

§hhomogeneous

Whether the stack is horizontally homogeneous.

If the stack is horizontally homogeneous, it allocates the same width for all children.

If it’s FALSE, the stack may change width when a different child becomes visible.

Readable | Writeable

§pages

A selection model with the stack’s pages.

This can be used to keep an up-to-date view. The model also implements gtk::SelectionModel and can be used to track and change the visible page.

Readable

§vhomogeneous

Whether the stack is vertically homogeneous.

If the stack is vertically homogeneous, it allocates the same height for all children.

If it’s FALSE, the stack may change height when a different child becomes visible.

Readable | Writeable

§visible-child

The widget currently visible in the stack.

Readable | Writeable

§visible-child-name

The name of the widget currently visible in the stack.

See visible-child.

Readable | Writeable

Widget

§can-focus

Whether the widget or any of its descendents can accept the input focus.

This property is meant to be set by widget implementations, typically in their instance init function.

Readable | Writeable

§can-target

Whether the widget can receive pointer events.

Readable | Writeable

§css-classes

A list of css classes applied to this widget.

Readable | Writeable

§css-name

The name of this widget in the CSS tree.

This property is meant to be set by widget implementations, typically in their instance init function.

Readable | Writeable | Construct Only

§cursor

The cursor used by @widget.

Readable | Writeable

§focus-on-click

Whether the widget should grab focus when it is clicked with the mouse.

This property is only relevant for widgets that can take focus.

Readable | Writeable

§focusable

Whether this widget itself will accept the input focus.

Readable | Writeable

§halign

How to distribute horizontal space if widget gets extra space.

Readable | Writeable

§has-default

Whether the widget is the default widget.

Readable

§has-focus

Whether the widget has the input focus.

Readable

§has-tooltip

Enables or disables the emission of the ::query-tooltip signal on @widget.

A value of true indicates that @widget can have a tooltip, in this case the widget will be queried using query-tooltip to determine whether it will provide a tooltip or not.

Readable | Writeable

§height-request

Override for height request of the widget.

If this is -1, the natural request will be used.

Readable | Writeable

§hexpand

Whether to expand horizontally.

Readable | Writeable

§hexpand-set

Whether to use the hexpand property.

Readable | Writeable

§layout-manager

The gtk::LayoutManager instance to use to compute the preferred size of the widget, and allocate its children.

This property is meant to be set by widget implementations, typically in their instance init function.

Readable | Writeable

§margin-bottom

Margin on bottom side of widget.

This property adds margin outside of the widget’s normal size request, the margin will be added in addition to the size from [WidgetExtManual::set_size_request()][crate::gtk::prelude::WidgetExtManual::set_size_request()] for example.

Readable | Writeable

§margin-end

Margin on end of widget, horizontally.

This property supports left-to-right and right-to-left text directions.

This property adds margin outside of the widget’s normal size request, the margin will be added in addition to the size from [WidgetExtManual::set_size_request()][crate::gtk::prelude::WidgetExtManual::set_size_request()] for example.

Readable | Writeable

§margin-start

Margin on start of widget, horizontally.

This property supports left-to-right and right-to-left text directions.

This property adds margin outside of the widget’s normal size request, the margin will be added in addition to the size from [WidgetExtManual::set_size_request()][crate::gtk::prelude::WidgetExtManual::set_size_request()] for example.

Readable | Writeable

§margin-top

Margin on top side of widget.

This property adds margin outside of the widget’s normal size request, the margin will be added in addition to the size from [WidgetExtManual::set_size_request()][crate::gtk::prelude::WidgetExtManual::set_size_request()] for example.

Readable | Writeable

§name

The name of the widget.

Readable | Writeable

§opacity

The requested opacity of the widget.

Readable | Writeable

§overflow

How content outside the widget’s content area is treated.

This property is meant to be set by widget implementations, typically in their instance init function.

Readable | Writeable

§parent

The parent widget of this widget.

Readable

§receives-default

Whether the widget will receive the default action when it is focused.

Readable | Writeable

§root

The gtk::Root widget of the widget tree containing this widget.

This will be None if the widget is not contained in a root widget.

Readable

§scale-factor

The scale factor of the widget.

Readable

§sensitive

Whether the widget responds to input.

Readable | Writeable

§tooltip-markup

Sets the text of tooltip to be the given string, which is marked up with Pango markup.

Also see Gtk::Tooltip::set_markup().

This is a convenience property which will take care of getting the tooltip shown if the given string is not None: has-tooltip will automatically be set to true and there will be taken care of query-tooltip in the default signal handler.

Note that if both tooltip-text and tooltip-markup are set, the last one wins.

Readable | Writeable

§tooltip-text

Sets the text of tooltip to be the given string.

Also see Gtk::Tooltip::set_text().

This is a convenience property which will take care of getting the tooltip shown if the given string is not None: has-tooltip will automatically be set to true and there will be taken care of query-tooltip in the default signal handler.

Note that if both tooltip-text and tooltip-markup are set, the last one wins.

Readable | Writeable

§valign

How to distribute vertical space if widget gets extra space.

Readable | Writeable

§vexpand

Whether to expand vertically.

Readable | Writeable

§vexpand-set

Whether to use the vexpand property.

Readable | Writeable

§visible

Whether the widget is visible.

Readable | Writeable

§width-request

Override for width request of the widget.

If this is -1, the natural request will be used.

Readable | Writeable

Accessible

§accessible-role

The accessible role of the given gtk::Accessible implementation.

The accessible role cannot be changed once set.

Readable | Writeable

§Implements

gtk::prelude::WidgetExt, [trait@glib::ObjectExt], gtk::prelude::AccessibleExt, gtk::prelude::BuildableExt, gtk::prelude::ConstraintTargetExt

Implementations§

source§

impl ViewStack

source

pub fn new() -> ViewStack

Creates a new ViewStack.

§Returns

the newly created ViewStack

source

pub fn builder() -> ViewStackBuilder

Creates a new builder-pattern struct instance to construct ViewStack objects.

This method returns an instance of ViewStackBuilder which can be used to create ViewStack objects.

source

pub fn add(&self, child: &impl IsA<Widget>) -> ViewStackPage

Adds a child to @self.

§child

the widget to add

§Returns

the ViewStackPage for @child

source

pub fn add_named( &self, child: &impl IsA<Widget>, name: Option<&str> ) -> ViewStackPage

Adds a child to @self.

The child is identified by the @name.

§child

the widget to add

§name

the name for @child

§Returns

the ViewStackPage for @child

source

pub fn add_titled( &self, child: &impl IsA<Widget>, name: Option<&str>, title: &str ) -> ViewStackPage

Adds a child to @self.

The child is identified by the @name. The @title will be used by ViewSwitcher to represent @child, so it should be short.

§child

the widget to add

§name

the name for @child

§title

a human-readable title for @child

§Returns

the ViewStackPage for @child

source

pub fn add_titled_with_icon( &self, child: &impl IsA<Widget>, name: Option<&str>, title: &str, icon_name: &str ) -> ViewStackPage

Available on crate feature v1_2 only.

Adds a child to @self.

The child is identified by the @name. The @title and @icon_name will be used by ViewSwitcher to represent @child.

§child

the widget to add

§name

the name for @child

§title

a human-readable title for @child

§icon_name

an icon name for @child

§Returns

the ViewStackPage for @child

source

pub fn child_by_name(&self, name: &str) -> Option<Widget>

Finds the child with @name in @self.

§name

the name of the child to find

§Returns

the requested child

source

pub fn is_hhomogeneous(&self) -> bool

Gets whether @self is horizontally homogeneous.

§Returns

whether @self is horizontally homogeneous

source

pub fn page(&self, child: &impl IsA<Widget>) -> ViewStackPage

Gets the ViewStackPage object for @child.

§child

a child of @self

§Returns

the page object for @child

source

pub fn pages(&self) -> SelectionModel

Returns a gio::ListModel that contains the pages of the stack.

This can be used to keep an up-to-date view. The model also implements gtk::SelectionModel and can be used to track and change the visible page.

§Returns

a gtk::SelectionModel for the stack’s children

source

pub fn is_vhomogeneous(&self) -> bool

Gets whether @self is vertically homogeneous.

§Returns

whether @self is vertically homogeneous

source

pub fn visible_child(&self) -> Option<Widget>

Gets the currently visible child of @self, .

§Returns

the visible child

source

pub fn visible_child_name(&self) -> Option<GString>

Returns the name of the currently visible child of @self.

§Returns

the name of the visible child

source

pub fn remove(&self, child: &impl IsA<Widget>)

Removes a child widget from @self.

§child

the child to remove

source

pub fn set_hhomogeneous(&self, hhomogeneous: bool)

Sets @self to be horizontally homogeneous or not.

If the stack is horizontally homogeneous, it allocates the same width for all children.

If it’s FALSE, the stack may change width when a different child becomes visible.

§hhomogeneous

whether to make @self horizontally homogeneous

source

pub fn set_vhomogeneous(&self, vhomogeneous: bool)

Sets @self to be vertically homogeneous or not.

If the stack is vertically homogeneous, it allocates the same height for all children.

If it’s FALSE, the stack may change height when a different child becomes visible.

§vhomogeneous

whether to make @self vertically homogeneous

source

pub fn set_visible_child(&self, child: &impl IsA<Widget>)

Makes @child the visible child of @self.

§child

a child of @self

source

pub fn set_visible_child_name(&self, name: &str)

Makes the child with @name visible.

See visible-child.

§name

the name of the child

source

pub fn connect_hhomogeneous_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_pages_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_vhomogeneous_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_visible_child_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

source

pub fn connect_visible_child_name_notify<F: Fn(&Self) + 'static>( &self, f: F ) -> SignalHandlerId

Trait Implementations§

source§

impl Clone for ViewStack

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ViewStack

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ViewStack

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl HasParamSpec for ViewStack

§

type ParamSpec = ParamSpecObject

§

type SetValue = ViewStack

Preferred value to be used as setter for the associated ParamSpec.
§

type BuilderFn = fn(_: &str) -> ParamSpecObjectBuilder<'_, ViewStack>

source§

fn param_spec_builder() -> Self::BuilderFn

source§

impl Hash for ViewStack

source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for ViewStack

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl ParentClassIs for ViewStack

source§

impl<OT: ObjectType> PartialEq<OT> for ViewStack

source§

fn eq(&self, other: &OT) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<OT: ObjectType> PartialOrd<OT> for ViewStack

source§

fn partial_cmp(&self, other: &OT) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl StaticType for ViewStack

source§

fn static_type() -> Type

Returns the type identifier of Self.
source§

impl Eq for ViewStack

source§

impl IsA<Accessible> for ViewStack

source§

impl IsA<Buildable> for ViewStack

source§

impl IsA<ConstraintTarget> for ViewStack

source§

impl IsA<Widget> for ViewStack

Auto Trait Implementations§

Blanket Implementations§

source§

impl<O> AccessibleExt for O
where O: IsA<Accessible>,

source§

impl<O> AccessibleExtManual for O
where O: IsA<Accessible>,

source§

fn update_property(&self, properties: &[Property<'_>])

source§

fn update_relation(&self, relations: &[Relation<'_>])

source§

fn update_state(&self, states: &[State])

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<O> BuildableExt for O
where O: IsA<Buildable>,

source§

impl<T> Cast for T
where T: ObjectType,

source§

fn upcast<T>(self) -> T
where T: ObjectType, Self: IsA<T>,

Upcasts an object to a superclass or interface T. Read more
source§

fn upcast_ref<T>(&self) -> &T
where T: ObjectType, Self: IsA<T>,

Upcasts an object to a reference of its superclass or interface T. Read more
source§

fn downcast<T>(self) -> Result<T, Self>
where T: ObjectType, Self: MayDowncastTo<T>,

Tries to downcast to a subclass or interface implementor T. Read more
source§

fn downcast_ref<T>(&self) -> Option<&T>
where T: ObjectType, Self: MayDowncastTo<T>,

Tries to downcast to a reference of its subclass or interface implementor T. Read more
source§

fn dynamic_cast<T>(self) -> Result<T, Self>
where T: ObjectType,

Tries to cast to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while upcast will do many checks at compile-time already. downcast will perform the same checks at runtime as dynamic_cast, but will also ensure some amount of compile-time safety. Read more
source§

fn dynamic_cast_ref<T>(&self) -> Option<&T>
where T: ObjectType,

Tries to cast to reference to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while downcast and upcast will do many checks at compile-time already. Read more
source§

unsafe fn unsafe_cast<T>(self) -> T
where T: ObjectType,

Casts to T unconditionally. Read more
source§

unsafe fn unsafe_cast_ref<T>(&self) -> &T
where T: ObjectType,

Casts to &T unconditionally. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *const GList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec(_: *const GList, _: usize) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(_: *const GList, _: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *const GPtrArray, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec( _: *const GPtrArray, _: usize ) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(_: *const GPtrArray, _: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *const GSList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec(_: *const GSList, _: usize) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(_: *const GSList, _: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *mut GList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec(ptr: *mut GList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(ptr: *mut GList, num: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *mut GPtrArray, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec( ptr: *mut GPtrArray, num: usize ) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(ptr: *mut GPtrArray, num: usize) -> Vec<T>

source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

unsafe fn from_glib_none_num_as_vec(ptr: *mut GSList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_container_num_as_vec(ptr: *mut GSList, num: usize) -> Vec<T>

source§

unsafe fn from_glib_full_num_as_vec(ptr: *mut GSList, num: usize) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *const GList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(_: *const GList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(_: *const GList) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *const GPtrArray) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(_: *const GPtrArray) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(_: *const GPtrArray) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *const GSList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(_: *const GSList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(_: *const GSList) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GList) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GPtrArray) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GPtrArray) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GPtrArray) -> Vec<T>

source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

source§

unsafe fn from_glib_none_as_vec(ptr: *mut GSList) -> Vec<T>

source§

unsafe fn from_glib_container_as_vec(ptr: *mut GSList) -> Vec<T>

source§

unsafe fn from_glib_full_as_vec(ptr: *mut GSList) -> Vec<T>

source§

impl<O> GObjectPropertyExpressionExt for O
where O: IsA<Object>,

source§

fn property_expression(&self, property_name: &str) -> PropertyExpression

Create an expression looking up an object’s property.
source§

fn property_expression_weak(&self, property_name: &str) -> PropertyExpression

Create an expression looking up an object’s property with a weak reference.
source§

fn this_expression(property_name: &str) -> PropertyExpression

Create an expression looking up a property in the bound this object.
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoClosureReturnValue for T
where T: Into<Value>,

source§

impl<U> IsSubclassableExt for U

source§

impl<T> ObjectExt for T
where T: ObjectType,

source§

fn is<U>(&self) -> bool
where U: StaticType,

Returns true if the object is an instance of (can be cast to) T.
source§

fn type_(&self) -> Type

Returns the type of the object.
source§

fn object_class(&self) -> &Class<Object>

Returns the ObjectClass of the object. Read more
source§

fn class(&self) -> &Class<T>
where T: IsClass,

Returns the class of the object.
source§

fn class_of<U>(&self) -> Option<&Class<U>>
where U: IsClass,

Returns the class of the object in the given type T. Read more
source§

fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>
where U: IsInterface,

Returns the interface T of the object. Read more
source§

fn set_property(&self, property_name: &str, value: impl Into<Value>)

Sets the property property_name of the object to value value. Read more
source§

fn set_property_from_value(&self, property_name: &str, value: &Value)

Sets the property property_name of the object to value value. Read more
source§

fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])

Sets multiple properties of the object at once. Read more
source§

fn set_properties_from_value(&self, property_values: &[(&str, Value)])

Sets multiple properties of the object at once. Read more
source§

fn property<V>(&self, property_name: &str) -> V
where V: for<'b> FromValue<'b> + 'static,

Gets the property property_name of the object and cast it to the type V. Read more
source§

fn property_value(&self, property_name: &str) -> Value

Gets the property property_name of the object. Read more
source§

fn has_property(&self, property_name: &str, type_: Option<Type>) -> bool

Check if the object has a property property_name of the given type_. Read more
source§

fn property_type(&self, property_name: &str) -> Option<Type>

Get the type of the property property_name of this object. Read more
source§

fn find_property(&self, property_name: &str) -> Option<ParamSpec>

Get the ParamSpec of the property property_name of this object.
source§

fn list_properties(&self) -> PtrSlice<ParamSpec>

Return all ParamSpec of the properties of this object.
source§

fn freeze_notify(&self) -> PropertyNotificationFreezeGuard

Freeze all property notifications until the return guard object is dropped. Read more
source§

unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)
where QD: 'static,

Set arbitrary data on this object with the given key. Read more
source§

unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>
where QD: 'static,

Return previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>
where QD: 'static,

Retrieve previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn set_data<QD>(&self, key: &str, value: QD)
where QD: 'static,

Set arbitrary data on this object with the given key. Read more
source§

unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>
where QD: 'static,

Return previously set arbitrary data of this object with the given key. Read more
source§

unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>
where QD: 'static,

Retrieve previously set arbitrary data of this object with the given key. Read more
source§

fn block_signal(&self, handler_id: &SignalHandlerId)

Block a given signal handler. Read more
source§

fn unblock_signal(&self, handler_id: &SignalHandlerId)

Unblock a given signal handler.
source§

fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)

Stop emission of the currently emitted signal.
source§

fn stop_signal_emission_by_name(&self, signal_name: &str)

Stop emission of the currently emitted signal by the (possibly detailed) signal name.
source§

fn connect<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,

Connect to the signal signal_name on this object. Read more
source§

fn connect_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,

Connect to the signal signal_id on this object. Read more
source§

fn connect_local<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + 'static,

Connect to the signal signal_name on this object. Read more
source§

fn connect_local_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + 'static,

Connect to the signal signal_id on this object. Read more
source§

unsafe fn connect_unsafe<F>( &self, signal_name: &str, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value>,

Connect to the signal signal_name on this object. Read more
source§

unsafe fn connect_unsafe_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value>,

Connect to the signal signal_id on this object. Read more
source§

fn connect_closure( &self, signal_name: &str, after: bool, closure: RustClosure ) -> SignalHandlerId

Connect a closure to the signal signal_name on this object. Read more
source§

fn connect_closure_id( &self, signal_id: SignalId, details: Option<Quark>, after: bool, closure: RustClosure ) -> SignalHandlerId

Connect a closure to the signal signal_id on this object. Read more
source§

fn watch_closure(&self, closure: &impl AsRef<Closure>)

Limits the lifetime of closure to the lifetime of the object. When the object’s reference count drops to zero, the closure will be invalidated. An invalidated closure will ignore any calls to invoke_with_values, or invoke when using Rust closures.
source§

fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> R

Emit signal by signal id. Read more
source§

fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>

Same as Self::emit but takes Value for the arguments.
source§

fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> R

Emit signal by its name. Read more
source§

fn emit_by_name_with_values( &self, signal_name: &str, args: &[Value] ) -> Option<Value>

Emit signal by its name. Read more
source§

fn emit_by_name_with_details<R>( &self, signal_name: &str, details: Quark, args: &[&dyn ToValue] ) -> R

Emit signal by its name with details. Read more
source§

fn emit_by_name_with_details_and_values( &self, signal_name: &str, details: Quark, args: &[Value] ) -> Option<Value>

Emit signal by its name with details. Read more
source§

fn emit_with_details<R>( &self, signal_id: SignalId, details: Quark, args: &[&dyn ToValue] ) -> R

Emit signal by signal id with details. Read more
source§

fn emit_with_details_and_values( &self, signal_id: SignalId, details: Quark, args: &[Value] ) -> Option<Value>

Emit signal by signal id with details. Read more
source§

fn disconnect(&self, handler_id: SignalHandlerId)

Disconnect a previously connected signal handler.
source§

fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&T, &ParamSpec) + Send + Sync + 'static,

Connect to the notify signal of the object. Read more
source§

fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&T, &ParamSpec) + 'static,

Connect to the notify signal of the object. Read more
source§

unsafe fn connect_notify_unsafe<F>( &self, name: Option<&str>, f: F ) -> SignalHandlerId
where F: Fn(&T, &ParamSpec),

Connect to the notify signal of the object. Read more
source§

fn notify(&self, property_name: &str)

Notify that the given property has changed its value. Read more
source§

fn notify_by_pspec(&self, pspec: &ParamSpec)

Notify that the given property has changed its value. Read more
source§

fn downgrade(&self) -> WeakRef<T>

Downgrade this object to a weak reference.
source§

fn add_weak_ref_notify<F>(&self, f: F) -> WeakRefNotify<T>
where F: FnOnce() + Send + 'static,

Add a callback to be notified when the Object is disposed.
source§

fn add_weak_ref_notify_local<F>(&self, f: F) -> WeakRefNotify<T>
where F: FnOnce() + 'static,

Add a callback to be notified when the Object is disposed. Read more
source§

fn bind_property<'a, 'f, 't, O>( &'a self, source_property: &'a str, target: &'a O, target_property: &'a str ) -> BindingBuilder<'a, 'f, 't>
where O: ObjectType,

Bind property source_property on this object to the target_property on the target object. Read more
source§

fn ref_count(&self) -> u32

Returns the strong reference count of this object.
source§

unsafe fn run_dispose(&self)

Runs the dispose mechanism of the object. Read more
source§

impl<T> Property for T
where T: HasParamSpec,

§

type Value = T

source§

impl<T> PropertyGet for T
where T: HasParamSpec,

§

type Value = T

source§

fn get<R, F>(&self, f: F) -> R
where F: Fn(&<T as PropertyGet>::Value) -> R,

source§

impl<T> StaticTypeExt for T
where T: StaticType,

source§

fn ensure_type()

Ensures that the type has been registered with the type system.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> TransparentType for T

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T> TryFromClosureReturnValue for T
where T: for<'a> FromValue<'a> + StaticType + 'static,

source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<O> WidgetExt for O
where O: IsA<Widget>,

source§

fn action_set_enabled(&self, action_name: &str, enabled: bool)

source§

fn activate(&self) -> bool

source§

fn activate_action( &self, name: &str, args: Option<&Variant> ) -> Result<(), BoolError>

source§

fn activate_default(&self)

source§

fn add_controller(&self, controller: impl IsA<EventController>)

source§

fn add_css_class(&self, css_class: &str)

source§

fn add_mnemonic_label(&self, label: &impl IsA<Widget>)

source§

fn allocate( &self, width: i32, height: i32, baseline: i32, transform: Option<Transform> )

source§

fn child_focus(&self, direction: DirectionType) -> bool

source§

fn compute_bounds(&self, target: &impl IsA<Widget>) -> Option<Rect>

source§

fn compute_expand(&self, orientation: Orientation) -> bool

source§

fn compute_point( &self, target: &impl IsA<Widget>, point: &Point ) -> Option<Point>

source§

fn compute_transform(&self, target: &impl IsA<Widget>) -> Option<Matrix>

source§

fn contains(&self, x: f64, y: f64) -> bool

source§

fn create_pango_context(&self) -> Context

source§

fn create_pango_layout(&self, text: Option<&str>) -> Layout

source§

fn drag_check_threshold( &self, start_x: i32, start_y: i32, current_x: i32, current_y: i32 ) -> bool

source§

fn error_bell(&self)

source§

fn allocated_baseline(&self) -> i32

source§

fn allocated_height(&self) -> i32

source§

fn allocated_width(&self) -> i32

source§

fn allocation(&self) -> Rectangle

source§

fn ancestor(&self, widget_type: Type) -> Option<Widget>

source§

fn can_focus(&self) -> bool

source§

fn can_target(&self) -> bool

source§

fn is_child_visible(&self) -> bool

source§

fn clipboard(&self) -> Clipboard

source§

fn css_classes(&self) -> Vec<GString>

source§

fn css_name(&self) -> GString

source§

fn cursor(&self) -> Option<Cursor>

source§

fn direction(&self) -> TextDirection

source§

fn display(&self) -> Display

source§

fn first_child(&self) -> Option<Widget>

source§

fn focus_child(&self) -> Option<Widget>

source§

fn gets_focus_on_click(&self) -> bool

source§

fn is_focusable(&self) -> bool

source§

fn font_map(&self) -> Option<FontMap>

source§

fn font_options(&self) -> Option<FontOptions>

source§

fn frame_clock(&self) -> Option<FrameClock>

source§

fn halign(&self) -> Align

source§

fn has_tooltip(&self) -> bool

source§

fn height(&self) -> i32

source§

fn hexpands(&self) -> bool

source§

fn is_hexpand_set(&self) -> bool

source§

fn last_child(&self) -> Option<Widget>

source§

fn layout_manager(&self) -> Option<LayoutManager>

source§

fn is_mapped(&self) -> bool

source§

fn margin_bottom(&self) -> i32

source§

fn margin_end(&self) -> i32

source§

fn margin_start(&self) -> i32

source§

fn margin_top(&self) -> i32

source§

fn widget_name(&self) -> GString

source§

fn native(&self) -> Option<Native>

source§

fn next_sibling(&self) -> Option<Widget>

source§

fn opacity(&self) -> f64

source§

fn overflow(&self) -> Overflow

source§

fn pango_context(&self) -> Context

source§

fn parent(&self) -> Option<Widget>

source§

fn preferred_size(&self) -> (Requisition, Requisition)

source§

fn prev_sibling(&self) -> Option<Widget>

source§

fn primary_clipboard(&self) -> Clipboard

source§

fn is_realized(&self) -> bool

source§

fn receives_default(&self) -> bool

source§

fn request_mode(&self) -> SizeRequestMode

source§

fn root(&self) -> Option<Root>

source§

fn scale_factor(&self) -> i32

source§

fn get_sensitive(&self) -> bool

source§

fn settings(&self) -> Settings

source§

fn size(&self, orientation: Orientation) -> i32

source§

fn size_request(&self) -> (i32, i32)

source§

fn state_flags(&self) -> StateFlags

source§

fn style_context(&self) -> StyleContext

source§

fn tooltip_markup(&self) -> Option<GString>

source§

fn tooltip_text(&self) -> Option<GString>

source§

fn valign(&self) -> Align

source§

fn vexpands(&self) -> bool

source§

fn is_vexpand_set(&self) -> bool

source§

fn get_visible(&self) -> bool

source§

fn width(&self) -> i32

source§

fn grab_focus(&self) -> bool

source§

fn has_css_class(&self, css_class: &str) -> bool

source§

fn has_default(&self) -> bool

source§

fn has_focus(&self) -> bool

source§

fn has_visible_focus(&self) -> bool

source§

fn hide(&self)

source§

fn in_destruction(&self) -> bool

source§

fn insert_action_group(&self, name: &str, group: Option<&impl IsA<ActionGroup>>)

source§

fn insert_after( &self, parent: &impl IsA<Widget>, previous_sibling: Option<&impl IsA<Widget>> )

source§

fn insert_before( &self, parent: &impl IsA<Widget>, next_sibling: Option<&impl IsA<Widget>> )

source§

fn is_ancestor(&self, ancestor: &impl IsA<Widget>) -> bool

source§

fn is_drawable(&self) -> bool

source§

fn is_focus(&self) -> bool

source§

fn is_sensitive(&self) -> bool

source§

fn is_visible(&self) -> bool

source§

fn keynav_failed(&self, direction: DirectionType) -> bool

source§

fn list_mnemonic_labels(&self) -> Vec<Widget>

source§

fn map(&self)

source§

fn measure( &self, orientation: Orientation, for_size: i32 ) -> (i32, i32, i32, i32)

source§

fn mnemonic_activate(&self, group_cycling: bool) -> bool

source§

fn observe_children(&self) -> ListModel

source§

fn observe_controllers(&self) -> ListModel

source§

fn pick(&self, x: f64, y: f64, flags: PickFlags) -> Option<Widget>

source§

fn queue_allocate(&self)

source§

fn queue_draw(&self)

source§

fn queue_resize(&self)

source§

fn realize(&self)

source§

fn remove_controller(&self, controller: &impl IsA<EventController>)

source§

fn remove_css_class(&self, css_class: &str)

source§

fn remove_mnemonic_label(&self, label: &impl IsA<Widget>)

source§

fn set_can_focus(&self, can_focus: bool)

source§

fn set_can_target(&self, can_target: bool)

source§

fn set_child_visible(&self, child_visible: bool)

source§

fn set_css_classes(&self, classes: &[&str])

source§

fn set_cursor(&self, cursor: Option<&Cursor>)

source§

fn set_cursor_from_name(&self, name: Option<&str>)

source§

fn set_direction(&self, dir: TextDirection)

source§

fn set_focus_child(&self, child: Option<&impl IsA<Widget>>)

source§

fn set_focus_on_click(&self, focus_on_click: bool)

source§

fn set_focusable(&self, focusable: bool)

source§

fn set_font_map(&self, font_map: Option<&impl IsA<FontMap>>)

source§

fn set_font_options(&self, options: Option<&FontOptions>)

source§

fn set_halign(&self, align: Align)

source§

fn set_has_tooltip(&self, has_tooltip: bool)

source§

fn set_hexpand(&self, expand: bool)

source§

fn set_hexpand_set(&self, set: bool)

source§

fn set_layout_manager(&self, layout_manager: Option<impl IsA<LayoutManager>>)

source§

fn set_margin_bottom(&self, margin: i32)

source§

fn set_margin_end(&self, margin: i32)

source§

fn set_margin_start(&self, margin: i32)

source§

fn set_margin_top(&self, margin: i32)

source§

fn set_widget_name(&self, name: &str)

source§

fn set_opacity(&self, opacity: f64)

source§

fn set_overflow(&self, overflow: Overflow)

source§

fn set_parent(&self, parent: &impl IsA<Widget>)

source§

fn set_receives_default(&self, receives_default: bool)

source§

fn set_sensitive(&self, sensitive: bool)

source§

fn set_size_request(&self, width: i32, height: i32)

source§

fn set_state_flags(&self, flags: StateFlags, clear: bool)

source§

fn set_tooltip_markup(&self, markup: Option<&str>)

source§

fn set_tooltip_text(&self, text: Option<&str>)

source§

fn set_valign(&self, align: Align)

source§

fn set_vexpand(&self, expand: bool)

source§

fn set_vexpand_set(&self, set: bool)

source§

fn set_visible(&self, visible: bool)

source§

fn should_layout(&self) -> bool

source§

fn show(&self)

source§

fn size_allocate(&self, allocation: &Rectangle, baseline: i32)

source§

fn snapshot_child( &self, child: &impl IsA<Widget>, snapshot: &impl IsA<Snapshot> )

source§

fn translate_coordinates( &self, dest_widget: &impl IsA<Widget>, src_x: f64, src_y: f64 ) -> Option<(f64, f64)>

source§

fn trigger_tooltip_query(&self)

source§

fn unmap(&self)

source§

fn unparent(&self)

source§

fn unrealize(&self)

source§

fn unset_state_flags(&self, flags: StateFlags)

source§

fn height_request(&self) -> i32

source§

fn set_height_request(&self, height_request: i32)

source§

fn width_request(&self) -> i32

source§

fn set_width_request(&self, width_request: i32)

source§

fn connect_destroy<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_direction_changed<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self, TextDirection) + 'static,

source§

fn connect_hide<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_keynav_failed<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self, DirectionType) -> Propagation + 'static,

source§

fn connect_map<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_mnemonic_activate<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self, bool) -> Propagation + 'static,

source§

fn connect_move_focus<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self, DirectionType) + 'static,

source§

fn emit_move_focus(&self, direction: DirectionType)

source§

fn connect_query_tooltip<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self, i32, i32, bool, &Tooltip) -> bool + 'static,

source§

fn connect_realize<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_show<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_state_flags_changed<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self, StateFlags) + 'static,

source§

fn connect_unmap<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_unrealize<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_can_focus_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_can_target_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_css_classes_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_cursor_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_focus_on_click_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_focusable_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_halign_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_has_default_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_has_focus_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_has_tooltip_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_height_request_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_hexpand_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_hexpand_set_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_layout_manager_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_margin_bottom_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_margin_end_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_margin_start_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_margin_top_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_name_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_opacity_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_overflow_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_parent_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_receives_default_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_root_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_scale_factor_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_sensitive_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_tooltip_markup_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_tooltip_text_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_valign_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_vexpand_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_vexpand_set_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_visible_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

fn connect_width_request_notify<F>(&self, f: F) -> SignalHandlerId
where F: Fn(&Self) + 'static,

source§

impl<O> WidgetExtManual for O
where O: IsA<Widget>,

source§

fn add_tick_callback<P>(&self, callback: P) -> TickCallbackId
where P: Fn(&Self, &FrameClock) -> ControlFlow + 'static,

source§

impl<O> ConstraintTargetExt for O

source§

impl<'a, T, C, E> FromValueOptional<'a> for T
where T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError<E>>, E: Error + Send + 'static,

source§

impl<Super, Sub> MayDowncastTo<Sub> for Super
where Super: IsA<Super>, Sub: IsA<Super>,