OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/views/bookmark_bar_view.h" | 5 #include "chrome/browser/views/bookmark_bar_view.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "app/gfx/canvas.h" | 9 #include "app/gfx/canvas.h" |
10 #include "app/gfx/text_elider.h" | 10 #include "app/gfx/text_elider.h" |
(...skipping 25 matching lines...) Expand all Loading... |
36 #include "grit/theme_resources.h" | 36 #include "grit/theme_resources.h" |
37 #include "skia/ext/skia_utils.h" | 37 #include "skia/ext/skia_utils.h" |
38 #include "views/controls/button/menu_button.h" | 38 #include "views/controls/button/menu_button.h" |
39 #include "views/controls/menu/menu_item_view.h" | 39 #include "views/controls/menu/menu_item_view.h" |
40 #include "views/drag_utils.h" | 40 #include "views/drag_utils.h" |
41 #include "views/view_constants.h" | 41 #include "views/view_constants.h" |
42 #include "views/widget/tooltip_manager.h" | 42 #include "views/widget/tooltip_manager.h" |
43 #include "views/widget/widget.h" | 43 #include "views/widget/widget.h" |
44 #include "views/window/window.h" | 44 #include "views/window/window.h" |
45 | 45 |
46 #if defined(OS_WIN) | |
47 #include "app/win_util.h" | |
48 #include "base/base_drag_source.h" | |
49 #endif | |
50 | |
51 using views::CustomButton; | 46 using views::CustomButton; |
52 using views::DropTargetEvent; | 47 using views::DropTargetEvent; |
53 using views::MenuButton; | 48 using views::MenuButton; |
54 using views::MenuItemView; | 49 using views::MenuItemView; |
55 using views::View; | 50 using views::View; |
56 | 51 |
57 // How much we want the bookmark bar to overlap the toolbar when in its | 52 // How much we want the bookmark bar to overlap the toolbar when in its |
58 // 'always shown' mode. | 53 // 'always shown' mode. |
59 static const double kToolbarOverlap = 4.0; | 54 static const double kToolbarOverlap = 4.0; |
60 | 55 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 129 |
135 // Returns the tooltip text for the specified url and title. The returned | 130 // Returns the tooltip text for the specified url and title. The returned |
136 // text is clipped to fit within the bounds of the monitor. | 131 // text is clipped to fit within the bounds of the monitor. |
137 // | 132 // |
138 // Note that we adjust the direction of both the URL and the title based on the | 133 // Note that we adjust the direction of both the URL and the title based on the |
139 // locale so that pure LTR strings are displayed properly in RTL locales. | 134 // locale so that pure LTR strings are displayed properly in RTL locales. |
140 static std::wstring CreateToolTipForURLAndTitle(const gfx::Point& screen_loc, | 135 static std::wstring CreateToolTipForURLAndTitle(const gfx::Point& screen_loc, |
141 const GURL& url, | 136 const GURL& url, |
142 const std::wstring& title, | 137 const std::wstring& title, |
143 const std::wstring& languages) { | 138 const std::wstring& languages) { |
144 #if defined(OS_WIN) | 139 int max_width = views::TooltipManager::GetMaxWidth(screen_loc.x(), |
145 gfx::Rect monitor_bounds = win_util::GetMonitorBoundsForRect( | 140 screen_loc.y()); |
146 gfx::Rect(screen_loc.x(), screen_loc.y(), 1, 1)); | |
147 #else | |
148 gfx::Rect monitor_bounds(0, 0, 10000, 10000); | |
149 NOTIMPLEMENTED(); | |
150 #endif | |
151 gfx::Font tt_font = views::TooltipManager::GetDefaultFont(); | 141 gfx::Font tt_font = views::TooltipManager::GetDefaultFont(); |
152 std::wstring result; | 142 std::wstring result; |
153 | 143 |
154 // First the title. | 144 // First the title. |
155 if (!title.empty()) { | 145 if (!title.empty()) { |
156 std::wstring localized_title; | 146 std::wstring localized_title; |
157 if (l10n_util::AdjustStringForLocaleDirection(title, &localized_title)) | 147 if (l10n_util::AdjustStringForLocaleDirection(title, &localized_title)) |
158 result.append(gfx::ElideText(localized_title, | 148 result.append(gfx::ElideText(localized_title, tt_font, max_width)); |
159 tt_font, | |
160 monitor_bounds.width())); | |
161 else | 149 else |
162 result.append(gfx::ElideText(title, tt_font, monitor_bounds.width())); | 150 result.append(gfx::ElideText(title, tt_font, max_width)); |
163 } | 151 } |
164 | 152 |
165 // Only show the URL if the url and title differ. | 153 // Only show the URL if the url and title differ. |
166 if (title != UTF8ToWide(url.spec())) { | 154 if (title != UTF8ToWide(url.spec())) { |
167 if (!result.empty()) | 155 if (!result.empty()) |
168 result.append(views::TooltipManager::GetLineSeparator()); | 156 result.append(views::TooltipManager::GetLineSeparator()); |
169 | 157 |
170 // We need to explicitly specify the directionality of the URL's text to | 158 // We need to explicitly specify the directionality of the URL's text to |
171 // make sure it is treated as an LTR string when the context is RTL. For | 159 // make sure it is treated as an LTR string when the context is RTL. For |
172 // example, the URL "http://www.yahoo.com/" appears as | 160 // example, the URL "http://www.yahoo.com/" appears as |
173 // "/http://www.yahoo.com" when rendered, as is, in an RTL context since | 161 // "/http://www.yahoo.com" when rendered, as is, in an RTL context since |
174 // the Unicode BiDi algorithm puts certain characters on the left by | 162 // the Unicode BiDi algorithm puts certain characters on the left by |
175 // default. | 163 // default. |
176 std::wstring elided_url(gfx::ElideUrl(url, | 164 std::wstring elided_url(gfx::ElideUrl(url, tt_font, max_width, languages)); |
177 tt_font, | |
178 monitor_bounds.width(), | |
179 languages)); | |
180 if (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) | 165 if (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT) |
181 l10n_util::WrapStringWithLTRFormatting(&elided_url); | 166 l10n_util::WrapStringWithLTRFormatting(&elided_url); |
182 result.append(elided_url); | 167 result.append(elided_url); |
183 } | 168 } |
184 return result; | 169 return result; |
185 } | 170 } |
186 | 171 |
187 // BookmarkButton ------------------------------------------------------------- | 172 // BookmarkButton ------------------------------------------------------------- |
188 | 173 |
189 // Buttons used for the bookmarks on the bookmark bar. | 174 // Buttons used for the bookmarks on the bookmark bar. |
(...skipping 1534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1724 sync_error_button->SetTooltipText( | 1709 sync_error_button->SetTooltipText( |
1725 l10n_util::GetString(IDS_SYNC_BOOKMARK_BAR_ERROR_DESC)); | 1710 l10n_util::GetString(IDS_SYNC_BOOKMARK_BAR_ERROR_DESC)); |
1726 sync_error_button->SetAccessibleName( | 1711 sync_error_button->SetAccessibleName( |
1727 l10n_util::GetString(IDS_ACCNAME_SYNC_ERROR_BUTTON)); | 1712 l10n_util::GetString(IDS_ACCNAME_SYNC_ERROR_BUTTON)); |
1728 sync_error_button->SetIcon( | 1713 sync_error_button->SetIcon( |
1729 *ResourceBundle::GetSharedInstance().GetBitmapNamed(IDR_WARNING)); | 1714 *ResourceBundle::GetSharedInstance().GetBitmapNamed(IDR_WARNING)); |
1730 return sync_error_button; | 1715 return sync_error_button; |
1731 } | 1716 } |
1732 #endif | 1717 #endif |
1733 | 1718 |
OLD | NEW |