OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/base/win/ime_input.h" | 5 #include "ui/base/win/ime_input.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/string16.h" | 9 #include "base/string16.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 } | 332 } |
333 if (target_end < length) { | 333 if (target_end < length) { |
334 underline.start_offset = target_end; | 334 underline.start_offset = target_end; |
335 underline.end_offset = length; | 335 underline.end_offset = length; |
336 underline.thick = false; | 336 underline.thick = false; |
337 composition->underlines.push_back(underline); | 337 composition->underlines.push_back(underline); |
338 } | 338 } |
339 } | 339 } |
340 } | 340 } |
341 | 341 |
342 bool ImeInput::GetString(HIMC imm_context, WPARAM lparam, int type, | 342 bool ImeInput::GetString(HIMC imm_context, |
| 343 WPARAM lparam, |
| 344 int type, |
343 string16* result) { | 345 string16* result) { |
344 bool ret = false; | 346 if (!(lparam & type)) |
345 if (lparam & type) { | 347 return false; |
346 int string_size = ::ImmGetCompositionString(imm_context, type, NULL, 0); | 348 LONG string_size = ::ImmGetCompositionString(imm_context, type, NULL, 0); |
347 if (string_size > 0) { | 349 if (string_size <= 0) |
348 int string_length = string_size / sizeof(wchar_t); | 350 return false; |
349 wchar_t *string_data = WriteInto(result, string_length + 1); | 351 DCHECK_EQ(0u, string_size % sizeof(wchar_t)); |
350 if (string_data) { | 352 ::ImmGetCompositionString(imm_context, type, |
351 // Fill the given result object. | 353 WriteInto(result, (string_size / sizeof(wchar_t)) + 1), string_size); |
352 ::ImmGetCompositionString(imm_context, type, string_data, string_size); | 354 return true; |
353 ret = true; | |
354 } | |
355 } | |
356 } | |
357 return ret; | |
358 } | 355 } |
359 | 356 |
360 bool ImeInput::GetResult(HWND window_handle, LPARAM lparam, string16* result) { | 357 bool ImeInput::GetResult(HWND window_handle, LPARAM lparam, string16* result) { |
361 bool ret = false; | 358 bool ret = false; |
362 HIMC imm_context = ::ImmGetContext(window_handle); | 359 HIMC imm_context = ::ImmGetContext(window_handle); |
363 if (imm_context) { | 360 if (imm_context) { |
364 ret = GetString(imm_context, lparam, GCS_RESULTSTR, result); | 361 ret = GetString(imm_context, lparam, GCS_RESULTSTR, result); |
365 ::ImmReleaseContext(window_handle, imm_context); | 362 ::ImmReleaseContext(window_handle, imm_context); |
366 } | 363 } |
367 return ret; | 364 return ret; |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 keystate[VK_RCONTROL] = 0; | 549 keystate[VK_RCONTROL] = 0; |
553 keystate[VK_LCONTROL] = 0; | 550 keystate[VK_LCONTROL] = 0; |
554 for (int i = 0; i <= VK_PACKET; ++i) { | 551 for (int i = 0; i <= VK_PACKET; ++i) { |
555 if (keystate[i] & kKeyDownMask) | 552 if (keystate[i] & kKeyDownMask) |
556 return false; | 553 return false; |
557 } | 554 } |
558 return true; | 555 return true; |
559 } | 556 } |
560 | 557 |
561 } // namespace ui | 558 } // namespace ui |
OLD | NEW |