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

Unified Diff: ui/gfx/render_text.cc

Issue 8575020: Improve RenderTextWin font fallback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 9 years, 1 month 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
Index: ui/gfx/render_text.cc
===================================================================
--- ui/gfx/render_text.cc (revision 111944)
+++ ui/gfx/render_text.cc (working copy)
@@ -67,8 +67,9 @@
} else if (i->range.end() > new_range.end()) {
i->range.set_start(new_range.end());
break;
- } else
+ } else {
NOTREACHED();
+ }
}
// Add the new range in its sorted location.
style_ranges->insert(i, style_range);
@@ -186,8 +187,8 @@
MoveCursorTo(position);
}
-bool RenderText::MoveCursorTo(const SelectionModel& selection_model) {
- SelectionModel sel(selection_model);
+bool RenderText::MoveCursorTo(const SelectionModel& model) {
+ SelectionModel sel(model);
size_t text_length = text().length();
// Enforce valid selection model components.
if (sel.selection_start() > text_length)
@@ -205,10 +206,12 @@
sel.set_caret_placement(end.caret_placement());
}
- if (!IsCursorablePosition(sel.selection_start()) ||
- !IsCursorablePosition(sel.selection_end()) ||
- !IsCursorablePosition(sel.caret_pos()))
+ if (!IsCursorablePosition(sel.selection_start(), false) ||
+ !IsCursorablePosition(sel.selection_end(), false) ||
+ !IsCursorablePosition(sel.caret_pos(),
+ (sel.caret_placement() == SelectionModel::TRAILING))) {
xji 2011/11/29 21:15:48 I did not quite get the reason of introducing "boo
return false;
+ }
bool changed = !sel.Equals(selection_model_);
SetSelectionModel(sel);
@@ -227,7 +230,7 @@
size_t start = std::min(range.start(), text_length);
size_t end = std::min(range.end(), text_length);
- if (!IsCursorablePosition(start) || !IsCursorablePosition(end))
+ if (!IsCursorablePosition(start, false) || !IsCursorablePosition(end, false))
return false;
size_t pos = end;
@@ -410,7 +413,7 @@
// binary searching the cursor position.
// TODO(oshima): use the center of character instead of edge.
// Binary search may not work for language like Arabic.
- while (std::abs(static_cast<long>(right_pos - left_pos)) > 1) {
+ while (std::abs(right_pos - left_pos) > 1) {
int pivot_pos = left_pos + (right_pos - left_pos) / 2;
int pivot = font.GetStringWidth(text().substr(0, pivot_pos));
if (pivot < x) {
@@ -479,8 +482,7 @@
BreakType break_type) {
if (break_type == LINE_BREAK)
return LeftEndSelectionModel();
- size_t pos = std::max(static_cast<long>(current.selection_end() - 1),
- static_cast<long>(0));
+ size_t pos = std::max<int>(current.selection_end() - 1, 0);
if (break_type == CHARACTER_BREAK)
return SelectionModel(pos, pos, SelectionModel::LEADING);
@@ -610,8 +612,7 @@
selection_model_.set_selection_start(selection_model.selection_start());
DCHECK_LE(selection_model.selection_end(), text().length());
selection_model_.set_selection_end(selection_model.selection_end());
- DCHECK_LT(selection_model.caret_pos(),
- std::max(text().length(), static_cast<size_t>(1)));
+ DCHECK_LT(selection_model.caret_pos(), std::max<size_t>(text().length(), 1));
selection_model_.set_caret_pos(selection_model.caret_pos());
selection_model_.set_caret_placement(selection_model.caret_placement());
@@ -625,7 +626,7 @@
SelectionModel::CaretPlacement placement = (caret_pos == cursor) ?
SelectionModel::LEADING : SelectionModel::TRAILING;
size_t selection_start = select ? GetSelectionStart() : cursor;
- if (IsCursorablePosition(cursor)) {
+ if (IsCursorablePosition(cursor, false)) {
SelectionModel sel(selection_start, cursor, caret_pos, placement);
SetSelectionModel(sel);
}

Powered by Google App Engine
This is Rietveld 408576698