Index: win8/metro_driver/ime/text_store.cc |
diff --git a/win8/metro_driver/ime/text_store.cc b/win8/metro_driver/ime/text_store.cc |
index e406e1b6115b10d8b9265962650406dd91dcfc96..0c0389bfb3c8f340f9903bf38b28c90f7edcacb4 100644 |
--- a/win8/metro_driver/ime/text_store.cc |
+++ b/win8/metro_driver/ime/text_store.cc |
@@ -765,7 +765,7 @@ bool TextStore::GetCompositionStatus( |
while (true) { |
base::win::ScopedComPtr<ITfRange> range; |
if (ranges->Next(1, range.Receive(), NULL) != S_OK) |
- break; |
+ return true; |
base::win::ScopedVariant value; |
base::win::ScopedComPtr<IEnumTfPropertyValue> enum_prop_value; |
if (FAILED(track_property->GetValue(read_only_edit_cookie, range, |
@@ -777,16 +777,16 @@ bool TextStore::GetCompositionStatus( |
TF_PROPERTYVAL property_value; |
bool is_composition = false; |
- bool has_display_attribute = false; |
- TF_DISPLAYATTRIBUTE display_attribute; |
+ metro_viewer::UnderlineInfo underline; |
while (enum_prop_value->Next(1, &property_value, NULL) == S_OK) { |
if (IsEqualGUID(property_value.guidId, GUID_PROP_COMPOSING)) { |
is_composition = (property_value.varValue.lVal == TRUE); |
} else if (IsEqualGUID(property_value.guidId, GUID_PROP_ATTRIBUTE)) { |
TfGuidAtom guid_atom = |
static_cast<TfGuidAtom>(property_value.varValue.lVal); |
+ TF_DISPLAYATTRIBUTE display_attribute; |
if (GetDisplayAttribute(guid_atom, &display_attribute)) |
- has_display_attribute = true; |
+ underline.thick = !!display_attribute.fBoldLine; |
} |
VariantClear(&property_value.varValue); |
} |
@@ -795,18 +795,14 @@ bool TextStore::GetCompositionStatus( |
range_acp.QueryFrom(range); |
LONG start_pos, length; |
range_acp->GetExtent(&start_pos, &length); |
- if (!is_composition) { |
- if (*committed_size < static_cast<size_t>(start_pos + length)) |
- *committed_size = start_pos + length; |
- } else { |
- metro_viewer::UnderlineInfo underline; |
+ if (is_composition) { |
underline.start_offset = start_pos; |
underline.end_offset = start_pos + length; |
- underline.thick = !!display_attribute.fBoldLine; |
undelines->push_back(underline); |
+ } else if (*committed_size < static_cast<size_t>(start_pos + length)) { |
+ *committed_size = start_pos + length; |
} |
} |
- return true; |
} |
bool TextStore::CancelComposition() { |