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

Unified Diff: ui/base/ime/input_method_auralinux.h

Issue 277973002: Fixes the timing to dispatch VKEY_PROCESSKEY. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed nona's comments. Created 6 years, 7 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
« no previous file with comments | « no previous file | ui/base/ime/input_method_auralinux.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/ime/input_method_auralinux.h
diff --git a/ui/base/ime/input_method_auralinux.h b/ui/base/ime/input_method_auralinux.h
index 983feb9aff549d2813259f0d563413370d587fb9..de5c347be21bbe1cdb1f8273b1eb0c96d00d7ee2 100644
--- a/ui/base/ime/input_method_auralinux.h
+++ b/ui/base/ime/input_method_auralinux.h
@@ -45,8 +45,36 @@ class InputMethodAuraLinux : public InputMethodBase,
virtual void OnDidChangeFocusedClient(TextInputClient* focused_before,
TextInputClient* focused) OVERRIDE;
+ private:
+ // Allows to fire a VKEY_PROCESSKEY key event.
+ void AllowToFireProcessKey(const ui::KeyEvent& event);
+ // Fires a VKEY_PROCESSKEY key event if allowed.
+ void MaybeFireProcessKey();
+ // Stops firing VKEY_PROCESSKEY key events.
+ void StopFiringProcessKey();
+
scoped_ptr<LinuxInputMethodContext> input_method_context_;
+ // IBus in async mode eagerly consumes all the key events first regardless of
+ // whether the underlying IME consumes the key event or not, and makes
+ // gtk_im_context_filter_keypress() always return true, and later pushes
+ // the key event back to the GDK event queue when it turns out that the
+ // underlying IME doesn't consume the key event.
+ //
+ // Thus we have to defer a decision whether or not to dispatch a
+ // VKEY_PROCESSKEY key event. Unlike other InputMethod's subclasses,
+ // DispatchKeyEvent() in this class does not directly dispatch a
+ // VKEY_PROCESSKEY event, OnCommit or OnPreedit{Start,Changed,End} dispatch
+ // a VKEY_PROCESSKEY event instead.
+ //
+ // Because of this hack, there could be chances that we accidentally dispatch
+ // VKEY_PROCESSKEY events and other key events in out of order.
+ //
+ // |allowed_to_fire_vkey_process_key_| is used not to dispatch a
+ // VKEY_PROCESSKEY event twice for a single key event.
+ bool allowed_to_fire_vkey_process_key_;
+ int vkey_processkey_flags_;
+
DISALLOW_COPY_AND_ASSIGN(InputMethodAuraLinux);
};
« no previous file with comments | « no previous file | ui/base/ime/input_method_auralinux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698