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

Unified Diff: ui/gfx/text_elider.cc

Issue 614103007: Error in popup on Link (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
« no previous file with comments | « ui/gfx/text_elider.h ('k') | ui/gfx/text_elider_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/text_elider.cc
diff --git a/ui/gfx/text_elider.cc b/ui/gfx/text_elider.cc
index 279e5cb3be87ff3142647f3f3ab5d15fde476f97..0f6e5208fa4f1deefd24a856d4515030ea1add3d 100644
--- a/ui/gfx/text_elider.cc
+++ b/ui/gfx/text_elider.cc
@@ -471,7 +471,8 @@ class RectangleText {
float available_pixel_width,
int available_pixel_height,
WordWrapBehavior wrap_behavior,
- std::vector<base::string16>* lines)
+ std::vector<base::string16>* lines,
+ float* max_width)
: font_list_(font_list),
line_height_(font_list.GetHeight()),
available_pixel_width_(available_pixel_width),
@@ -482,7 +483,8 @@ class RectangleText {
last_line_ended_in_lf_(false),
lines_(lines),
insufficient_width_(false),
- insufficient_height_(false) {}
+ insufficient_height_(false),
+ max_width_(max_width) {}
// Perform deferred initializions following creation. Must be called
// before any input can be added via AddString().
@@ -562,6 +564,8 @@ class RectangleText {
// Indicates whether there were too many lines for the available height.
bool insufficient_height_;
+ float* max_width_;
Alexei Svitkine (slow) 2014/10/02 16:59:37 I suggest not making this a pointer, but rather a
+
DISALLOW_COPY_AND_ASSIGN(RectangleText);
};
@@ -691,6 +695,8 @@ int RectangleText::AddWord(const base::string16& word) {
// Word can be made to fit, no need to fragment it.
if ((current_width_ + trimmed_width > available_pixel_width_) && NewLine())
lines_added++;
+ if (max_width_)
+ *max_width_ = std::max(*max_width_, current_width_ + trimmed_width);
// Append the non-trimmed word, in case more words are added after.
AddToCurrentLine(word);
} else {
@@ -744,12 +750,14 @@ int ElideRectangleText(const base::string16& input,
float available_pixel_width,
int available_pixel_height,
WordWrapBehavior wrap_behavior,
- std::vector<base::string16>* lines) {
+ std::vector<base::string16>* lines,
+ float* max_width) {
RectangleText rect(font_list,
available_pixel_width,
available_pixel_height,
wrap_behavior,
- lines);
+ lines,
+ max_width);
rect.Init();
rect.AddString(input);
return rect.Finalize();
« no previous file with comments | « ui/gfx/text_elider.h ('k') | ui/gfx/text_elider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698