| Index: chrome/browser/ui/libgtkui/native_theme_gtk3.cc
|
| diff --git a/chrome/browser/ui/libgtkui/native_theme_gtk3.cc b/chrome/browser/ui/libgtkui/native_theme_gtk3.cc
|
| index 2b17b6d05075337faac1dd1c0b1f5546c6e2e459..7b8028a20ff6285325882817bc0021e6d36281b3 100644
|
| --- a/chrome/browser/ui/libgtkui/native_theme_gtk3.cc
|
| +++ b/chrome/browser/ui/libgtkui/native_theme_gtk3.cc
|
| @@ -94,7 +94,16 @@ SkColor SkColorFromColorId(ui::NativeTheme::ColorId color_id) {
|
|
|
| // FocusableBorder
|
| case ui::NativeTheme::kColorId_FocusedBorderColor:
|
| - return GetBorderColor("GtkEntry#entry:focus");
|
| + // GetBorderColor("GtkEntry#entry:focus") is correct here. The focus ring
|
| + // around widgets is usually a lighter version of the "canonical theme
|
| + // color" - orange on Ambiance, blue on Adwaita, etc. However, Chrome
|
| + // lightens the color we give it, so it would look wrong if we give it an
|
| + // already-lightened color. This workaround returns the theme color
|
| + // directly, taken from a selected table row. This has matched the theme
|
| + // color on every theme that I've tested.
|
| + return GetBgColor(
|
| + "GtkTreeView#treeview.view "
|
| + "GtkTreeView#treeview.view.cell:selected:focus");
|
| case ui::NativeTheme::kColorId_UnfocusedBorderColor:
|
| return GetBorderColor("GtkEntry#entry");
|
|
|
| @@ -183,42 +192,48 @@ SkColor SkColorFromColorId(ui::NativeTheme::ColorId color_id) {
|
| case ui::NativeTheme::kColorId_ButtonPressedShade:
|
| return SK_ColorTRANSPARENT;
|
|
|
| + // BlueButton
|
| case ui::NativeTheme::kColorId_BlueButtonEnabledColor:
|
| return GetFgColor(
|
| - "GtkButton#button.text-button.suggested-action GtkLabel");
|
| + "GtkButton#button.text-button.default.suggested-action GtkLabel");
|
| case ui::NativeTheme::kColorId_BlueButtonDisabledColor:
|
| return GetFgColor(
|
| - "GtkButton#button.text-button.suggested-action:disabled "
|
| + "GtkButton#button.text-button.default.suggested-action:disabled "
|
| "GtkLabel");
|
| case ui::NativeTheme::kColorId_BlueButtonHoverColor:
|
| return GetFgColor(
|
| - "GtkButton#button.text-button.suggested-action:hover GtkLabel");
|
| + "GtkButton#button.text-button.default.suggested-action:hover "
|
| + "GtkLabel");
|
| case ui::NativeTheme::kColorId_BlueButtonPressedColor:
|
| return GetFgColor(
|
| - "GtkButton#button.text-button.suggested-action:hover:active "
|
| + "GtkButton#button.text-button.default.suggested-action:hover:active "
|
| "GtkLabel");
|
| case ui::NativeTheme::kColorId_BlueButtonShadowColor:
|
| return SK_ColorTRANSPARENT;
|
|
|
| + // ProminentButton
|
| case ui::NativeTheme::kColorId_ProminentButtonColor:
|
| - return GetBgColor("GtkButton#button.text-button.destructive-action");
|
| + return GetBgColor(
|
| + "GtkTreeView#treeview.view "
|
| + "GtkTreeView#treeview.view.cell:selected:focus");
|
| case ui::NativeTheme::kColorId_TextOnProminentButtonColor:
|
| return GetFgColor(
|
| - "GtkButton#button.text-button.destructive-action GtkLabel");
|
| + "GtkTreeView#treeview.view "
|
| + "GtkTreeview#treeview.view.cell:selected:focus GtkLabel");
|
|
|
| // Textfield
|
| case ui::NativeTheme::kColorId_TextfieldDefaultColor:
|
| - return GetFgColor("GtkEntry#entry");
|
| + return GetFgColor("GtkTextView#textview.view");
|
| case ui::NativeTheme::kColorId_TextfieldDefaultBackground:
|
| - return GetBgColor("GtkEntry#entry");
|
| + return GetBgColor("GtkTextView#textview.view");
|
| case ui::NativeTheme::kColorId_TextfieldReadOnlyColor:
|
| - return GetFgColor("GtkEntry#entry:disabled");
|
| + return GetFgColor("GtkTextView#textview.view:disabled");
|
| case ui::NativeTheme::kColorId_TextfieldReadOnlyBackground:
|
| - return GetBgColor("GtkEntry#entry:disabled");
|
| + return GetBgColor("GtkTextView#textview.view:disabled");
|
| case ui::NativeTheme::kColorId_TextfieldSelectionColor:
|
| - return GetSelectedTextColor("GtkEntry#entry");
|
| + return GetSelectedTextColor("GtkTextView#textview.view");
|
| case ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused:
|
| - return GetSelectedBgColor("GtkEntry#entry");
|
| + return GetSelectedBgColor("GtkTextView#textview.view");
|
|
|
| // Tooltips
|
| case ui::NativeTheme::kColorId_TooltipBackground:
|
| @@ -230,22 +245,27 @@ SkColor SkColorFromColorId(ui::NativeTheme::ColorId color_id) {
|
| // Trees and Tables (implemented on GTK using the same class)
|
| case ui::NativeTheme::kColorId_TableBackground:
|
| case ui::NativeTheme::kColorId_TreeBackground:
|
| - return GetBgColor("GtkTreeView#treeview.view .view.cell");
|
| + return GetBgColor(
|
| + "GtkTreeView#treeview.view GtkTreeView#treeview.view.cell");
|
| case ui::NativeTheme::kColorId_TableText:
|
| case ui::NativeTheme::kColorId_TreeText:
|
| case ui::NativeTheme::kColorId_TableGroupingIndicatorColor:
|
| - return GetFgColor("GtkTreeView#treeview.view .view.cell GtkLabel");
|
| + return GetFgColor(
|
| + "GtkTreeView#treeview.view GtkTreeView#treeview.view.cell GtkLabel");
|
| case ui::NativeTheme::kColorId_TableSelectedText:
|
| case ui::NativeTheme::kColorId_TableSelectedTextUnfocused:
|
| case ui::NativeTheme::kColorId_TreeSelectedText:
|
| case ui::NativeTheme::kColorId_TreeSelectedTextUnfocused:
|
| return GetFgColor(
|
| - "GtkTreeView#treeview.view .view.cell:selected:focus GtkLabel");
|
| + "GtkTreeView#treeview.view "
|
| + "GtkTreeView#treeview.view.cell:selected:focus GtkLabel");
|
| case ui::NativeTheme::kColorId_TableSelectionBackgroundFocused:
|
| case ui::NativeTheme::kColorId_TableSelectionBackgroundUnfocused:
|
| case ui::NativeTheme::kColorId_TreeSelectionBackgroundFocused:
|
| case ui::NativeTheme::kColorId_TreeSelectionBackgroundUnfocused:
|
| - return GetBgColor("GtkTreeView#treeview.view .view.cell:selected:focus");
|
| + return GetBgColor(
|
| + "GtkTreeView#treeview.view "
|
| + "GtkTreeView#treeview.view.cell:selected:focus");
|
|
|
| // Table Header
|
| case ui::NativeTheme::kColorId_TableHeaderText:
|
| @@ -257,50 +277,77 @@ SkColor SkColorFromColorId(ui::NativeTheme::ColorId color_id) {
|
|
|
| // Results Table
|
| case ui::NativeTheme::kColorId_ResultsTableNormalBackground:
|
| - return GetBgColor("GtkEntry#entry");
|
| + return SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultBackground);
|
| case ui::NativeTheme::kColorId_ResultsTableHoveredBackground:
|
| - return color_utils::AlphaBlend(GetBgColor("GtkEntry#entry"),
|
| - GetSelectedBgColor("GtkEntry#entry"),
|
| - 0x80);
|
| + return color_utils::AlphaBlend(
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultBackground),
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused),
|
| + 0x80);
|
| case ui::NativeTheme::kColorId_ResultsTableSelectedBackground:
|
| - return GetSelectedBgColor("GtkEntry#entry");
|
| + return SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused);
|
| case ui::NativeTheme::kColorId_ResultsTableNormalText:
|
| case ui::NativeTheme::kColorId_ResultsTableHoveredText:
|
| - return GetFgColor("GtkEntry#entry");
|
| + return SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultColor);
|
| case ui::NativeTheme::kColorId_ResultsTableSelectedText:
|
| - return GetSelectedTextColor("GtkEntry#entry");
|
| + return SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldSelectionColor);
|
| case ui::NativeTheme::kColorId_ResultsTableNormalDimmedText:
|
| case ui::NativeTheme::kColorId_ResultsTableHoveredDimmedText:
|
| - return color_utils::AlphaBlend(GetFgColor("GtkEntry#entry"),
|
| - GetBgColor("GtkEntry#entry"), 0x80);
|
| + return color_utils::AlphaBlend(
|
| + SkColorFromColorId(ui::NativeTheme::kColorId_TextfieldDefaultColor),
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultBackground),
|
| + 0x80);
|
| case ui::NativeTheme::kColorId_ResultsTableSelectedDimmedText:
|
| - return color_utils::AlphaBlend(GetSelectedTextColor("GtkEntry#entry"),
|
| - GetBgColor("GtkEntry#entry"), 0x80);
|
| + return color_utils::AlphaBlend(
|
| + SkColorFromColorId(ui::NativeTheme::kColorId_TextfieldSelectionColor),
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultBackground),
|
| + 0x80);
|
| case ui::NativeTheme::kColorId_ResultsTableNormalUrl:
|
| case ui::NativeTheme::kColorId_ResultsTableHoveredUrl:
|
| - return NormalURLColor(GetFgColor("GtkEntry#entry"));
|
| + return NormalURLColor(
|
| + SkColorFromColorId(ui::NativeTheme::kColorId_TextfieldDefaultColor));
|
| case ui::NativeTheme::kColorId_ResultsTableSelectedUrl:
|
| - return SelectedURLColor(GetSelectedTextColor("GtkEntry#entry"),
|
| - GetSelectedBgColor("GtkEntry#entry"));
|
| -
|
| + return SelectedURLColor(
|
| + SkColorFromColorId(ui::NativeTheme::kColorId_TextfieldSelectionColor),
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused));
|
| case ui::NativeTheme::kColorId_ResultsTablePositiveText:
|
| - return color_utils::GetReadableColor(kPositiveTextColor,
|
| - GetBgColor("GtkEntry#entry"));
|
| + return color_utils::GetReadableColor(
|
| + kPositiveTextColor,
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultBackground));
|
| case ui::NativeTheme::kColorId_ResultsTablePositiveHoveredText:
|
| - return color_utils::GetReadableColor(kPositiveTextColor,
|
| - GetBgColor("GtkEntry#entry:hover"));
|
| + return color_utils::GetReadableColor(
|
| + kPositiveTextColor,
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultBackground));
|
| case ui::NativeTheme::kColorId_ResultsTablePositiveSelectedText:
|
| return color_utils::GetReadableColor(
|
| - kPositiveTextColor, GetBgColor("GtkEntry#entry:selected"));
|
| + kPositiveTextColor,
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused));
|
| case ui::NativeTheme::kColorId_ResultsTableNegativeText:
|
| - return color_utils::GetReadableColor(kNegativeTextColor,
|
| - GetBgColor("GtkEntry#entry"));
|
| + return color_utils::GetReadableColor(
|
| + kNegativeTextColor,
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultBackground));
|
| case ui::NativeTheme::kColorId_ResultsTableNegativeHoveredText:
|
| - return color_utils::GetReadableColor(kNegativeTextColor,
|
| - GetBgColor("GtkEntry#entry:hover"));
|
| + return color_utils::GetReadableColor(
|
| + kNegativeTextColor,
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldDefaultBackground));
|
| case ui::NativeTheme::kColorId_ResultsTableNegativeSelectedText:
|
| return color_utils::GetReadableColor(
|
| - kNegativeTextColor, GetBgColor("GtkEntry#entry:selected"));
|
| + kNegativeTextColor,
|
| + SkColorFromColorId(
|
| + ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused));
|
|
|
| // Throbber
|
| // TODO(thomasanderson): Render GtkSpinner directly.
|
| @@ -343,22 +390,22 @@ NativeThemeGtk3::NativeThemeGtk3() {
|
| // this point. We need the g_type_class magic to make sure the compiler
|
| // doesn't optimize away this code.
|
| g_type_class_unref(g_type_class_ref(gtk_button_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_entry_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_info_bar_get_type()));
|
| g_type_class_unref(g_type_class_ref(gtk_label_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_window_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_link_button_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_spinner_get_type()));
|
| g_type_class_unref(g_type_class_ref(gtk_menu_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_menu_bar_get_type()));
|
| g_type_class_unref(g_type_class_ref(gtk_menu_item_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_entry_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_info_bar_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_tooltip_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_range_get_type()));
|
| g_type_class_unref(g_type_class_ref(gtk_scrollbar_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_toolbar_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_text_view_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_separator_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_menu_bar_get_type()));
|
| g_type_class_unref(g_type_class_ref(gtk_scrolled_window_get_type()));
|
| - g_type_class_unref(g_type_class_ref(gtk_range_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_separator_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_spinner_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_text_view_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_toolbar_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_tooltip_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_tree_view_get_type()));
|
| + g_type_class_unref(g_type_class_ref(gtk_window_get_type()));
|
|
|
| g_signal_connect_after(gtk_settings_get_default(), "notify::gtk-theme-name",
|
| G_CALLBACK(OnThemeChanged), this);
|
|
|