diff options
Diffstat (limited to 'www/firefox/files/patch-bug1073117')
-rw-r--r-- | www/firefox/files/patch-bug1073117 | 245 |
1 files changed, 245 insertions, 0 deletions
diff --git a/www/firefox/files/patch-bug1073117 b/www/firefox/files/patch-bug1073117 new file mode 100644 index 000000000000..756a64293b35 --- /dev/null +++ b/www/firefox/files/patch-bug1073117 @@ -0,0 +1,245 @@ +diff --git widget/gtk/gtk3drawing.c widget/gtk/gtk3drawing.c +index e9e21b1..750140c 100644 +--- widget/gtk/gtk3drawing.c ++++ widget/gtk/gtk3drawing.c +@@ -64,6 +64,7 @@ static GtkWidget* gScrolledWindowWidget; + + static style_prop_t style_prop_func; + static gboolean have_arrow_scaling; ++static gboolean checkbox_check_state; + static gboolean is_initialized; + + #define ARROW_UP 0 +@@ -71,6 +72,10 @@ static gboolean is_initialized; + #define ARROW_RIGHT G_PI_2 + #define ARROW_LEFT (G_PI+G_PI_2) + ++#if !GTK_CHECK_VERSION(3,14,0) ++#define GTK_STATE_FLAG_CHECKED (1 << 11) ++#endif ++ + static GtkStateFlags + GetStateFlagsFromGtkWidgetState(GtkWidgetState* state) + { +@@ -714,6 +719,11 @@ moz_gtk_init() + is_initialized = TRUE; + have_arrow_scaling = (gtk_major_version > 2 || + (gtk_major_version == 2 && gtk_minor_version >= 12)); ++ if (gtk_major_version > 3 || ++ (gtk_major_version == 3 && gtk_minor_version >= 14)) ++ checkbox_check_state = GTK_STATE_FLAG_CHECKED; ++ else ++ checkbox_check_state = GTK_STATE_FLAG_ACTIVE; + + /* Add style property to GtkEntry. + * Adding the style property to the normal GtkEntry class means that it +@@ -1004,10 +1014,10 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect, + gtk_widget_set_sensitive(w, !state->disabled); + gtk_widget_set_direction(w, direction); + gtk_style_context_save(style); +- ++ + if (isradio) { + gtk_style_context_add_class(style, GTK_STYLE_CLASS_RADIO); +- gtk_style_context_set_state(style, selected ? GTK_STATE_FLAG_ACTIVE : ++ gtk_style_context_set_state(style, selected ? checkbox_check_state : + GTK_STATE_FLAG_NORMAL); + gtk_render_option(style, cr, x, y, width, height); + if (state->focused) { +@@ -1025,7 +1035,7 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect, + gtk_style_context_set_state(style, GTK_STATE_FLAG_INCONSISTENT); + gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON(gCheckboxWidget), TRUE); + } else if (selected) { +- gtk_style_context_set_state(style, GTK_STATE_FLAG_ACTIVE); ++ gtk_style_context_set_state(style, checkbox_check_state); + } else { + gtk_toggle_button_set_inconsistent(GTK_TOGGLE_BUTTON(gCheckboxWidget), FALSE); + } +@@ -2588,8 +2598,9 @@ moz_gtk_check_menu_item_paint(cairo_t *cr, GdkRectangle* rect, + gtk_style_context_add_class(style, GTK_STYLE_CLASS_CHECK); + } + +- if (checked) +- state_flags |= GTK_STATE_FLAG_ACTIVE; ++ if (checked) { ++ state_flags |= checkbox_check_state; ++ } + + gtk_style_context_set_state(style, state_flags); + gtk_style_context_get_padding(style, state_flags, &padding); +diff --git widget/gtk/nsLookAndFeel.cpp widget/gtk/nsLookAndFeel.cpp +index 3562cf2..ea4cc0e 100644 +--- widget/gtk/nsLookAndFeel.cpp ++++ widget/gtk/nsLookAndFeel.cpp +@@ -38,7 +38,6 @@ nsLookAndFeel::nsLookAndFeel() + mStyle(nullptr), + #else + mBackgroundStyle(nullptr), +- mViewStyle(nullptr), + mButtonStyle(nullptr), + #endif + mDefaultFontCached(false), mButtonFontCached(false), +@@ -53,7 +52,6 @@ nsLookAndFeel::~nsLookAndFeel() + g_object_unref(mStyle); + #else + g_object_unref(mBackgroundStyle); +- g_object_unref(mViewStyle); + g_object_unref(mButtonStyle); + #endif + } +@@ -114,13 +112,19 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) + 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: +@@ -238,19 +242,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) + 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, +@@ -393,19 +384,6 @@ nsLookAndFeel::NativeGetColor(ColorID aID, nscolor& aColor) + 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; +@@ -967,7 +945,7 @@ nsLookAndFeel::Init() + 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()); + +@@ -977,9 +955,6 @@ nsLookAndFeel::Init() + 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); + +@@ -992,11 +967,24 @@ nsLookAndFeel::Init() + 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<GtkStateFlags>(GTK_STATE_FLAG_FOCUSED|GTK_STATE_FLAG_SELECTED), ++ &color); ++ sTextSelectedBackground = GDK_RGBA_TO_NS_RGBA(color); ++ gtk_style_context_get_color(style, ++ static_cast<GtkStateFlags>(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); +@@ -1005,12 +993,6 @@ nsLookAndFeel::Init() + sMozWindowBackground = GDK_RGBA_TO_NS_RGBA(color); + 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 +@@ -1256,11 +1238,9 @@ nsLookAndFeel::RefreshImpl() + mStyle = nullptr; + #else + g_object_unref(mBackgroundStyle); +- g_object_unref(mViewStyle); + g_object_unref(mButtonStyle); + + mBackgroundStyle = nullptr; +- mViewStyle = nullptr; + mButtonStyle = nullptr; + #endif + +diff --git widget/gtk/nsLookAndFeel.h widget/gtk/nsLookAndFeel.h +index aabbca6..7686cca 100644 +--- widget/gtk/nsLookAndFeel.h ++++ widget/gtk/nsLookAndFeel.h +@@ -35,7 +35,6 @@ protected: + struct _GtkStyle *mStyle; + #else + struct _GtkStyleContext *mBackgroundStyle; +- struct _GtkStyleContext *mViewStyle; + struct _GtkStyleContext *mButtonStyle; + #endif + +@@ -75,8 +74,8 @@ protected: + nscolor sMozFieldBackground; + nscolor sMozWindowText; + nscolor sMozWindowBackground; +- nscolor sMozWindowSelectedText; +- nscolor sMozWindowSelectedBackground; ++ nscolor sTextSelectedText; ++ nscolor sTextSelectedBackground; + nscolor sMozScrollbar; + char16_t sInvisibleCharacter; + float sCaretRatio; |