Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(435)

Unified Diff: ui/events/ozone/evdev/event_converter_evdev_impl.cc

Issue 992323004: [Ozone] Fix disabling keyboard in maximized mode (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/events/ozone/evdev/event_converter_evdev_impl.cc
diff --git a/ui/events/ozone/evdev/event_converter_evdev_impl.cc b/ui/events/ozone/evdev/event_converter_evdev_impl.cc
index c9895e0d6a96c68d9cd262b6a7f8ca0f4007f8d1..f6bb26687c8bb09642852fb21f4da93bec2c8a81 100644
--- a/ui/events/ozone/evdev/event_converter_evdev_impl.cc
+++ b/ui/events/ozone/evdev/event_converter_evdev_impl.cc
@@ -82,12 +82,29 @@ bool EventConverterEvdevImpl::HasCapsLockLed() const {
void EventConverterEvdevImpl::SetAllowedKeys(
scoped_ptr<std::set<DomCode>> allowed_keys) {
DCHECK(HasKeyboard());
- allowed_keys_ = allowed_keys.Pass();
+ if (!allowed_keys) {
+ blocked_keys_.reset();
+ return;
+ }
+
+ blocked_keys_.set();
+ for (const DomCode& it : *allowed_keys) {
+ int evdev_code =
+ NativeCodeToEvdevCode(KeycodeConverter::DomCodeToNativeKeycode(it));
+ blocked_keys_.reset(evdev_code);
+ }
+
+ // Release any pressed blocked keys.
+ base::TimeDelta timestamp = ui::EventTimeForNow();
+ for (int key = 0; key < KEY_CNT; ++key) {
+ if (blocked_keys_.test(key))
+ OnKeyChange(key, false /* down */, timestamp);
+ }
}
void EventConverterEvdevImpl::AllowAllKeys() {
DCHECK(HasKeyboard());
- allowed_keys_.reset();
+ blocked_keys_.reset();
}
void EventConverterEvdevImpl::OnStopped() {
@@ -155,9 +172,7 @@ void EventConverterEvdevImpl::OnKeyChange(unsigned int key,
return;
// Apply key filter (releases for previously pressed keys are excepted).
- DomCode key_code =
- KeycodeConverter::NativeKeycodeToDomCode(EvdevCodeToNativeCode(key));
- if (down && allowed_keys_ && allowed_keys_->count(key_code))
+ if (down && blocked_keys_.test(key))
return;
// State transition: !(down) -> (down)
« no previous file with comments | « ui/events/ozone/evdev/event_converter_evdev_impl.h ('k') | ui/events/ozone/evdev/event_converter_evdev_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698