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

Unified Diff: ui/gfx/render_text_harfbuzz.cc

Issue 1015533016: Move allow_character_break property to RenderText. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months 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_harfbuzz.cc
diff --git a/ui/gfx/render_text_harfbuzz.cc b/ui/gfx/render_text_harfbuzz.cc
index 63b0e4e0cd79d009e83cb9989e680f987def1e06..0cd2dadea630cd2f5f9b1f3d09f893497d38477d 100644
--- a/ui/gfx/render_text_harfbuzz.cc
+++ b/ui/gfx/render_text_harfbuzz.cc
@@ -223,6 +223,7 @@ class HarfBuzzLineBreaker {
int min_baseline,
float min_height,
bool multiline,
+ bool allow_character_break,
const base::string16& text,
const BreakList<size_t>* words,
const internal::TextRunList& run_list)
@@ -230,6 +231,7 @@ class HarfBuzzLineBreaker {
min_baseline_(min_baseline),
min_height_(min_height),
multiline_(multiline),
+ allow_character_break_(allow_character_break),
text_(text),
words_(words),
run_list_(run_list),
@@ -335,7 +337,7 @@ class HarfBuzzLineBreaker {
word_width += char_width;
if (*width > available_width) {
- if (line_x_ != 0 || word_width < *width) {
+ if (!allow_character_break_ && (line_x_ != 0 || word_width < *width)) {
msw 2015/03/25 20:54:15 I don't think this matches the current Label behav
Jun Mukai 2015/03/26 01:35:08 Rewritten the logic, and enriched the tests. PTAL.
// Roll back one word.
*width -= word_width;
*next_char = std::max(word->first, start_char);
@@ -444,6 +446,7 @@ class HarfBuzzLineBreaker {
const int min_baseline_;
const float min_height_;
const bool multiline_;
+ const bool allow_character_break_;
const base::string16& text_;
const BreakList<size_t>* const words_;
const internal::TextRunList& run_list_;
@@ -986,7 +989,8 @@ void RenderTextHarfBuzz::EnsureLayout() {
HarfBuzzLineBreaker line_breaker(
display_rect().width(), font_list().GetBaseline(),
std::max(font_list().GetHeight(), min_line_height()), multiline(),
- GetDisplayText(), multiline() ? &GetLineBreaks() : nullptr, *run_list);
+ allow_character_break(), GetDisplayText(),
+ multiline() ? &GetLineBreaks() : nullptr, *run_list);
// TODO(vadimt): Remove ScopedTracker below once crbug.com/431326 is fixed.
tracked_objects::ScopedTracker tracking_profile3(

Powered by Google App Engine
This is Rietveld 408576698