Skip to content

Commit 005b342

Browse files
committed
Fix OSK not working in-app
1 parent 91afbed commit 005b342

File tree

4 files changed

+10
-14
lines changed

4 files changed

+10
-14
lines changed

addons/onscreenkeyboard/onscreen_keyboard.gd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ func _hideKeyboard(keyData=null,x=null,y=null,steal_focus=null):
161161

162162

163163
func _showKeyboard(keyData=null,x=null,y=null):
164-
tweenOnTop = focused_control.get_global_transform_with_canvas().origin.y > bottomPos - size.y
164+
var control_rect := focused_control.get_global_rect()
165+
tweenOnTop = control_rect.position.y + control_rect.size.y > bottomPos - size.y - 30
165166

166167
var tween := create_tween().set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_SINE)
167168
if tweenOnTop:

scenes/config/ConfigPopup.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ func _input(event: InputEvent):
4747

4848
func open_config():
4949
super.popup_centered_ratio(0.8)
50+
grab_focus()
5051
_on_ConfigPopup_about_to_show()
5152

5253
func close():

scenes/root/Root.gd

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ extends Control
1111
ProjectSettings.get_setting("display/window/size/viewport_height")
1212
)
1313

14-
var n_last_focused : Control
1514
var is_popup_open : bool = false
1615

1716
func _enter_tree():
@@ -126,5 +125,3 @@ func closed_popup(popup: Window = null):
126125
$DarkenOverlay.visible = false
127126
set_theme_input_enabled(true)
128127
is_popup_open = false
129-
if is_instance_valid(n_last_focused):
130-
n_last_focused.grab_focus()

source/UI.gd

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -187,17 +187,14 @@ func get_true_focused_control() -> Control:
187187
if win == null:
188188
return get_viewport().gui_get_focus_owner()
189189

190-
# Find currently focused "embedded" window viewport
191-
var viewport := win.get_viewport()
192-
# Handle theme viewport as well
193-
if viewport == get_tree().get_root().get_viewport():
194-
viewport = _n_theme_viewport
195-
196-
while viewport:
197-
if viewport.get_top_popup_or_focused_window() == null:
190+
while win:
191+
if win.get_top_popup_or_focused_window() == null:
198192
# Found the innermost viewport
199-
return viewport.gui_get_focus_owner()
200-
viewport = viewport.get_top_popup_or_focused_window().get_viewport()
193+
if win == $"/root":
194+
return _n_theme_viewport.gui_get_focus_owner()
195+
else:
196+
return win.gui_get_focus_owner()
197+
win = win.get_top_popup_or_focused_window()
201198
return get_viewport().gui_get_focus_owner()
202199

203200
func play_sound(key: AudioKeys, override : bool = true):

0 commit comments

Comments
 (0)