class Gtk::ShortcutController
- Gtk::ShortcutController
- Gtk::EventController
- GObject::Object
- Reference
- Object
Overview
Gtk::ShortcutController
is an event controller that manages shortcuts.
Most common shortcuts are using this controller implicitly, e.g. by
adding a mnemonic underline to a Gtk::Label
, or by installing a key
binding using Gtk::WidgetClass#add_binding
, or by adding accelerators
to global actions using Gtk::Application#accels_for_action=
.
But it is possible to create your own shortcut controller, and add shortcuts to it.
Gtk::ShortcutController
implements GListModel
for querying the
shortcuts that have been added to it.
Gtk::ShortcutController as a Gtk::Buildable
Gtk::ShortcutControllers
can be creates in ui files to set up
shortcuts in the same place as the widgets.
An example of a UI definition fragment with Gtk::ShortcutController
:
WARNING ⚠️ The following code is in xml ⚠️
<object class='Gtk::Button'>
<child>
<object class='Gtk::ShortcutController'>
<property name='scope'>managed</property>
<child>
<object class='Gtk::Shortcut'>
<property name='trigger'><Control>k</property>
<property name='action'>activate</property>
</object>
</child>
</object>
</child>
</object>
This example creates a Gtk::ActivateAction
for triggering the
activate
signal of the Gtk::Button
. See Gtk::ShortcutAction#parse_string
for the syntax for other kinds of Gtk::ShortcutAction
. See
Gtk::ShortcutTrigger#parse_string
to learn more about the syntax
for triggers.
Included Modules
Defined in:
lib/gi-crystal/src/auto/gtk-4.0/shortcut_controller.crConstructors
-
.new : self
Creates a new shortcut controller.
- .new(*, item_type : UInt64? = nil, mnemonic_modifiers : Gdk::ModifierType? = nil, model : Gio::ListModel? = nil, n_items : UInt32? = nil, name : String? = nil, propagation_limit : Gtk::PropagationLimit? = nil, propagation_phase : Gtk::PropagationPhase? = nil, scope : Gtk::ShortcutScope? = nil, widget : Gtk::Widget? = nil)
-
.new_for_model(model : Gio::ListModel) : self
Creates a new shortcut controller that takes its shortcuts from the given list model.
Class Method Summary
-
.g_type : UInt64
Returns the type id (GType) registered in GLib type system.
Instance Method Summary
-
#add_shortcut(shortcut : Gtk::Shortcut) : Nil
Adds @shortcut to the list of shortcuts handled by @self.
- #item_type : UInt64
- #mnemonic_modifiers : Gdk::ModifierType
- #mnemonic_modifiers=(value : Gdk::ModifierType) : Gdk::ModifierType
-
#mnemonics_modifiers : Gdk::ModifierType
Gets the mnemonics modifiers for when this controller activates its shortcuts.
-
#mnemonics_modifiers=(modifiers : Gdk::ModifierType) : Nil
Sets the controller to use the given modifier for mnemonics.
- #model=(value : Gio::ListModel?) : Gio::ListModel?
- #n_items : UInt32
-
#remove_shortcut(shortcut : Gtk::Shortcut) : Nil
Removes @shortcut from the list of shortcuts handled by @self.
-
#scope : Gtk::ShortcutScope
Gets the scope for when this controller activates its shortcuts.
-
#scope=(scope : Gtk::ShortcutScope) : Nil
Sets the controller to have the given @scope.
Instance methods inherited from module Gtk::Buildable
buildable_id : String?
buildable_id,
to_unsafe
to_unsafe
Class methods inherited from module Gtk::Buildable
g_type : UInt64
g_type
Instance methods inherited from module Gio::ListModel
item(position : UInt32) : GObject::Object?
item,
item_type : UInt64
item_type,
items_changed(position : UInt32, removed : UInt32, added : UInt32) : Nil
items_changed,
items_changed_signal
items_changed_signal,
n_items : UInt32
n_items,
to_unsafe
to_unsafe
Class methods inherited from module Gio::ListModel
g_type : UInt64
g_type
Instance methods inherited from class Gtk::EventController
current_event : Gdk::Event?
current_event,
current_event_device : Gdk::Device?
current_event_device,
current_event_state : Gdk::ModifierType
current_event_state,
current_event_time : UInt32
current_event_time,
name : String?
name,
name=(value : String) : Stringname=(name : String?) : Nil name=, propagation_limit : Gtk::PropagationLimit propagation_limit, propagation_limit=(limit : Gtk::PropagationLimit) : Nil propagation_limit=, propagation_phase : Gtk::PropagationPhase propagation_phase, propagation_phase=(phase : Gtk::PropagationPhase) : Nil propagation_phase=, reset : Nil reset, static_name=(name : String?) : Nil static_name=, widget : Gtk::Widget widget
Constructor methods inherited from class Gtk::EventController
newnew(*, name : String? = nil, propagation_limit : Gtk::PropagationLimit? = nil, propagation_phase : Gtk::PropagationPhase? = nil, widget : Gtk::Widget? = nil) new
Class methods inherited from class Gtk::EventController
g_type : UInt64
g_type
Instance methods inherited from class GObject::Object
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)?
data,
finalize
finalize,
freeze_notify : Nil
freeze_notify,
getv(names : Enumerable(String), values : Enumerable(_)) : Nil
getv,
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)?
qdata,
ref_count : UInt32
ref_count,
run_dispose : Nil
run_dispose,
set_data(key : String, data : Pointer(Void)?) : Nil
set_data,
set_property(property_name : String, value : _) : Nil
set_property,
steal_data(key : String) : Pointer(Void)?
steal_data,
steal_qdata(quark : UInt32) : Pointer(Void)?
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,
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
compat_control(what : UInt64, data : Pointer(Void)?) : 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
Constructor Detail
Creates a new shortcut controller that takes its shortcuts from the given list model.
A controller created by this function does not let you add or remove individual shortcuts using the shortcut controller api, but you can change the contents of the model.
Class Method Detail
Instance Method Detail
Adds @shortcut to the list of shortcuts handled by @self.
If this controller uses an external shortcut list, this function does nothing.
Gets the mnemonics modifiers for when this controller activates its shortcuts.
Sets the controller to use the given modifier for mnemonics.
The mnemonics modifiers determines which modifiers need to be pressed to allow activation of shortcuts with mnemonics triggers.
GTK normally uses the Alt modifier for mnemonics, except in Gtk::PopoverMenu
s,
where mnemonics can be triggered without any modifiers. It should be very
rarely necessary to change this, and doing so is likely to interfere with
other shortcuts.
This value is only relevant for local shortcut controllers. Global and managed shortcut controllers will have their shortcuts activated from other places which have their own modifiers for activating mnemonics.
Removes @shortcut from the list of shortcuts handled by @self.
If @shortcut had not been added to @controller or this controller uses an external shortcut list, this function does nothing.
Gets the scope for when this controller activates its shortcuts.
See Gtk::ShortcutController#scope=
for details.
Sets the controller to have the given @scope.
The scope allows shortcuts to be activated outside of the normal event propagation. In particular, it allows installing global keyboard shortcuts that can be activated even when a widget does not have focus.
With %GTK_SHORTCUT_SCOPE_LOCAL, shortcuts will only be activated when the widget has focus.