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

Unified Diff: chrome/browser/chromeos/input_method/ibus_ui_controller.cc

Issue 10066008: Partial fix for crbug.com/120597. Send the current cursor location when one of the Japanese IMEs is (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 8 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: chrome/browser/chromeos/input_method/ibus_ui_controller.cc
diff --git a/chrome/browser/chromeos/input_method/ibus_ui_controller.cc b/chrome/browser/chromeos/input_method/ibus_ui_controller.cc
index 0da8a3b9fb7c00dd740607dded037c3a0fca67d7..55136d1fcd8186919e8081354f1a6db68ddf3631 100644
--- a/chrome/browser/chromeos/input_method/ibus_ui_controller.cc
+++ b/chrome/browser/chromeos/input_method/ibus_ui_controller.cc
@@ -10,29 +10,34 @@
#include <sstream>
+#include "ash/shell.h"
#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
#include "base/string_util.h"
-#include "third_party/mozc/session/candidates_lite.pb.h"
-
-#if defined(HAVE_IBUS)
-#include "ash/shell.h"
+#include "chrome/browser/chromeos/input_method/input_method_descriptor.h"
#include "chrome/browser/chromeos/input_method/input_method_manager.h"
#include "chrome/browser/chromeos/input_method/input_method_util.h"
+#include "third_party/mozc/session/candidates_lite.pb.h"
#include "ui/aura/client/aura_constants.h"
#include "ui/aura/root_window.h"
#include "ui/base/ime/ibus_client_impl.h"
#include "ui/base/ime/input_method_ibus.h"
+namespace chromeos {
+namespace input_method {
namespace {
-// The list of input method IDs for Mozc Japanese IMEs.
-const char* kMozcJaInputMethodIds[] = { "mozc", "mozc-jp", "mozc-dv" };
+bool IsActive(const std::string& input_method_id,
+ const InputMethodDescriptors* descriptors) {
+ for (size_t i = 0; i < descriptors->size(); ++i) {
+ if (descriptors->at(i).id() == input_method_id) {
+ return true;
+ }
+ }
+ return false;
+}
} // namespace
-#endif
-
-namespace chromeos {
-namespace input_method {
InputMethodLookupTable::InputMethodLookupTable()
: visible(false),
@@ -294,12 +299,16 @@ class IBusUiControllerImpl : public IBusUiController {
int32 y,
int32 w,
int32 h) OVERRIDE {
+ // The list of input method IDs for Mozc Japanese IMEs.
+ const char* kMozcJaInputMethodIds[] = { "mozc", "mozc-jp", "mozc-dv" };
+
if (!ui_)
return;
- const std::string current_input_method_id = GetCurrentInputMethodId();
+ scoped_ptr<InputMethodDescriptors> input_methods(
+ InputMethodManager::GetInstance()->GetSupportedInputMethods());
for (size_t i = 0; i < arraysize(kMozcJaInputMethodIds); ++i) {
- if (kMozcJaInputMethodIds[i] == current_input_method_id) {
+ if (IsActive(kMozcJaInputMethodIds[i], input_methods.get())) {
// Mozc Japanese IMEs require cursor location information to show the
// suggestion window in a correct position.
ui::internal::IBusClientImpl::SetCursorLocation(context, x, y, w, h);
@@ -738,5 +747,10 @@ IBusUiController* IBusUiController::Create() {
IBusUiController::~IBusUiController() {
}
+bool IsActiveForTesting(const std::string& input_method_id,
+ const InputMethodDescriptors* descriptors) {
+ return IsActive(input_method_id, descriptors);
+}
+
} // namespace input_method
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698