Merge pull request #110250 from YeldhamDev/i_just_cant_keep_focused
Hide `Control` focus when given via mouse input
This commit is contained in:
@ -11,7 +11,7 @@
|
||||
Godot propagates input events via viewports. Each [Viewport] is responsible for propagating [InputEvent]s to their child nodes. As the [member SceneTree.root] is a [Window], this already happens automatically for all UI elements in your game.
|
||||
Input events are propagated through the [SceneTree] from the root node to all child nodes by calling [method Node._input]. For UI elements specifically, it makes more sense to override the virtual method [method _gui_input], which filters out unrelated input events, such as by checking z-order, [member mouse_filter], focus, or if the event was inside of the control's bounding box.
|
||||
Call [method accept_event] so no other node receives the event. Once you accept an input, it becomes handled so [method Node._unhandled_input] will not process it.
|
||||
Only one [Control] node can be in focus. Only the node in focus will receive events. To get the focus, call [method grab_focus]. [Control] nodes lose focus when another node grabs it, or if you hide the node in focus.
|
||||
Only one [Control] node can be in focus. Only the node in focus will receive events. To get the focus, call [method grab_focus]. [Control] nodes lose focus when another node grabs it, or if you hide the node in focus. Focus will not be represented visually if gained via mouse/touch input, only appearing with keyboard/gamepad input (for accessibility), or via [method grab_focus].
|
||||
Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a [Control] node to ignore mouse or touch events. You'll need it if you place an icon on top of a button.
|
||||
[Theme] resources change the control's appearance. The [member theme] of a [Control] node affects all of its direct and indirect children (as long as a chain of controls is uninterrupted). To override some of the theme items, call one of the [code]add_theme_*_override[/code] methods, like [method add_theme_font_override]. You can also override theme items in the Inspector.
|
||||
[b]Note:[/b] Theme items are [i]not[/i] [Object] properties. This means you can't access their values using [method Object.get] and [method Object.set]. Instead, use the [code]get_theme_*[/code] and [code]add_theme_*_override[/code] methods provided by this class.
|
||||
@ -618,15 +618,19 @@
|
||||
</method>
|
||||
<method name="grab_focus">
|
||||
<return type="void" />
|
||||
<param index="0" name="hide_focus" type="bool" default="false" />
|
||||
<description>
|
||||
Steal the focus from another control and become the focused control (see [member focus_mode]).
|
||||
If [param hide_focus] is [code]true[/code], the control will not visually show its focused state. Has no effect if [member ProjectSettings.gui/common/always_show_focus_state] is set to [code]true[/code].
|
||||
[b]Note:[/b] Using this method together with [method Callable.call_deferred] makes it more reliable, especially when called inside [method Node._ready].
|
||||
</description>
|
||||
</method>
|
||||
<method name="has_focus" qualifiers="const">
|
||||
<return type="bool" />
|
||||
<param index="0" name="ignore_hidden_focus" type="bool" default="false" />
|
||||
<description>
|
||||
Returns [code]true[/code] if this is the current focused control. See [member focus_mode].
|
||||
If [param ignore_hidden_focus] is [code]true[/code], controls that have their focus hidden will always return [code]false[/code]. Hidden focus happens automatically when controls gain focus via mouse input, or manually using [method grab_focus] with [code]hide_focus[/code] set to [code]true[/code].
|
||||
</description>
|
||||
</method>
|
||||
<method name="has_theme_color" qualifiers="const">
|
||||
|
||||
@ -1177,6 +1177,9 @@
|
||||
<member name="filesystem/import/fbx2gltf/enabled.web" type="bool" setter="" getter="" default="false">
|
||||
Override for [member filesystem/import/fbx2gltf/enabled] on the Web where FBX2glTF can't easily be accessed from Godot.
|
||||
</member>
|
||||
<member name="gui/common/always_show_focus_state" type="bool" setter="" getter="" default="false">
|
||||
If [code]true[/code], [Control]s will always show if they're focused, even if said focus was gained via mouse/touch input.
|
||||
</member>
|
||||
<member name="gui/common/default_scroll_deadzone" type="int" setter="" getter="" default="0">
|
||||
Default value for [member ScrollContainer.scroll_deadzone], which will be used for all [ScrollContainer]s unless overridden.
|
||||
</member>
|
||||
|
||||
Reference in New Issue
Block a user