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

Unified Diff: ui/base/win/ime_input.h

Issue 6709023: Move some common ime code to ui/base/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Always put the composition cursor to the selection end. Created 9 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
« no previous file with comments | « ui/base/ime/composition_text.cc ('k') | ui/base/win/ime_input.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/win/ime_input.h
diff --git a/chrome/browser/ime_input.h b/ui/base/win/ime_input.h
similarity index 85%
rename from chrome/browser/ime_input.h
rename to ui/base/win/ime_input.h
index 66526b2c87d10e5267284f851868ec9ab9280d50..9e8ab7522b6c6a52cbf88be2da2bdb1810ee8c93 100644
--- a/chrome/browser/ime_input.h
+++ b/ui/base/win/ime_input.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_IME_INPUT_H_
-#define CHROME_BROWSER_IME_INPUT_H_
+#ifndef UI_BASE_WIN_IME_INPUT_H_
+#define UI_BASE_WIN_IME_INPUT_H_
#pragma once
#include <windows.h>
@@ -12,9 +12,14 @@
#include <vector>
#include "base/basictypes.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebCompositionUnderline.h"
+#include "base/i18n/rtl.h"
+#include "base/string16.h"
#include "ui/gfx/rect.h"
+namespace ui {
+
+struct CompositionText;
+
// This header file defines a struct and a class used for encapsulating IMM32
// APIs, controls IMEs attached to a window, and enables the 'on-the-spot'
// input without deep knowledge about the APIs, i.e. knowledge about the
@@ -54,32 +59,6 @@
// - ImeInput::SetInputLanguage().
// An application CAN call ::DefWindowProc().
-// This struct represents the status of an ongoing composition.
-struct ImeComposition {
- // Represents the start position of the selection range in the IME
- // composition.
- int selection_start;
-
- // Represents the end position of the selection range in the IME composition.
- // If |selection_start| and |selection_end| are equal, then it represents the
- // cursor position.
- int selection_end;
-
- // Represents the type of the string in the 'ime_string' parameter.
- // Its possible values and description are listed bwlow:
- // Value Description
- // 0 The parameter is not used.
- // GCS_RESULTSTR The parameter represents a result string.
- // GCS_COMPSTR The parameter represents a composition string.
- int string_type;
-
- // Represents the string retrieved from IME (Input Method Editor)
- std::wstring ime_string;
-
- // Contains the underline information of the composition string.
- std::vector<WebKit::WebCompositionUnderline> underlines;
-};
-
// This class controls the IMM (Input Method Manager) through IMM32 APIs and
// enables it to retrieve the string being controled by the IMM. (I wrote
// a note to describe the reason why I do not use 'IME' but 'IMM' below.)
@@ -134,8 +113,9 @@ class ImeInput {
// PLEASE DO NOT CALL ::DefWindowProc() IF THIS VALUE IS TRUE!
// All the window styles set in this function are over-written when
// calling ::DefWindowProc() after returning this function.
- void SetImeWindowStyle(HWND window_handle, UINT message,
- WPARAM wparam, LPARAM lparam, BOOL* handled);
+ // Returns the value returned by DefWindowProc.
+ LRESULT SetImeWindowStyle(HWND window_handle, UINT message,
+ WPARAM wparam, LPARAM lparam, BOOL* handled);
// Destroys the IME windows and all the resources attached to them.
// Parameters
@@ -173,8 +153,8 @@ class ImeInput {
// the same parameter of a WM_IME_COMPOSITION message handler.
// This parameter is used for checking if the ongoing composition has
// its result string,
- // * composition [out] (ImeComposition)
- // Represents the struct contains the composition result.
+ // * result [out] (string16)
+ // Represents the object contains the composition result.
// Return values
// * true
// The ongoing composition has a composition result.
@@ -183,8 +163,7 @@ class ImeInput {
// Remarks
// This function is designed for being called from WM_IME_COMPOSITION
// message handlers.
- bool GetResult(HWND window_handle, LPARAM lparam,
- ImeComposition* composition);
+ bool GetResult(HWND window_handle, LPARAM lparam, string16* result);
// Retrieves the current composition status of the ongoing composition.
// Parameters
@@ -195,7 +174,7 @@ class ImeInput {
// the same parameter of a WM_IME_COMPOSITION message handler.
// This parameter is used for checking if the ongoing composition has
// its result string,
- // * composition [out] (ImeComposition)
+ // * composition [out] (Composition)
// Represents the struct contains the composition status.
// Return values
// * true
@@ -206,7 +185,7 @@ class ImeInput {
// This function is designed for being called from WM_IME_COMPOSITION
// message handlers.
bool GetComposition(HWND window_handle, LPARAM lparam,
- ImeComposition* composition);
+ CompositionText* composition);
// Enables the IME attached to the given window, i.e. allows user-input
// events to be dispatched to the IME.
@@ -248,10 +227,31 @@ class ImeInput {
// This rectangle is used for controlling the positions of IME windows.
void UpdateCaretRect(HWND window_handle, const gfx::Rect& caret_rect);
+ // Returns the current input language id.
+ LANGID input_language_id() const { return input_language_id_; }
+
+ // Returns BCP-47 tag name of the current input language.
+ std::string GetInputLanguageName() const;
+
+ // Returns the text direction of the current input language.
+ base::i18n::TextDirection GetTextDirection() const;
+
+
+ // Helper functions ----------------------------------------------------------
+
+ // Checks if there is any RTL keyboard layout installed in the system.
+ static bool IsRTLKeyboardLayoutInstalled();
+
+ // Checks if the user pressed both Ctrl and right or left Shift keys to
+ // requrest to change the text direction and layout alignment explicitly.
+ // Returns true if only a Ctrl key and a Shift key are down. The desired text
+ // direction will be stored in |*direction|.
+ static bool IsCtrlShiftPressed(base::i18n::TextDirection* direction);
+
protected:
// Retrieves the composition information.
void GetCompositionInfo(HIMC imm_context, LPARAM lparam,
- ImeComposition* composition);
+ CompositionText* composition);
// Updates the position of the IME windows.
void MoveImeWindow(HWND window_handle, HIMC imm_context);
@@ -260,8 +260,7 @@ class ImeInput {
void CompleteComposition(HWND window_handle, HIMC imm_context);
// Retrieves a string from the IMM.
- bool GetString(HIMC imm_context, WPARAM lparam, int type,
- ImeComposition* composition);
+ bool GetString(HIMC imm_context, WPARAM lparam, int type, string16* result);
private:
// Represents whether or not there is an ongoing composition in a browser
@@ -309,4 +308,6 @@ class ImeInput {
DISALLOW_COPY_AND_ASSIGN(ImeInput);
};
-#endif // CHROME_BROWSER_IME_INPUT_H_
+} // namespace ui
+
+#endif // UI_BASE_WIN_IME_INPUT_H_
« no previous file with comments | « ui/base/ime/composition_text.cc ('k') | ui/base/win/ime_input.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698