Commit 7732b72f authored by jamiewalch's avatar jamiewalch Committed by Commit bot

Filter spurious mouse move events.

Due to crbug.com/489468, detection of re-written key combinations
(e.g. Search+Backspace->Delete) were being mis-treated as modifier
key combinations (i.e. Search+Backspace->Search+Delete).

Since the spurious mouse event causing this has the same x and y
coordinates as the previous mouse event, it can be filtered to
suppress the unwanted keyboard event.

BUG=484329

Review URL: https://codereview.chromium.org/1143943002

Cr-Commit-Position: refs/heads/master@{#330829}
parent b1f400ca
...@@ -98,7 +98,9 @@ NormalizingInputFilterCros::NormalizingInputFilterCros( ...@@ -98,7 +98,9 @@ NormalizingInputFilterCros::NormalizingInputFilterCros(
: protocol::InputFilter(input_stub), : protocol::InputFilter(input_stub),
deferred_key_is_rewriting_(false), deferred_key_is_rewriting_(false),
modifying_key_(0), modifying_key_(0),
left_alt_is_pressed_(false) { left_alt_is_pressed_(false),
previous_mouse_x_(-1),
previous_mouse_y_(-1) {
} }
NormalizingInputFilterCros::~NormalizingInputFilterCros() {} NormalizingInputFilterCros::~NormalizingInputFilterCros() {}
...@@ -117,8 +119,21 @@ void NormalizingInputFilterCros::InjectKeyEvent( ...@@ -117,8 +119,21 @@ void NormalizingInputFilterCros::InjectKeyEvent(
void NormalizingInputFilterCros::InjectMouseEvent( void NormalizingInputFilterCros::InjectMouseEvent(
const protocol::MouseEvent& event) { const protocol::MouseEvent& event) {
if (deferred_keydown_event_.has_usb_keycode()) // If there's a rewriting/modifier decision pending, assume that it's
SwitchRewritingKeyToModifying(); // intended to be used as a modifying key for this mouse event and send it.
if (deferred_keydown_event_.has_usb_keycode()) {
// TODO(jamiewalch): Until crbug.com/489468 is fixed, a spurious mouse move
// event is generated in response to certain key combinations, so check that
// this is actually an "interesting" event.
if (event.has_button() ||
event.x() != previous_mouse_x_ ||
event.y() != previous_mouse_y_) {
SwitchRewritingKeyToModifying();
}
}
previous_mouse_x_ = event.x();
previous_mouse_y_ = event.y();
protocol::MouseEvent newEvent = event; protocol::MouseEvent newEvent = event;
if (left_alt_is_pressed_ && if (left_alt_is_pressed_ &&
event.has_button() && event.has_button() &&
......
...@@ -51,6 +51,10 @@ class NormalizingInputFilterCros : public protocol::InputFilter { ...@@ -51,6 +51,10 @@ class NormalizingInputFilterCros : public protocol::InputFilter {
// True if the left Alt key is pressed. // True if the left Alt key is pressed.
bool left_alt_is_pressed_; bool left_alt_is_pressed_;
// Previous mouse coordinates.
int previous_mouse_x_;
int previous_mouse_y_;
DISALLOW_COPY_AND_ASSIGN(NormalizingInputFilterCros); DISALLOW_COPY_AND_ASSIGN(NormalizingInputFilterCros);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment