Chromium Code Reviews| Index: ui/gfx/render_text_mac.cc |
| diff --git a/ui/gfx/render_text_mac.cc b/ui/gfx/render_text_mac.cc |
| index aa33fc019d26e165ed49205b0ab383540d0b4add..70df27ff3e16edd3fbd6154d0e25b072d9739a7f 100644 |
| --- a/ui/gfx/render_text_mac.cc |
| +++ b/ui/gfx/render_text_mac.cc |
| @@ -17,7 +17,8 @@ |
| namespace gfx { |
| -RenderTextMac::RenderTextMac() : common_baseline_(0), runs_valid_(false) { |
| +RenderTextMac::RenderTextMac() |
| + : common_baseline_(0), runs_valid_(false) { |
| } |
| RenderTextMac::~RenderTextMac() { |
| @@ -27,6 +28,14 @@ scoped_ptr<RenderText> RenderTextMac::CreateInstanceOfSameType() const { |
| return scoped_ptr<RenderTextMac>(new RenderTextMac); |
| } |
| +const base::string16& RenderTextMac::GetLayoutText() { |
| + if (elide_behavior() == NO_ELIDE || |
|
msw
2015/02/13 05:53:37
Is this check and early return really needed? Won'
oshima
2015/02/13 21:03:11
Nope. This was from attempt to do something simila
|
| + elide_behavior() == FADE_TAIL) { |
| + return layout_text(); |
| + } |
| + return text_elided() ? display_text() : layout_text(); |
| +} |
| + |
| Size RenderTextMac::GetStringSize() { |
| EnsureLayout(); |
| return Size(std::ceil(string_size_.width()), string_size_.height()); |
| @@ -87,12 +96,12 @@ std::vector<Rect> RenderTextMac::GetSubstringBounds(const Range& range) { |
| return std::vector<Rect>(); |
| } |
| -size_t RenderTextMac::TextIndexToLayoutIndex(size_t index) const { |
| +size_t RenderTextMac::TextIndexToLayoutIndex(size_t index) { |
| // TODO(asvitkine): Implement this. http://crbug.com/131618 |
| return index; |
| } |
| -size_t RenderTextMac::LayoutIndexToTextIndex(size_t index) const { |
| +size_t RenderTextMac::LayoutIndexToTextIndex(size_t index) { |
| // TODO(asvitkine): Implement this. http://crbug.com/131618 |
| return index; |
| } |
| @@ -102,13 +111,23 @@ bool RenderTextMac::IsValidCursorIndex(size_t index) { |
| return IsValidLogicalIndex(index); |
| } |
| -void RenderTextMac::ResetLayout() { |
| +void RenderTextMac::OnLayoutTextAttributeChanged(bool text_changed) { |
| + if (text_changed && |
|
msw
2015/02/13 05:53:37
Can you explain the reasoning here? Why only condi
oshima
2015/02/13 21:03:11
RenderText used to elide text when text changed, a
msw
2015/02/13 22:19:05
I wonder if this needs to unconditionally update t
oshima
2015/02/13 23:24:11
Ah, you're right. I have to call UpdateDisplayText
|
| + elide_behavior() != NO_ELIDE && |
| + elide_behavior() != FADE_TAIL && |
| + !layout_text().empty()) { |
| + UpdateDisplayText(GetContentWidth()); |
|
msw
2015/02/13 05:53:37
Won't passing GetContentWidth here cause the text
oshima
2015/02/13 21:03:11
This is one of the issue I mentioned in the doc.
T
msw
2015/02/13 21:49:23
Acknowledged. (I misread this late last night...)
|
| + } |
| line_.reset(); |
| attributes_.reset(); |
| runs_.clear(); |
| runs_valid_ = false; |
| } |
| +void RenderTextMac::OnDisplayTextAttributeChanged() { |
| + OnLayoutTextAttributeChanged(true); |
| +} |
| + |
| void RenderTextMac::EnsureLayout() { |
| if (line_.get()) |
| return; |