diff options
author | derat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-25 01:02:51 +0000 |
---|---|---|
committer | derat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-25 01:02:51 +0000 |
commit | ce2e0067e9c239e3ecef153165b236c930f358d7 (patch) | |
tree | 4b5b733bcb78bf5c3abe99ba3eca250e6481391d | |
parent | b3be6c2bbe2803419e4057794fd42cd617f834db (diff) | |
download | chromium_src-ce2e0067e9c239e3ecef153165b236c930f358d7.zip chromium_src-ce2e0067e9c239e3ecef153165b236c930f358d7.tar.gz chromium_src-ce2e0067e9c239e3ecef153165b236c930f358d7.tar.bz2 |
chromeos: Update autocomplete popup colors.
This fetches them from GTK using the same logic as is used in
the GTK port.
BUG=chromium-os:3916
TEST=built and ran it for GTK and Chrome OS Views
Review URL: http://codereview.chromium.org/3198013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57271 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc | 27 | ||||
-rw-r--r-- | chrome/browser/gtk/gtk_util.cc | 20 | ||||
-rw-r--r-- | chrome/browser/gtk/gtk_util.h | 6 | ||||
-rw-r--r-- | chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc | 13 |
4 files changed, 47 insertions, 19 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc b/chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc index 89929b2..5923ec5 100644 --- a/chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc +++ b/chrome/browser/autocomplete/autocomplete_popup_view_gtk.cc @@ -380,28 +380,17 @@ void AutocompletePopupViewGtk::Observe(NotificationType type, if (theme_provider_->UseGtkTheme()) { border_color_ = theme_provider_->GetBorderColor(); - // Create a fake gtk table - GtkWidget* fake_tree = gtk_entry_new(); - GtkStyle* style = gtk_rc_get_style(fake_tree); + gtk_util::GetTextColors( + &background_color_, &selected_background_color_, + &content_text_color_, &selected_content_text_color_); - background_color_ = style->base[GTK_STATE_NORMAL]; - selected_background_color_ = style->base[GTK_STATE_SELECTED]; hovered_background_color_ = gtk_util::AverageColors( background_color_, selected_background_color_); - - content_text_color_ = style->text[GTK_STATE_NORMAL]; - selected_content_text_color_ = style->text[GTK_STATE_SELECTED]; - url_text_color_ = - NormalURLColor(style->text[GTK_STATE_NORMAL]); - url_selected_text_color_ = - SelectedURLColor(style->text[GTK_STATE_SELECTED], - style->base[GTK_STATE_SELECTED]); - - description_text_color_ = style->text[GTK_STATE_NORMAL]; - description_selected_text_color_ = style->text[GTK_STATE_SELECTED]; - - g_object_ref_sink(fake_tree); - g_object_unref(fake_tree); + url_text_color_ = NormalURLColor(content_text_color_); + url_selected_text_color_ = SelectedURLColor(selected_content_text_color_, + selected_background_color_); + description_text_color_ = content_text_color_; + description_selected_text_color_ = selected_content_text_color_; } else { border_color_ = kBorderColor; background_color_ = kBackgroundColor; diff --git a/chrome/browser/gtk/gtk_util.cc b/chrome/browser/gtk/gtk_util.cc index 3ed1ec1..1819a3c 100644 --- a/chrome/browser/gtk/gtk_util.cc +++ b/chrome/browser/gtk/gtk_util.cc @@ -903,6 +903,26 @@ bool AddWindowAlphaChannel(GtkWidget* window) { return rgba; } +void GetTextColors(GdkColor* normal_base, + GdkColor* selected_base, + GdkColor* normal_text, + GdkColor* selected_text) { + GtkWidget* fake_entry = gtk_entry_new(); + GtkStyle* style = gtk_rc_get_style(fake_entry); + + if (normal_base) + *normal_base = style->base[GTK_STATE_NORMAL]; + if (selected_base) + *selected_base = style->base[GTK_STATE_SELECTED]; + if (normal_text) + *normal_text = style->text[GTK_STATE_NORMAL]; + if (selected_text) + *selected_text = style->text[GTK_STATE_SELECTED]; + + g_object_ref_sink(fake_entry); + g_object_unref(fake_entry); +} + #if defined(OS_CHROMEOS) GtkWindow* GetDialogTransientParent(GtkWindow* dialog) { diff --git a/chrome/browser/gtk/gtk_util.h b/chrome/browser/gtk/gtk_util.h index 8b83262..a507f8a 100644 --- a/chrome/browser/gtk/gtk_util.h +++ b/chrome/browser/gtk/gtk_util.h @@ -281,6 +281,12 @@ bool URLFromPrimarySelection(Profile* profile, GURL* url); // Set the colormap of the given window to rgba to allow transparency. bool AddWindowAlphaChannel(GtkWidget* window); +// Get the default colors for a text entry. Parameters may be NULL. +void GetTextColors(GdkColor* normal_base, + GdkColor* selected_base, + GdkColor* normal_text, + GdkColor* selected_text); + // Wrappers to show a GtkDialog. On Linux, it merely calls gtk_widget_show_all. // On ChromeOs, it calls ShowNativeDialog which hosts the its vbox // in a view based Window. diff --git a/chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc b/chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc index e8baee1..45c3779 100644 --- a/chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc +++ b/chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc @@ -34,6 +34,11 @@ #include "app/win_util.h" #endif +#if defined(OS_LINUX) +#include "chrome/browser/gtk/gtk_util.h" +#include "gfx/skia_utils_gtk.h" +#endif + namespace { enum ResultViewState { @@ -60,6 +65,14 @@ SkColor GetColor(ResultViewState state, ColorKind kind) { colors[SELECTED][BACKGROUND] = color_utils::GetSysSkColor(COLOR_HIGHLIGHT); colors[NORMAL][TEXT] = color_utils::GetSysSkColor(COLOR_WINDOWTEXT); colors[SELECTED][TEXT] = color_utils::GetSysSkColor(COLOR_HIGHLIGHTTEXT); +#elif defined(OS_LINUX) + GdkColor bg_color, selected_bg_color, text_color, selected_text_color; + gtk_util::GetTextColors( + &bg_color, &selected_bg_color, &text_color, &selected_text_color); + colors[NORMAL][BACKGROUND] = gfx::GdkColorToSkColor(bg_color); + colors[SELECTED][BACKGROUND] = gfx::GdkColorToSkColor(selected_bg_color); + colors[NORMAL][TEXT] = gfx::GdkColorToSkColor(text_color); + colors[SELECTED][TEXT] = gfx::GdkColorToSkColor(selected_text_color); #else // TODO(beng): source from theme provider. colors[NORMAL][BACKGROUND] = SK_ColorWHITE; |