OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/views/corewm/tooltip_controller.h" | 5 #include "ui/views/corewm/tooltip_controller.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/location.h" | 10 #include "base/location.h" |
11 #include "base/strings/string_split.h" | 11 #include "base/strings/string_split.h" |
12 #include "base/time/time.h" | 12 #include "base/time/time.h" |
13 #include "ui/aura/client/cursor_client.h" | 13 #include "ui/aura/client/cursor_client.h" |
14 #include "ui/aura/client/drag_drop_client.h" | 14 #include "ui/aura/client/drag_drop_client.h" |
15 #include "ui/aura/env.h" | 15 #include "ui/aura/env.h" |
16 #include "ui/aura/root_window.h" | 16 #include "ui/aura/root_window.h" |
17 #include "ui/aura/window.h" | 17 #include "ui/aura/window.h" |
18 #include "ui/base/events/event.h" | 18 #include "ui/base/events/event.h" |
19 #include "ui/base/resource/resource_bundle.h" | 19 #include "ui/base/resource/resource_bundle.h" |
20 #include "ui/base/text/text_elider.h" | |
21 #include "ui/gfx/font.h" | 20 #include "ui/gfx/font.h" |
22 #include "ui/gfx/point.h" | 21 #include "ui/gfx/point.h" |
23 #include "ui/gfx/rect.h" | 22 #include "ui/gfx/rect.h" |
24 #include "ui/gfx/screen.h" | 23 #include "ui/gfx/screen.h" |
| 24 #include "ui/gfx/text_elider.h" |
25 #include "ui/views/background.h" | 25 #include "ui/views/background.h" |
26 #include "ui/views/border.h" | 26 #include "ui/views/border.h" |
27 #include "ui/views/controls/label.h" | 27 #include "ui/views/controls/label.h" |
28 #include "ui/views/corewm/corewm_switches.h" | 28 #include "ui/views/corewm/corewm_switches.h" |
29 #include "ui/views/widget/widget.h" | 29 #include "ui/views/widget/widget.h" |
30 #include "ui/views/widget/widget_observer.h" | 30 #include "ui/views/widget/widget_observer.h" |
31 | 31 |
32 namespace { | 32 namespace { |
33 | 33 |
34 const SkColor kTooltipBackground = 0xFFFFFFCC; | 34 const SkColor kTooltipBackground = 0xFFFFFFCC; |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 current_width += word_width; | 400 current_width += word_width; |
401 line.append(word); | 401 line.append(word); |
402 } | 402 } |
403 result_lines.push_back(line); | 403 result_lines.push_back(line); |
404 } | 404 } |
405 | 405 |
406 // Clamp number of lines to |kMaxLines|. | 406 // Clamp number of lines to |kMaxLines|. |
407 if (result_lines.size() > kMaxLines) { | 407 if (result_lines.size() > kMaxLines) { |
408 result_lines.resize(kMaxLines); | 408 result_lines.resize(kMaxLines); |
409 // Add ellipses character to last line. | 409 // Add ellipses character to last line. |
410 result_lines[kMaxLines - 1] = ui::TruncateString( | 410 result_lines[kMaxLines - 1] = gfx::TruncateString( |
411 result_lines.back(), result_lines.back().length() - 1); | 411 result_lines.back(), result_lines.back().length() - 1); |
412 } | 412 } |
413 *line_count = result_lines.size(); | 413 *line_count = result_lines.size(); |
414 | 414 |
415 // Flatten the result. | 415 // Flatten the result. |
416 string16 result; | 416 string16 result; |
417 for (std::vector<string16>::iterator l = result_lines.begin(); | 417 for (std::vector<string16>::iterator l = result_lines.begin(); |
418 l != result_lines.end(); ++l) { | 418 l != result_lines.end(); ++l) { |
419 if (!result.empty()) | 419 if (!result.empty()) |
420 result.push_back('\n'); | 420 result.push_back('\n'); |
421 int line_width = font.GetStringWidth(*l); | 421 int line_width = font.GetStringWidth(*l); |
422 // Since we only break at word boundaries, it could happen that due to some | 422 // Since we only break at word boundaries, it could happen that due to some |
423 // very long word, line_width is greater than the available_width. In such | 423 // very long word, line_width is greater than the available_width. In such |
424 // case, we simply truncate at available_width and add ellipses at the end. | 424 // case, we simply truncate at available_width and add ellipses at the end. |
425 if (line_width > available_width) { | 425 if (line_width > available_width) { |
426 *width = available_width; | 426 *width = available_width; |
427 result.append(ui::ElideText(*l, font, available_width, ui::ELIDE_AT_END)); | 427 result.append(gfx::ElideText(*l, font, available_width, |
| 428 gfx::ELIDE_AT_END)); |
428 } else { | 429 } else { |
429 *width = std::max(*width, line_width); | 430 *width = std::max(*width, line_width); |
430 result.append(*l); | 431 result.append(*l); |
431 } | 432 } |
432 } | 433 } |
433 *text = result; | 434 *text = result; |
434 } | 435 } |
435 | 436 |
436 void TooltipController::TooltipTimerFired() { | 437 void TooltipController::TooltipTimerFired() { |
437 UpdateIfRequired(); | 438 UpdateIfRequired(); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
532 int TooltipController::GetTooltipShownTimeout() { | 533 int TooltipController::GetTooltipShownTimeout() { |
533 std::map<aura::Window*, int>::const_iterator it = | 534 std::map<aura::Window*, int>::const_iterator it = |
534 tooltip_shown_timeout_map_.find(tooltip_window_); | 535 tooltip_shown_timeout_map_.find(tooltip_window_); |
535 if (it == tooltip_shown_timeout_map_.end()) | 536 if (it == tooltip_shown_timeout_map_.end()) |
536 return kDefaultTooltipShownTimeoutMs; | 537 return kDefaultTooltipShownTimeoutMs; |
537 return it->second; | 538 return it->second; |
538 } | 539 } |
539 | 540 |
540 } // namespace corewm | 541 } // namespace corewm |
541 } // namespace views | 542 } // namespace views |
OLD | NEW |