linux: Don't insert characters if modifiers other than shift are held (#33424)
Closes #32219 #29666 Release Notes: - Linux: Now skips insertion of characters when modifiers are held. Before, characters were inserted if there's no match in the keymap.
This commit is contained in:
parent
b9f81c7ce7
commit
dfdeb1bf51
2 changed files with 18 additions and 13 deletions
|
@ -699,12 +699,14 @@ impl WaylandWindowStatePtr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let PlatformInput::KeyDown(event) = input {
|
if let PlatformInput::KeyDown(event) = input {
|
||||||
if let Some(key_char) = &event.keystroke.key_char {
|
if event.keystroke.modifiers.is_subset_of(&Modifiers::shift()) {
|
||||||
let mut state = self.state.borrow_mut();
|
if let Some(key_char) = &event.keystroke.key_char {
|
||||||
if let Some(mut input_handler) = state.input_handler.take() {
|
let mut state = self.state.borrow_mut();
|
||||||
drop(state);
|
if let Some(mut input_handler) = state.input_handler.take() {
|
||||||
input_handler.replace_text_in_range(None, key_char);
|
drop(state);
|
||||||
self.state.borrow_mut().input_handler = Some(input_handler);
|
input_handler.replace_text_in_range(None, key_char);
|
||||||
|
self.state.borrow_mut().input_handler = Some(input_handler);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -982,14 +982,17 @@ impl X11WindowStatePtr {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let PlatformInput::KeyDown(event) = input {
|
if let PlatformInput::KeyDown(event) = input {
|
||||||
let mut state = self.state.borrow_mut();
|
// only allow shift modifier when inserting text
|
||||||
if let Some(mut input_handler) = state.input_handler.take() {
|
if event.keystroke.modifiers.is_subset_of(&Modifiers::shift()) {
|
||||||
if let Some(key_char) = &event.keystroke.key_char {
|
let mut state = self.state.borrow_mut();
|
||||||
drop(state);
|
if let Some(mut input_handler) = state.input_handler.take() {
|
||||||
input_handler.replace_text_in_range(None, key_char);
|
if let Some(key_char) = &event.keystroke.key_char {
|
||||||
state = self.state.borrow_mut();
|
drop(state);
|
||||||
|
input_handler.replace_text_in_range(None, key_char);
|
||||||
|
state = self.state.borrow_mut();
|
||||||
|
}
|
||||||
|
state.input_handler = Some(input_handler);
|
||||||
}
|
}
|
||||||
state.input_handler = Some(input_handler);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue