core: Add UiBackend::close_virtual_keyboard

This method may be used by backends that require explicit virtual
keyboard closing.
This commit is contained in:
Kamil Jarosz 2024-07-17 16:33:01 +02:00
parent e18ae830c1
commit 53d2d16162
5 changed files with 16 additions and 1 deletions

View File

@ -91,9 +91,10 @@ pub trait UiBackend: Downcast {
// Unused, but kept in case we need it later.
fn message(&self, message: &str);
// Only used on web.
fn open_virtual_keyboard(&self);
fn close_virtual_keyboard(&self);
fn language(&self) -> LanguageIdentifier;
fn display_unsupported_video(&self, url: Url);
@ -360,6 +361,8 @@ impl UiBackend for NullUiBackend {
fn open_virtual_keyboard(&self) {}
fn close_virtual_keyboard(&self) {}
fn language(&self) -> LanguageIdentifier {
US_ENGLISH.clone()
}

View File

@ -197,12 +197,18 @@ impl<'gc> FocusTracker<'gc> {
if let Some(text_field) = self.get_as_edit_text() {
if text_field.is_editable() {
if !text_field.movie().is_action_script_3() {
// TODO This logic is inaccurate and addresses
// only setting the focus programmatically.
let length = text_field.text_length();
text_field
.set_selection(Some(TextSelection::for_range(0, length)), context.gc());
}
context.ui.open_virtual_keyboard();
} else {
context.ui.close_virtual_keyboard();
}
} else {
context.ui.close_virtual_keyboard();
}
}

View File

@ -310,6 +310,8 @@ impl UiBackend for DesktopUiBackend {
// Unused on desktop
fn open_virtual_keyboard(&self) {}
fn close_virtual_keyboard(&self) {}
fn language(&self) -> LanguageIdentifier {
self.preferences.language().clone()
}

View File

@ -117,6 +117,8 @@ impl UiBackend for TestUiBackend {
fn open_virtual_keyboard(&self) {}
fn close_virtual_keyboard(&self) {}
fn language(&self) -> LanguageIdentifier {
US_ENGLISH.clone()
}

View File

@ -292,6 +292,8 @@ impl UiBackend for WebUiBackend {
self.js_player.open_virtual_keyboard()
}
fn close_virtual_keyboard(&self) {}
fn language(&self) -> LanguageIdentifier {
self.language.clone()
}