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/gtk/status_bubble_gtk.h" | 5 #include "chrome/browser/gtk/status_bubble_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
11 #include "app/l10n_util.h" | |
12 #include "app/text_elider.h" | 11 #include "app/text_elider.h" |
| 12 #include "base/i18n/rtl.h" |
13 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
14 #include "base/utf_string_conversions.h" | 14 #include "base/utf_string_conversions.h" |
15 #include "chrome/browser/gtk/gtk_theme_provider.h" | 15 #include "chrome/browser/gtk/gtk_theme_provider.h" |
16 #include "chrome/browser/gtk/gtk_util.h" | 16 #include "chrome/browser/gtk/gtk_util.h" |
17 #include "chrome/browser/gtk/rounded_window.h" | 17 #include "chrome/browser/gtk/rounded_window.h" |
18 #include "chrome/browser/gtk/slide_animator_gtk.h" | 18 #include "chrome/browser/gtk/slide_animator_gtk.h" |
19 #include "chrome/common/notification_service.h" | 19 #include "chrome/common/notification_service.h" |
20 #include "gfx/gtk_util.h" | 20 #include "gfx/gtk_util.h" |
21 #include "googleurl/src/gurl.h" | 21 #include "googleurl/src/gurl.h" |
22 | 22 |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 bool old_flip_horizontally = flip_horizontally_; | 150 bool old_flip_horizontally = flip_horizontally_; |
151 | 151 |
152 if (left_content) { | 152 if (left_content) { |
153 SetFlipHorizontally(false); | 153 SetFlipHorizontally(false); |
154 y_offset_ = 0; | 154 y_offset_ = 0; |
155 } else { | 155 } else { |
156 GtkWidget* toplevel = gtk_widget_get_toplevel(container_.get()); | 156 GtkWidget* toplevel = gtk_widget_get_toplevel(container_.get()); |
157 if (!toplevel || !GTK_WIDGET_REALIZED(toplevel)) | 157 if (!toplevel || !GTK_WIDGET_REALIZED(toplevel)) |
158 return; | 158 return; |
159 | 159 |
160 bool ltr = (l10n_util::GetTextDirection() == l10n_util::LEFT_TO_RIGHT); | 160 bool ltr = !base::i18n::IsRTL(); |
161 | 161 |
162 GtkRequisition requisition; | 162 GtkRequisition requisition; |
163 gtk_widget_size_request(container_.get(), &requisition); | 163 gtk_widget_size_request(container_.get(), &requisition); |
164 | 164 |
165 // Get our base position (that is, not including the current offset) | 165 // Get our base position (that is, not including the current offset) |
166 // relative to the origin of the root window. | 166 // relative to the origin of the root window. |
167 gint toplevel_x = 0, toplevel_y = 0; | 167 gint toplevel_x = 0, toplevel_y = 0; |
168 gdk_window_get_position(toplevel->window, &toplevel_x, &toplevel_y); | 168 gdk_window_get_position(toplevel->window, &toplevel_x, &toplevel_y); |
169 gfx::Rect parent_rect = | 169 gfx::Rect parent_rect = |
170 gtk_util::GetWidgetRectRelativeToToplevel(parent); | 170 gtk_util::GetWidgetRectRelativeToToplevel(parent); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
212 | 212 |
213 void StatusBubbleGtk::Observe(NotificationType type, | 213 void StatusBubbleGtk::Observe(NotificationType type, |
214 const NotificationSource& source, | 214 const NotificationSource& source, |
215 const NotificationDetails& details) { | 215 const NotificationDetails& details) { |
216 if (type == NotificationType::BROWSER_THEME_CHANGED) { | 216 if (type == NotificationType::BROWSER_THEME_CHANGED) { |
217 UserChangedTheme(); | 217 UserChangedTheme(); |
218 } | 218 } |
219 } | 219 } |
220 | 220 |
221 void StatusBubbleGtk::InitWidgets() { | 221 void StatusBubbleGtk::InitWidgets() { |
222 bool ltr = (l10n_util::GetTextDirection() == l10n_util::LEFT_TO_RIGHT); | 222 bool ltr = !base::i18n::IsRTL(); |
223 | 223 |
224 label_ = gtk_label_new(NULL); | 224 label_ = gtk_label_new(NULL); |
225 | 225 |
226 padding_ = gtk_alignment_new(0, 0, 1, 1); | 226 padding_ = gtk_alignment_new(0, 0, 1, 1); |
227 gtk_alignment_set_padding(GTK_ALIGNMENT(padding_), | 227 gtk_alignment_set_padding(GTK_ALIGNMENT(padding_), |
228 kInternalTopBottomPadding, kInternalTopBottomPadding, | 228 kInternalTopBottomPadding, kInternalTopBottomPadding, |
229 kInternalLeftRightPadding + (ltr ? 0 : kCornerSize), | 229 kInternalLeftRightPadding + (ltr ? 0 : kCornerSize), |
230 kInternalLeftRightPadding + (ltr ? kCornerSize : 0)); | 230 kInternalLeftRightPadding + (ltr ? kCornerSize : 0)); |
231 gtk_container_add(GTK_CONTAINER(padding_), label_); | 231 gtk_container_add(GTK_CONTAINER(padding_), label_); |
232 | 232 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
268 gtk_util::SetRoundedWindowBorderColor(container_.get(), | 268 gtk_util::SetRoundedWindowBorderColor(container_.get(), |
269 theme_provider_->GetBorderColor()); | 269 theme_provider_->GetBorderColor()); |
270 } | 270 } |
271 | 271 |
272 void StatusBubbleGtk::SetFlipHorizontally(bool flip_horizontally) { | 272 void StatusBubbleGtk::SetFlipHorizontally(bool flip_horizontally) { |
273 if (flip_horizontally == flip_horizontally_) | 273 if (flip_horizontally == flip_horizontally_) |
274 return; | 274 return; |
275 | 275 |
276 flip_horizontally_ = flip_horizontally; | 276 flip_horizontally_ = flip_horizontally; |
277 | 277 |
278 bool ltr = (l10n_util::GetTextDirection() == l10n_util::LEFT_TO_RIGHT); | 278 bool ltr = !base::i18n::IsRTL(); |
279 bool on_left = (ltr && !flip_horizontally) || (!ltr && flip_horizontally); | 279 bool on_left = (ltr && !flip_horizontally) || (!ltr && flip_horizontally); |
280 | 280 |
281 gtk_alignment_set_padding(GTK_ALIGNMENT(padding_), | 281 gtk_alignment_set_padding(GTK_ALIGNMENT(padding_), |
282 kInternalTopBottomPadding, kInternalTopBottomPadding, | 282 kInternalTopBottomPadding, kInternalTopBottomPadding, |
283 kInternalLeftRightPadding + (on_left ? 0 : kCornerSize), | 283 kInternalLeftRightPadding + (on_left ? 0 : kCornerSize), |
284 kInternalLeftRightPadding + (on_left ? kCornerSize : 0)); | 284 kInternalLeftRightPadding + (on_left ? kCornerSize : 0)); |
285 // The rounded window code flips these arguments if we're RTL. | 285 // The rounded window code flips these arguments if we're RTL. |
286 gtk_util::SetRoundedWindowEdgesAndBorders( | 286 gtk_util::SetRoundedWindowEdgesAndBorders( |
287 container_.get(), | 287 container_.get(), |
288 kCornerSize, | 288 kCornerSize, |
289 flip_horizontally ? | 289 flip_horizontally ? |
290 gtk_util::ROUNDED_TOP_LEFT : | 290 gtk_util::ROUNDED_TOP_LEFT : |
291 gtk_util::ROUNDED_TOP_RIGHT, | 291 gtk_util::ROUNDED_TOP_RIGHT, |
292 gtk_util::BORDER_TOP | | 292 gtk_util::BORDER_TOP | |
293 (flip_horizontally ? gtk_util::BORDER_LEFT : gtk_util::BORDER_RIGHT)); | 293 (flip_horizontally ? gtk_util::BORDER_LEFT : gtk_util::BORDER_RIGHT)); |
294 gtk_widget_queue_draw(container_.get()); | 294 gtk_widget_queue_draw(container_.get()); |
295 } | 295 } |
296 | 296 |
297 gboolean StatusBubbleGtk::HandleMotionNotify(GdkEventMotion* event) { | 297 gboolean StatusBubbleGtk::HandleMotionNotify(GdkEventMotion* event) { |
298 MouseMoved(gfx::Point(event->x_root, event->y_root), false); | 298 MouseMoved(gfx::Point(event->x_root, event->y_root), false); |
299 return FALSE; | 299 return FALSE; |
300 } | 300 } |
OLD | NEW |