| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/views/controls/textfield/textfield.h" | 5 #include "ui/views/controls/textfield/textfield.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
| 10 #include "ui/accessibility/ax_view_state.h" | 10 #include "ui/accessibility/ax_view_state.h" |
| (...skipping 1472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1483 gfx::Rect rect = GetRenderText()->GetUpdatedCursorBounds(); | 1483 gfx::Rect rect = GetRenderText()->GetUpdatedCursorBounds(); |
| 1484 ConvertRectToScreen(this, &rect); | 1484 ConvertRectToScreen(this, &rect); |
| 1485 return rect; | 1485 return rect; |
| 1486 } | 1486 } |
| 1487 | 1487 |
| 1488 bool Textfield::GetCompositionCharacterBounds(uint32 index, | 1488 bool Textfield::GetCompositionCharacterBounds(uint32 index, |
| 1489 gfx::Rect* rect) const { | 1489 gfx::Rect* rect) const { |
| 1490 DCHECK(rect); | 1490 DCHECK(rect); |
| 1491 if (!HasCompositionText()) | 1491 if (!HasCompositionText()) |
| 1492 return false; | 1492 return false; |
| 1493 gfx::RenderText* render_text = GetRenderText(); | 1493 gfx::Range composition_range; |
| 1494 const gfx::Range& composition_range = render_text->GetCompositionRange(); | 1494 model_->GetCompositionTextRange(&composition_range); |
| 1495 DCHECK(!composition_range.is_empty()); | 1495 DCHECK(!composition_range.is_empty()); |
| 1496 | 1496 |
| 1497 size_t text_index = composition_range.start() + index; | 1497 size_t text_index = composition_range.start() + index; |
| 1498 if (composition_range.end() <= text_index) | 1498 if (composition_range.end() <= text_index) |
| 1499 return false; | 1499 return false; |
| 1500 gfx::RenderText* render_text = GetRenderText(); |
| 1500 if (!render_text->IsValidCursorIndex(text_index)) { | 1501 if (!render_text->IsValidCursorIndex(text_index)) { |
| 1501 text_index = render_text->IndexOfAdjacentGrapheme( | 1502 text_index = render_text->IndexOfAdjacentGrapheme( |
| 1502 text_index, gfx::CURSOR_BACKWARD); | 1503 text_index, gfx::CURSOR_BACKWARD); |
| 1503 } | 1504 } |
| 1504 if (text_index < composition_range.start()) | 1505 if (text_index < composition_range.start()) |
| 1505 return false; | 1506 return false; |
| 1506 const gfx::SelectionModel caret(text_index, gfx::CURSOR_BACKWARD); | 1507 const gfx::SelectionModel caret(text_index, gfx::CURSOR_BACKWARD); |
| 1507 *rect = render_text->GetCursorBounds(caret, false); | 1508 *rect = render_text->GetCursorBounds(caret, false); |
| 1508 ConvertRectToScreen(this, rect); | 1509 ConvertRectToScreen(this, rect); |
| 1509 return true; | 1510 return true; |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1885 RequestFocus(); | 1886 RequestFocus(); |
| 1886 model_->MoveCursorTo(mouse); | 1887 model_->MoveCursorTo(mouse); |
| 1887 if (!selection_clipboard_text.empty()) { | 1888 if (!selection_clipboard_text.empty()) { |
| 1888 model_->InsertText(selection_clipboard_text); | 1889 model_->InsertText(selection_clipboard_text); |
| 1889 UpdateAfterChange(true, true); | 1890 UpdateAfterChange(true, true); |
| 1890 } | 1891 } |
| 1891 OnAfterUserAction(); | 1892 OnAfterUserAction(); |
| 1892 } | 1893 } |
| 1893 | 1894 |
| 1894 } // namespace views | 1895 } // namespace views |
| OLD | NEW |