summaryrefslogtreecommitdiffstats
path: root/ui/views/controls
diff options
context:
space:
mode:
authoryoichio@chromium.org <yoichio@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-03 05:00:27 +0000
committeryoichio@chromium.org <yoichio@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-03 05:00:27 +0000
commitcfe88d2853d7c27e6cb03b31437353b941eef0e1 (patch)
treef105b26d2ff9bcd3a7d1767732ede578cf881407 /ui/views/controls
parent8279a50f3bff72c65bd18dd9dbd1beae8964fae5 (diff)
downloadchromium_src-cfe88d2853d7c27e6cb03b31437353b941eef0e1.zip
chromium_src-cfe88d2853d7c27e6cb03b31437353b941eef0e1.tar.gz
chromium_src-cfe88d2853d7c27e6cb03b31437353b941eef0e1.tar.bz2
NativeTextfieldWin uses RichEdit 4.1 which supports TSF API.
When TSF awareness is required, we should use Window Class which supports RichEdit 4.1. BUG=137627 Review URL: https://chromiumcodereview.appspot.com/10823253 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154657 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/controls')
-rw-r--r--ui/views/controls/textfield/native_textfield_win.cc18
-rw-r--r--ui/views/controls/textfield/native_textfield_win.h8
2 files changed, 20 insertions, 6 deletions
diff --git a/ui/views/controls/textfield/native_textfield_win.cc b/ui/views/controls/textfield/native_textfield_win.cc
index 6baebf6..73cbf1e 100644
--- a/ui/views/controls/textfield/native_textfield_win.cc
+++ b/ui/views/controls/textfield/native_textfield_win.cc
@@ -84,7 +84,7 @@ NativeTextfieldWin::ScopedSuspendUndo::~ScopedSuspendUndo() {
///////////////////////////////////////////////////////////////////////////////
// NativeTextfieldWin
-bool NativeTextfieldWin::did_load_library_ = false;
+HMODULE NativeTextfieldWin::loaded_libarary_module_ = false;
NativeTextfieldWin::NativeTextfieldWin(Textfield* textfield)
: textfield_(textfield),
@@ -97,8 +97,11 @@ NativeTextfieldWin::NativeTextfieldWin(Textfield* textfield)
ime_composition_length_(0),
container_view_(new NativeViewHost),
bg_color_(0) {
- if (!did_load_library_)
- did_load_library_ = !!LoadLibrary(L"riched20.dll");
+ if (!loaded_libarary_module_) {
+ // msftedit.dll is RichEdit ver 4.1.
+ // This version is available from WinXP SP1 and has TSF support.
+ loaded_libarary_module_ = LoadLibrary(L"msftedit.dll");
+ }
DWORD style = kDefaultEditStyle | ES_AUTOHSCROLL;
if (textfield_->style() & Textfield::STYLE_OBSCURED)
@@ -565,6 +568,15 @@ void NativeTextfieldWin::OnCopy() {
}
}
+LRESULT NativeTextfieldWin::OnCreate(const CREATESTRUCTW* /*create_struct*/) {
+ if (base::win::IsTsfAwareRequired()) {
+ // Enable TSF support of RichEdit.
+ SetEditStyle(SES_USECTF, SES_USECTF);
+ }
+ SetMsgHandled(FALSE);
+ return 0;
+}
+
void NativeTextfieldWin::OnCut() {
if (textfield_->read_only() || textfield_->IsObscured())
return;
diff --git a/ui/views/controls/textfield/native_textfield_win.h b/ui/views/controls/textfield/native_textfield_win.h
index acf15a9..513fa52 100644
--- a/ui/views/controls/textfield/native_textfield_win.h
+++ b/ui/views/controls/textfield/native_textfield_win.h
@@ -44,7 +44,7 @@ class NativeTextfieldWin
public NativeTextfieldWrapper,
public ui::SimpleMenuModel::Delegate {
public:
- DECLARE_WND_CLASS(L"ViewsTextfieldEdit");
+ DECLARE_WND_SUPERCLASS(L"ViewsTextfieldEdit", MSFTEDIT_CLASS);
explicit NativeTextfieldWin(Textfield* parent);
~NativeTextfieldWin();
@@ -119,6 +119,7 @@ class NativeTextfieldWin
MSG_WM_CHAR(OnChar)
MSG_WM_CONTEXTMENU(OnContextMenu)
MSG_WM_COPY(OnCopy)
+ MSG_WM_CREATE(OnCreate)
MSG_WM_CUT(OnCut)
MESSAGE_HANDLER_EX(WM_GETOBJECT, OnGetObject)
MESSAGE_HANDLER_EX(WM_IME_CHAR, OnImeChar)
@@ -183,6 +184,7 @@ class NativeTextfieldWin
void OnChar(TCHAR key, UINT repeat_count, UINT flags);
void OnContextMenu(HWND window, const POINT& point);
void OnCopy();
+ LRESULT OnCreate(const CREATESTRUCTW* create_struct);
void OnCut();
LRESULT OnGetObject(UINT message, WPARAM wparam, LPARAM lparam);
LRESULT OnImeChar(UINT message, WPARAM wparam, LPARAM lparam);
@@ -250,6 +252,8 @@ class NativeTextfieldWin
// Generates the contents of the context menu.
void BuildContextMenu();
+ static HMODULE loaded_libarary_module_;
+
// The Textfield this object is bound to.
Textfield* textfield_;
@@ -269,8 +273,6 @@ class NativeTextfieldWin
// If true, the mouse is over the edit.
bool contains_mouse_;
- static bool did_load_library_;
-
// The contents of the context menu for the edit.
scoped_ptr<ui::SimpleMenuModel> context_menu_contents_;
scoped_ptr<MenuRunner> context_menu_runner_;