summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-25 01:02:51 +0000
committerderat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-25 01:02:51 +0000
commitce2e0067e9c239e3ecef153165b236c930f358d7 (patch)
tree4b5b733bcb78bf5c3abe99ba3eca250e6481391d
parentb3be6c2bbe2803419e4057794fd42cd617f834db (diff)
downloadchromium_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.cc27
-rw-r--r--chrome/browser/gtk/gtk_util.cc20
-rw-r--r--chrome/browser/gtk/gtk_util.h6
-rw-r--r--chrome/browser/views/autocomplete/autocomplete_popup_contents_view.cc13
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;