OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/ui/gtk/omnibox/omnibox_popup_view_gtk.h" | 5 #include "chrome/browser/ui/gtk/omnibox/omnibox_popup_view_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <string> | 10 #include <string> |
11 | 11 |
12 #include "base/basictypes.h" | 12 #include "base/basictypes.h" |
13 #include "base/i18n/rtl.h" | 13 #include "base/i18n/rtl.h" |
14 #include "base/logging.h" | 14 #include "base/logging.h" |
15 #include "base/stl_util-inl.h" | 15 #include "base/stl_util-inl.h" |
16 #include "base/utf_string_conversions.h" | 16 #include "base/utf_string_conversions.h" |
17 #include "chrome/browser/autocomplete/autocomplete.h" | 17 #include "chrome/browser/autocomplete/autocomplete.h" |
18 #include "chrome/browser/autocomplete/autocomplete_edit.h" | 18 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
19 #include "chrome/browser/autocomplete/autocomplete_match.h" | 19 #include "chrome/browser/autocomplete/autocomplete_match.h" |
20 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" | 20 #include "chrome/browser/autocomplete/autocomplete_popup_model.h" |
21 #include "chrome/browser/defaults.h" | 21 #include "chrome/browser/defaults.h" |
22 #include "chrome/browser/profiles/profile.h" | 22 #include "chrome/browser/profiles/profile.h" |
23 #include "chrome/browser/search_engines/template_url.h" | 23 #include "chrome/browser/search_engines/template_url.h" |
24 #include "chrome/browser/search_engines/template_url_service.h" | 24 #include "chrome/browser/search_engines/template_url_service.h" |
25 #include "chrome/browser/ui/gtk/gtk_theme_service.h" | 25 #include "chrome/browser/ui/gtk/gtk_theme_service.h" |
26 #include "chrome/browser/ui/gtk/gtk_util.h" | 26 #include "chrome/browser/ui/gtk/gtk_util.h" |
27 #include "chrome/browser/ui/omnibox/omnibox_view.h" | 27 #include "chrome/browser/ui/omnibox/omnibox_view.h" |
| 28 #include "chrome/common/chrome_notification_types.h" |
28 #include "content/common/notification_service.h" | 29 #include "content/common/notification_service.h" |
29 #include "grit/theme_resources.h" | 30 #include "grit/theme_resources.h" |
30 #include "ui/base/gtk/gtk_windowing.h" | 31 #include "ui/base/gtk/gtk_windowing.h" |
31 #include "ui/gfx/color_utils.h" | 32 #include "ui/gfx/color_utils.h" |
32 #include "ui/gfx/font.h" | 33 #include "ui/gfx/font.h" |
33 #include "ui/gfx/gtk_util.h" | 34 #include "ui/gfx/gtk_util.h" |
34 #include "ui/gfx/rect.h" | 35 #include "ui/gfx/rect.h" |
35 #include "ui/gfx/skia_utils_gtk.h" | 36 #include "ui/gfx/skia_utils_gtk.h" |
36 | 37 |
37 namespace { | 38 namespace { |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 g_signal_connect(window_, "motion-notify-event", | 305 g_signal_connect(window_, "motion-notify-event", |
305 G_CALLBACK(HandleMotionThunk), this); | 306 G_CALLBACK(HandleMotionThunk), this); |
306 g_signal_connect(window_, "button-press-event", | 307 g_signal_connect(window_, "button-press-event", |
307 G_CALLBACK(HandleButtonPressThunk), this); | 308 G_CALLBACK(HandleButtonPressThunk), this); |
308 g_signal_connect(window_, "button-release-event", | 309 g_signal_connect(window_, "button-release-event", |
309 G_CALLBACK(HandleButtonReleaseThunk), this); | 310 G_CALLBACK(HandleButtonReleaseThunk), this); |
310 g_signal_connect(window_, "expose-event", | 311 g_signal_connect(window_, "expose-event", |
311 G_CALLBACK(HandleExposeThunk), this); | 312 G_CALLBACK(HandleExposeThunk), this); |
312 | 313 |
313 registrar_.Add(this, | 314 registrar_.Add(this, |
314 NotificationType::BROWSER_THEME_CHANGED, | 315 chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
315 NotificationService::AllSources()); | 316 NotificationService::AllSources()); |
316 theme_service_->InitThemesFor(this); | 317 theme_service_->InitThemesFor(this); |
317 | 318 |
318 // TODO(erg): There appears to be a bug somewhere in something which shows | 319 // TODO(erg): There appears to be a bug somewhere in something which shows |
319 // itself when we're in NX. Previously, we called | 320 // itself when we're in NX. Previously, we called |
320 // gtk_util::ActAsRoundedWindow() to make this popup have rounded | 321 // gtk_util::ActAsRoundedWindow() to make this popup have rounded |
321 // corners. This worked on the standard xorg server (both locally and | 322 // corners. This worked on the standard xorg server (both locally and |
322 // remotely), but broke over NX. My current hypothesis is that it can't | 323 // remotely), but broke over NX. My current hypothesis is that it can't |
323 // handle shaping top-level windows during an expose event, but I'm not sure | 324 // handle shaping top-level windows during an expose event, but I'm not sure |
324 // how else to get accurate shaping information. | 325 // how else to get accurate shaping information. |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 | 382 |
382 void OmniboxPopupViewGtk::PaintUpdatesNow() { | 383 void OmniboxPopupViewGtk::PaintUpdatesNow() { |
383 // Paint our queued invalidations now, synchronously. | 384 // Paint our queued invalidations now, synchronously. |
384 gdk_window_process_updates(window_->window, FALSE); | 385 gdk_window_process_updates(window_->window, FALSE); |
385 } | 386 } |
386 | 387 |
387 void OmniboxPopupViewGtk::OnDragCanceled() { | 388 void OmniboxPopupViewGtk::OnDragCanceled() { |
388 ignore_mouse_drag_ = true; | 389 ignore_mouse_drag_ = true; |
389 } | 390 } |
390 | 391 |
391 void OmniboxPopupViewGtk::Observe(NotificationType type, | 392 void OmniboxPopupViewGtk::Observe(int type, |
392 const NotificationSource& source, | 393 const NotificationSource& source, |
393 const NotificationDetails& details) { | 394 const NotificationDetails& details) { |
394 DCHECK(type == NotificationType::BROWSER_THEME_CHANGED); | 395 DCHECK(type == chrome::NOTIFICATION_BROWSER_THEME_CHANGED); |
395 | 396 |
396 if (theme_service_->UsingNativeTheme()) { | 397 if (theme_service_->UsingNativeTheme()) { |
397 gtk_util::UndoForceFontSize(window_); | 398 gtk_util::UndoForceFontSize(window_); |
398 | 399 |
399 border_color_ = theme_service_->GetBorderColor(); | 400 border_color_ = theme_service_->GetBorderColor(); |
400 | 401 |
401 gtk_util::GetTextColors( | 402 gtk_util::GetTextColors( |
402 &background_color_, &selected_background_color_, | 403 &background_color_, &selected_background_color_, |
403 &content_text_color_, &selected_content_text_color_); | 404 &content_text_color_, &selected_content_text_color_); |
404 | 405 |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
680 (text_width - actual_content_width - | 681 (text_width - actual_content_width - |
681 (actual_description_width / PANGO_SCALE)), | 682 (actual_description_width / PANGO_SCALE)), |
682 content_y, layout_); | 683 content_y, layout_); |
683 } | 684 } |
684 } | 685 } |
685 | 686 |
686 g_object_unref(gc); | 687 g_object_unref(gc); |
687 | 688 |
688 return TRUE; | 689 return TRUE; |
689 } | 690 } |
OLD | NEW |