From a7cca11adb34355a78886e15d706bb07615b3ad2 Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Mon, 8 Dec 2014 10:06:21 +0100 Subject: Gtk3 flash plugin fix (rhbz#1171457), Gtk3 theme fixes --- mozilla-1073117-color.patch | 278 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 278 insertions(+) create mode 100644 mozilla-1073117-color.patch (limited to 'mozilla-1073117-color.patch') diff --git a/mozilla-1073117-color.patch b/mozilla-1073117-color.patch new file mode 100644 index 0000000..b3dee3a --- /dev/null +++ b/mozilla-1073117-color.patch @@ -0,0 +1,278 @@ +# HG changeset patch +# Parent 18188c19a3c3ec9cd4474de5bd1f5558ec750a36 +# User Martin Stransky +Bug 1073117 - [gtk3] Use GTK_STYLE_CLASS_VIEW style for selected text rendering. r=?karlt +It also merges some duplicated colors and adds GTK_STATE_FLAG_FOCUSED for selected text. + + +diff --git a/widget/gtk/nsLookAndFeel.cpp b/widget/gtk/nsLookAndFeel.cpp +--- a/widget/gtk/nsLookAndFeel.cpp ++++ b/widget/gtk/nsLookAndFeel.cpp +@@ -33,32 +33,30 @@ using mozilla::LookAndFeel; + (int)((c).blue*255), (int)((c).alpha*255))) + + nsLookAndFeel::nsLookAndFeel() + : nsXPLookAndFeel(), + #if (MOZ_WIDGET_GTK == 2) + mStyle(nullptr), + #else + mBackgroundStyle(nullptr), +- mViewStyle(nullptr), + mButtonStyle(nullptr), + #endif + mDefaultFontCached(false), mButtonFontCached(false), + mFieldFontCached(false), mMenuFontCached(false) + { + Init(); + } + + nsLookAndFeel::~nsLookAndFeel() + { + #if (MOZ_WIDGET_GTK == 2) + g_object_unref(mStyle); + #else + g_object_unref(mBackgroundStyle); +- g_object_unref(mViewStyle); + g_object_unref(mButtonStyle); + #endif + } + + nsresult + nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) + { + #if (MOZ_WIDGET_GTK == 3) +@@ -109,23 +107,29 @@ nsLookAndFeel::NativeGetColor(ColorID aI + case eColorID__moz_dialogtext: + aColor = sMozWindowText; + break; + case eColorID_WidgetSelectBackground: + case eColorID_TextSelectBackground: + case eColorID_IMESelectedRawTextBackground: + case eColorID_IMESelectedConvertedTextBackground: + case eColorID__moz_dragtargetzone: +- aColor = sMozWindowSelectedBackground; ++ case eColorID__moz_cellhighlight: ++ case eColorID__moz_html_cellhighlight: ++ case eColorID_highlight: // preference selected item, ++ aColor = sTextSelectedBackground; + break; + case eColorID_WidgetSelectForeground: + case eColorID_TextSelectForeground: + case eColorID_IMESelectedRawTextForeground: + case eColorID_IMESelectedConvertedTextForeground: +- aColor = sMozWindowSelectedText; ++ case eColorID_highlighttext: ++ case eColorID__moz_cellhighlighttext: ++ case eColorID__moz_html_cellhighlighttext: ++ aColor = sTextSelectedText; + break; + #endif + case eColorID_Widget3DHighlight: + aColor = NS_RGB(0xa0,0xa0,0xa0); + break; + case eColorID_Widget3DShadow: + aColor = NS_RGB(0x40,0x40,0x40); + break; +@@ -233,29 +237,16 @@ nsLookAndFeel::NativeGetColor(ColorID aI + aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); + break; + case eColorID_graytext: // disabled text in windows, menus, etc. + case eColorID_inactivecaptiontext: // text in inactive window caption + gtk_style_context_get_color(mBackgroundStyle, + GTK_STATE_FLAG_INSENSITIVE, &gdk_color); + aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); + break; +- case eColorID_highlight: // preference selected item, +- // background of selected item +- gtk_style_context_get_background_color(mViewStyle, +- GTK_STATE_FLAG_SELECTED, +- &gdk_color); +- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); +- break; +- case eColorID_highlighttext: +- // text of selected item +- gtk_style_context_get_color(mViewStyle, +- GTK_STATE_FLAG_SELECTED, &gdk_color); +- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); +- break; + case eColorID_inactivecaption: + // inactive window caption + gtk_style_context_get_background_color(mBackgroundStyle, + GTK_STATE_FLAG_INSENSITIVE, + &gdk_color); + aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); + break; + #endif +@@ -388,29 +379,16 @@ nsLookAndFeel::NativeGetColor(ColorID aI + gtk_style_context_get_background_color(mButtonStyle, + GTK_STATE_FLAG_PRELIGHT, + &gdk_color); + aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); + break; + case eColorID__moz_buttonhovertext: + aColor = sButtonHoverText; + break; +- case eColorID__moz_cellhighlight: +- case eColorID__moz_html_cellhighlight: +- gtk_style_context_get_background_color(mViewStyle, +- GTK_STATE_FLAG_SELECTED, +- &gdk_color); +- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); +- break; +- case eColorID__moz_cellhighlighttext: +- case eColorID__moz_html_cellhighlighttext: +- gtk_style_context_get_color(mViewStyle, +- GTK_STATE_FLAG_SELECTED, &gdk_color); +- aColor = GDK_RGBA_TO_NS_RGBA(gdk_color); +- break; + #endif + case eColorID__moz_menuhover: + aColor = sMenuHover; + break; + case eColorID__moz_menuhovertext: + aColor = sMenuHoverText; + break; + case eColorID__moz_oddtreerow: +@@ -962,60 +940,66 @@ nsLookAndFeel::Init() + } + + g_object_unref(menu); + #else + GdkRGBA color; + GtkStyleContext *style; + + // Gtk manages a screen's CSS in the settings object so we +- // ask Gtk to create it explicitly. Otherwise we may end up ++ // ask Gtk to create it explicitly. Otherwise we may end up + // with wrong color theme, see Bug 972382 + (void)gtk_settings_get_for_screen(gdk_screen_get_default()); + + GtkWidgetPath *path = gtk_widget_path_new(); + gtk_widget_path_append_type(path, GTK_TYPE_WINDOW); + + mBackgroundStyle = create_context(path); + gtk_style_context_add_class(mBackgroundStyle, GTK_STYLE_CLASS_BACKGROUND); + +- mViewStyle = create_context(path); +- gtk_style_context_add_class(mViewStyle, GTK_STYLE_CLASS_VIEW); +- + mButtonStyle = create_context(path); + gtk_style_context_add_class(mButtonStyle, GTK_STYLE_CLASS_BUTTON); + + // Scrollbar colors + style = create_context(path); + gtk_style_context_add_class(style, GTK_STYLE_CLASS_SCROLLBAR); + gtk_style_context_add_class(style, GTK_STYLE_CLASS_TROUGH); + gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); + sMozScrollbar = GDK_RGBA_TO_NS_RGBA(color); + g_object_unref(style); + + // Text colors +- gtk_style_context_get_background_color(mViewStyle, GTK_STATE_FLAG_NORMAL, &color); ++ style = create_context(path); ++ gtk_style_context_add_class(style, GTK_STYLE_CLASS_VIEW); ++ gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); + sMozFieldBackground = GDK_RGBA_TO_NS_RGBA(color); +- gtk_style_context_get_color(mViewStyle, GTK_STATE_FLAG_NORMAL, &color); ++ gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); + sMozFieldText = GDK_RGBA_TO_NS_RGBA(color); + ++ // Selected text and background ++ gtk_style_context_get_background_color(style, ++ static_cast(GTK_STATE_FLAG_FOCUSED|GTK_STATE_FLAG_SELECTED), ++ &color); ++ sTextSelectedBackground = GDK_RGBA_TO_NS_RGBA(color); ++ gtk_style_context_get_color(style, ++ static_cast(GTK_STATE_FLAG_FOCUSED|GTK_STATE_FLAG_SELECTED), ++ &color); ++ sTextSelectedText = GDK_RGBA_TO_NS_RGBA(color); ++ g_object_unref(style); ++ + // Window colors + style = create_context(path); + gtk_style_context_save(style); + gtk_style_context_add_class(style, GTK_STYLE_CLASS_BACKGROUND); + gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); + sMozWindowBackground = GDK_RGBA_TO_NS_RGBA(color); ++ ++ // Text colors + gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); + sMozWindowText = GDK_RGBA_TO_NS_RGBA(color); +- +- // Selected text and background +- gtk_style_context_get_background_color(style, GTK_STATE_FLAG_SELECTED, &color); +- sMozWindowSelectedBackground = GDK_RGBA_TO_NS_RGBA(color); +- gtk_style_context_get_color(style, GTK_STATE_FLAG_SELECTED, &color); +- sMozWindowSelectedText = GDK_RGBA_TO_NS_RGBA(color); + gtk_style_context_restore(style); + + // tooltip foreground and background + gtk_style_context_add_class(style, GTK_STYLE_CLASS_TOOLTIP); + gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); + sInfoBackground = GDK_RGBA_TO_NS_RGBA(color); + gtk_style_context_get_color(style, GTK_STATE_FLAG_NORMAL, &color); + sInfoText = GDK_RGBA_TO_NS_RGBA(color); +@@ -1251,21 +1235,19 @@ nsLookAndFeel::RefreshImpl() + mFieldFontCached = false; + mMenuFontCached = false; + + #if (MOZ_WIDGET_GTK == 2) + g_object_unref(mStyle); + mStyle = nullptr; + #else + g_object_unref(mBackgroundStyle); +- g_object_unref(mViewStyle); + g_object_unref(mButtonStyle); + + mBackgroundStyle = nullptr; +- mViewStyle = nullptr; + mButtonStyle = nullptr; + #endif + + Init(); + } + + bool + nsLookAndFeel::GetEchoPasswordImpl() { +diff --git a/widget/gtk/nsLookAndFeel.h b/widget/gtk/nsLookAndFeel.h +--- a/widget/gtk/nsLookAndFeel.h ++++ b/widget/gtk/nsLookAndFeel.h +@@ -30,17 +30,16 @@ public: + virtual char16_t GetPasswordCharacterImpl(); + virtual bool GetEchoPasswordImpl(); + + protected: + #if (MOZ_WIDGET_GTK == 2) + struct _GtkStyle *mStyle; + #else + struct _GtkStyleContext *mBackgroundStyle; +- struct _GtkStyleContext *mViewStyle; + struct _GtkStyleContext *mButtonStyle; + #endif + + // Cached fonts + bool mDefaultFontCached; + bool mButtonFontCached; + bool mFieldFontCached; + bool mMenuFontCached; +@@ -70,18 +69,18 @@ protected: + nscolor sOddCellBackground; + nscolor sNativeHyperLinkText; + nscolor sComboBoxText; + nscolor sComboBoxBackground; + nscolor sMozFieldText; + nscolor sMozFieldBackground; + nscolor sMozWindowText; + nscolor sMozWindowBackground; +- nscolor sMozWindowSelectedText; +- nscolor sMozWindowSelectedBackground; ++ nscolor sTextSelectedText; ++ nscolor sTextSelectedBackground; + nscolor sMozScrollbar; + char16_t sInvisibleCharacter; + float sCaretRatio; + bool sMenuSupportsDrag; + + void Init(); + }; + -- cgit