From 3342822142e9732038265a80a4dea69646f5649b Mon Sep 17 00:00:00 2001 From: Martin Stransky Date: Fri, 27 Mar 2015 13:14:16 +0100 Subject: Update to 37.0 Build 2 --- .gitignore | 2 + firefox.spec | 25 +- mozilla-1073117-check.patch | 125 ------- mozilla-1073117-color.patch | 278 -------------- mozilla-1073117-entry-button-size.patch | 65 ---- mozilla-1073117-focus-sizes.patch | 601 ------------------------------ mozilla-1073117-focus.patch | 641 ++++++++++++++++++++++++++++++++ mozilla-1101582.patch | 122 ------ mozilla-1108834.patch | 11 - mozilla-1110211.patch | 95 ----- sources | 4 +- 11 files changed, 653 insertions(+), 1316 deletions(-) delete mode 100644 mozilla-1073117-check.patch delete mode 100644 mozilla-1073117-color.patch delete mode 100644 mozilla-1073117-entry-button-size.patch delete mode 100644 mozilla-1073117-focus-sizes.patch create mode 100644 mozilla-1073117-focus.patch delete mode 100644 mozilla-1101582.patch delete mode 100644 mozilla-1108834.patch delete mode 100644 mozilla-1110211.patch diff --git a/.gitignore b/.gitignore index d428054..dd01607 100644 --- a/.gitignore +++ b/.gitignore @@ -129,3 +129,5 @@ firefox-3.6.4.source.tar.bz2 /firefox-langpacks-36.0.3-20150320.tar.xz /firefox-36.0.4.source.tar.bz2 /firefox-langpacks-36.0.4-20150321.tar.xz +/firefox-langpacks-37.0-20150327.tar.xz +/firefox-37.0.source.tar.bz2 diff --git a/firefox.spec b/firefox.spec index ec75318..199b78b 100644 --- a/firefox.spec +++ b/firefox.spec @@ -106,14 +106,14 @@ Summary: Mozilla Firefox Web browser Name: firefox -Version: 36.0.4 -Release: 2%{?pre_tag}%{?dist} +Version: 37.0 +Release: 1%{?pre_tag}%{?dist} URL: http://www.mozilla.org/projects/firefox/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Group: Applications/Internet Source0: ftp://ftp.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.bz2 %if %{build_langpacks} -Source1: firefox-langpacks-%{version}%{?pre_version}-20150321.tar.xz +Source1: firefox-langpacks-%{version}%{?pre_version}-20150327.tar.xz %endif Source10: firefox-mozconfig Source11: firefox-mozconfig-branded @@ -133,7 +133,6 @@ Patch18: xulrunner-24.0-jemalloc-ppc.patch Patch19: xulrunner-24.0-s390-inlines.patch Patch20: firefox-build-prbool.patch Patch21: firefox-ppc64le.patch -Patch22: mozilla-1108834.patch Patch23: mozilla-1005535.patch # Fedora specific patches @@ -148,13 +147,8 @@ Patch221: firefox-fedora-ua.patch Patch301: mozilla-1129859-dictfix2.patch # Gtk3 upstream patches -Patch404: mozilla-1101582.patch -Patch405: mozilla-1073117-check.patch -Patch406: mozilla-1073117-color.patch -Patch408: mozilla-1110211.patch -Patch409: mozilla-1073117-entry-button-size.patch Patch410: mozilla-1073117-button-focus.patch -Patch411: mozilla-1073117-focus-sizes.patch +Patch411: mozilla-1073117-focus.patch Patch412: mozilla-1073117-no-gap-tab.patch Patch413: mozilla-975919-gtk3-hidpi.patch Patch414: mozilla-1143686.patch @@ -285,7 +279,6 @@ cd %{tarballdir} %patch19 -p2 -b .s390-inlines %patch20 -p1 -b .prbool %patch21 -p2 -b .ppc64le -%patch22 -p2 -b .1108834 %patch23 -p1 -b .1005535 %patch3 -p2 -b .arm @@ -303,13 +296,8 @@ cd %{tarballdir} %patch301 -p1 -b .dict-fix %if %{toolkit_gtk3} -%patch404 -p1 -b .1101582 -%patch405 -p1 -b .1073117-check -%patch406 -p1 -b .1073117-color -%patch408 -p2 -b .1110211 -%patch409 -p1 -b .1073117-entry-button-size %patch410 -p1 -b .1073117-button-focus -%patch411 -p1 -b .1073117-focus-sizes +%patch411 -p1 -b .1073117-focus %patch412 -p1 -b .1073117-no-gap-tab %patch413 -p2 -b .975919-gtk3-hidpi %patch414 -p1 -b .1143686 @@ -808,6 +796,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #--------------------------------------------------------------------- %changelog +* Fri Mar 27 2015 Martin Stransky - 37.0-1 +- Update to 37.0 Build 2 + * Thu Mar 26 2015 Richard Hughes - 36.0.4-2 - Add an AppData file for the software center diff --git a/mozilla-1073117-check.patch b/mozilla-1073117-check.patch deleted file mode 100644 index eff3b5a..0000000 --- a/mozilla-1073117-check.patch +++ /dev/null @@ -1,125 +0,0 @@ -# HG changeset patch -# Parent cef590a6f94681064fa954890bae6014db819158 -# User Martin Stransky -Bug 1073117 - Add new GTK_STATE_FLAG_CHECKED for checkbox rendering, r=?karlt - -diff --git a/widget/gtk/gtk3drawing.c b/widget/gtk/gtk3drawing.c ---- a/widget/gtk/gtk3drawing.c -+++ b/widget/gtk/gtk3drawing.c -@@ -59,23 +59,28 @@ static GtkWidget* gExpanderWidget; - static GtkWidget* gToolbarSeparatorWidget; - static GtkWidget* gMenuSeparatorWidget; - static GtkWidget* gHPanedWidget; - static GtkWidget* gVPanedWidget; - 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 - #define ARROW_DOWN G_PI - #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) - { - GtkStateFlags stateFlags = GTK_STATE_FLAG_NORMAL; - - if (state->disabled) - stateFlags = GTK_STATE_FLAG_INSENSITIVE; - else { -@@ -709,17 +714,22 @@ moz_gtk_init() - GtkWidgetClass *entry_class; - - if (is_initialized) - return MOZ_GTK_SUCCESS; - - 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 - * will work without issues inside GtkComboBox and for Spinbuttons. */ - entry_class = g_type_class_ref(GTK_TYPE_ENTRY); - - return MOZ_GTK_SUCCESS; - } - -@@ -999,20 +1009,20 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec - focus_width = width + 2 * indicator_spacing; - focus_height = height + 2 * indicator_spacing; - - style = gtk_widget_get_style_context(w); - - 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) { - gtk_render_focus(style, cr, focus_x, focus_y, - focus_width, focus_height); - } - } - else { -@@ -1020,17 +1030,17 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec - * 'indeterminate' type on checkboxes. In GTK, the shadow type - * must also be changed for the state to be drawn. - */ - gtk_style_context_add_class(style, GTK_STYLE_CLASS_CHECK); - if (inconsistent) { - 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); - } - gtk_render_check(style, cr, x, y, width, height); - if (state->focused) { - gtk_render_focus(style, cr, - focus_x, focus_y, focus_width, focus_height); - } -@@ -2583,18 +2593,19 @@ moz_gtk_check_menu_item_paint(cairo_t *c - style = gtk_widget_get_style_context(gCheckMenuItemWidget); - gtk_style_context_save(style); - if (isradio) { - gtk_style_context_add_class(style, GTK_STYLE_CLASS_RADIO); - } else { - 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); - - offset = gtk_container_get_border_width(GTK_CONTAINER(gCheckMenuItemWidget)) + - padding.left + 2; - - if (direction == GTK_TEXT_DIR_RTL) { diff --git a/mozilla-1073117-color.patch b/mozilla-1073117-color.patch deleted file mode 100644 index b3dee3a..0000000 --- a/mozilla-1073117-color.patch +++ /dev/null @@ -1,278 +0,0 @@ -# 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(); - }; - diff --git a/mozilla-1073117-entry-button-size.patch b/mozilla-1073117-entry-button-size.patch deleted file mode 100644 index 24c0ac2..0000000 --- a/mozilla-1073117-entry-button-size.patch +++ /dev/null @@ -1,65 +0,0 @@ -# HG changeset patch -# Parent 70de2960aa877d7755ee6f66bf2d4c4c46bfed2c -# User Martin Stransky -Bug 1073117 - Theme issues with GTK 3.14 - fix gtk button and entry size, r=?karlt -Theme borders has been removed in Gtk 3.14 so we can't use them to calculate button size. -Should computed as border + padding. Also update nsNativeThemeGTK::GetWidgetPadding() for that. - -diff --git a/widget/gtk/gtk3drawing.c b/widget/gtk/gtk3drawing.c ---- a/widget/gtk/gtk3drawing.c -+++ b/widget/gtk/gtk3drawing.c -@@ -2686,25 +2686,23 @@ moz_gtk_get_widget_border(GtkThemeWidget - { - GtkBorder inner_border; - gboolean interior_focus; - gint focus_width, focus_pad; - - ensure_button_widget(); - *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gButtonWidget)); - -+ style = gtk_widget_get_style_context(gButtonWidget); -+ moz_gtk_add_style_border(style, left, top, right, bottom); -+ - /* Don't add this padding in HTML, otherwise the buttons will - become too big and stuff the layout. */ - if (!inhtml) { -- moz_gtk_widget_get_focus(gButtonWidget, &interior_focus, &focus_width, &focus_pad); -- moz_gtk_button_get_inner_border(gButtonWidget, &inner_border); -- *left += focus_width + focus_pad + inner_border.left; -- *right += focus_width + focus_pad + inner_border.right; -- *top += focus_width + focus_pad + inner_border.top; -- *bottom += focus_width + focus_pad + inner_border.bottom; -+ moz_gtk_add_style_padding(style, left, top, right, bottom); - } - - moz_gtk_add_style_border(gtk_widget_get_style_context(gButtonWidget), - left, top, right, bottom); - return MOZ_GTK_SUCCESS; - } - case MOZ_GTK_ENTRY: - { -diff --git a/widget/gtk/nsNativeThemeGTK.cpp b/widget/gtk/nsNativeThemeGTK.cpp ---- a/widget/gtk/nsNativeThemeGTK.cpp -+++ b/widget/gtk/nsNativeThemeGTK.cpp -@@ -992,16 +992,21 @@ nsNativeThemeGTK::GetWidgetPadding(nsDev - switch (aWidgetType) { - case NS_THEME_BUTTON_FOCUS: - case NS_THEME_TOOLBAR_BUTTON: - case NS_THEME_TOOLBAR_DUAL_BUTTON: - case NS_THEME_TAB_SCROLLARROW_BACK: - case NS_THEME_TAB_SCROLLARROW_FORWARD: - case NS_THEME_DROPDOWN_BUTTON: - case NS_THEME_TOOLBAR_BUTTON_DROPDOWN: -+ case NS_THEME_FOCUS_OUTLINE: -+ case NS_THEME_NUMBER_INPUT: -+ case NS_THEME_TEXTFIELD: -+ case NS_THEME_TEXTFIELD_MULTILINE: -+ case NS_THEME_BUTTON: - case NS_THEME_BUTTON_ARROW_UP: - case NS_THEME_BUTTON_ARROW_DOWN: - case NS_THEME_BUTTON_ARROW_NEXT: - case NS_THEME_BUTTON_ARROW_PREVIOUS: - case NS_THEME_RANGE_THUMB: - // Radios and checkboxes return a fixed size in GetMinimumWidgetSize - // and have a meaningful baseline, so they can't have - // author-specified padding. diff --git a/mozilla-1073117-focus-sizes.patch b/mozilla-1073117-focus-sizes.patch deleted file mode 100644 index 0e0047b..0000000 --- a/mozilla-1073117-focus-sizes.patch +++ /dev/null @@ -1,601 +0,0 @@ -# HG changeset patch -# Parent 900ea94508c5b6e99d40ec7e5d25e0d4ca6cfef8 -# User Martin Stransky -Bug 1073117 - Theme issues with GTK 3.14 - removed obsoleted focus style properties -and replaced by border and padding. r=?karlt - -diff --git a/widget/gtk/gtk2drawing.c b/widget/gtk/gtk2drawing.c ---- a/widget/gtk/gtk2drawing.c -+++ b/widget/gtk/gtk2drawing.c -@@ -826,17 +826,17 @@ moz_gtk_get_focus_outline_size(gint* foc - *focus_v_width = YTHICKNESS(gEntryWidget->style) + focus_width; - } else { - *focus_h_width = focus_width; - *focus_v_width = focus_width; - } - return MOZ_GTK_SUCCESS; - } - --gint -+static gint - moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus, - gint* focus_width, gint* focus_pad) - { - gtk_widget_style_get (widget, - "interior-focus", interior_focus, - "focus-line-width", focus_width, - "focus-padding", focus_pad, - NULL); -@@ -923,17 +923,17 @@ moz_gtk_splitter_get_metrics(gint orient - gtk_widget_style_get(gHPanedWidget, "handle_size", size, NULL); - } else { - ensure_vpaned_widget(); - gtk_widget_style_get(gVPanedWidget, "handle_size", size, NULL); - } - return MOZ_GTK_SUCCESS; - } - --gint -+static gint - moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border) - { - static const GtkBorder default_inner_border = { 1, 1, 1, 1 }; - GtkBorder *tmp_border; - - gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL); - - if (tmp_border) { -diff --git a/widget/gtk/gtk3drawing.c b/widget/gtk/gtk3drawing.c ---- a/widget/gtk/gtk3drawing.c -+++ b/widget/gtk/gtk3drawing.c -@@ -757,47 +757,29 @@ moz_gtk_radio_get_metrics(gint* indicato - NULL); - - return MOZ_GTK_SUCCESS; - } - - gint - moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width) - { -- gboolean interior_focus; - gint focus_width = 0; -+ GtkBorder border; -+ GtkBorder padding; -+ GtkStyleContext *style; - - ensure_entry_widget(); -- gtk_widget_style_get(gEntryWidget, -- "interior-focus", &interior_focus, -- "focus-line-width", &focus_width, -- NULL); -- if (interior_focus) { -- GtkBorder border; -- GtkStyleContext *style = gtk_widget_get_style_context(gEntryWidget); -- gtk_style_context_get_border(style, 0, &border); -- *focus_h_width = border.left + focus_width; -- *focus_v_width = border.top + focus_width; -- } else { -- *focus_h_width = focus_width; -- *focus_v_width = focus_width; -- } -- return MOZ_GTK_SUCCESS; --} -- --gint --moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus, -- gint* focus_width, gint* focus_pad) --{ -- gtk_widget_style_get (widget, -- "interior-focus", interior_focus, -- "focus-line-width", focus_width, -- "focus-padding", focus_pad, -- NULL); -- -+ style = gtk_widget_get_style_context(gEntryWidget); -+ gtk_style_context_get(style, 0, "outline-width", &focus_width, NULL); -+ -+ gtk_style_context_get_border(style, 0, &border); -+ gtk_style_context_get_padding(style, 0, &padding); -+ *focus_h_width = border.left + padding.left + focus_width; -+ *focus_v_width = border.top + padding.top + focus_width; - return MOZ_GTK_SUCCESS; - } - - gint - moz_gtk_menuitem_get_horizontal_padding(gint* horizontal_padding) - { - ensure_menu_item_widget(); - -@@ -875,34 +857,16 @@ moz_gtk_splitter_get_metrics(gint orient - gtk_widget_style_get(gHPanedWidget, "handle_size", size, NULL); - } else { - ensure_vpaned_widget(); - gtk_widget_style_get(gVPanedWidget, "handle_size", size, NULL); - } - return MOZ_GTK_SUCCESS; - } - --gint --moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border) --{ -- static const GtkBorder default_inner_border = { 1, 1, 1, 1 }; -- GtkBorder *tmp_border; -- -- gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL); -- -- if (tmp_border) { -- *inner_border = *tmp_border; -- gtk_border_free(tmp_border); -- } -- else -- *inner_border = default_inner_border; -- -- return MOZ_GTK_SUCCESS; --} -- - static gint - moz_gtk_button_paint(cairo_t *cr, GdkRectangle* rect, - GtkWidgetState* state, - GtkReliefStyle relief, GtkWidget* widget, - GtkTextDirection direction) - { - GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); - GtkStyleContext* style = gtk_widget_get_style_context(widget); -@@ -1032,43 +996,36 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec - } - - static gint - calculate_button_inner_rect(GtkWidget* button, GdkRectangle* rect, - GdkRectangle* inner_rect, - GtkTextDirection direction, - gboolean ignore_focus) - { -- GtkBorder inner_border; -- gboolean interior_focus; -- gint focus_width, focus_pad; - GtkStyleContext* style; - GtkBorder border; -+ GtkBorder padding = {0, 0, 0, 0}; - - style = gtk_widget_get_style_context(button); - -+ gtk_style_context_get_border(style, 0, &border); -+ - /* This mirrors gtkbutton's child positioning */ -- moz_gtk_button_get_inner_border(button, &inner_border); -- moz_gtk_widget_get_focus(button, &interior_focus, -- &focus_width, &focus_pad); -- -- if (ignore_focus) -- focus_width = focus_pad = 0; -- -- gtk_style_context_get_border(style, 0, &border); -- -- inner_rect->x = rect->x + border.left + focus_width + focus_pad; -+ if (!ignore_focus) -+ gtk_style_context_get_padding(style, 0, &padding); -+ -+ inner_rect->x = rect->x + border.left; - inner_rect->x += direction == GTK_TEXT_DIR_LTR ? -- inner_border.left : inner_border.right; -- inner_rect->y = rect->y + inner_border.top + border.top + -- focus_width + focus_pad; -- inner_rect->width = MAX(1, rect->width - inner_border.left - -- inner_border.right - (border.left + focus_pad + focus_width) * 2); -- inner_rect->height = MAX(1, rect->height - inner_border.top - -- inner_border.bottom - (border.top + focus_pad + focus_width) * 2); -+ padding.left : padding.right; -+ inner_rect->y = rect->y + padding.top + border.top; -+ inner_rect->width = MAX(1, rect->width - padding.left - -+ padding.right - border.left * 2); -+ inner_rect->height = MAX(1, rect->height - padding.top - -+ padding.bottom - border.top * 2); - - return MOZ_GTK_SUCCESS; - } - - - static gint - calculate_arrow_rect(GtkWidget* arrow, GdkRectangle* rect, - GdkRectangle* arrow_rect, GtkTextDirection direction) -@@ -1427,29 +1384,22 @@ moz_gtk_vpaned_paint(cairo_t *cr, GdkRec - // See gtk_entry_draw() for reference. - static gint - moz_gtk_entry_paint(cairo_t *cr, GdkRectangle* rect, - GtkWidgetState* state, - GtkWidget* widget, GtkTextDirection direction) - { - gint x = rect->x, y = rect->y, width = rect->width, height = rect->height; - GtkStyleContext* style; -- gboolean interior_focus; -- gint focus_width; - int draw_focus_outline_only = state->depressed; // NS_THEME_FOCUS_OUTLINE - - gtk_widget_set_direction(widget, direction); - - style = gtk_widget_get_style_context(widget); - -- gtk_widget_style_get(widget, -- "interior-focus", &interior_focus, -- "focus-line-width", &focus_width, -- NULL); -- - if (draw_focus_outline_only) { - // Inflate the given 'rect' with the focus outline size. - gint h, v; - moz_gtk_get_focus_outline_size(&h, &v); - rect->x -= h; - rect->width += 2 * h; - rect->y -= v; - rect->height += 2 * v; -@@ -1471,40 +1421,27 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect - /* Now paint the shadow and focus border. - * We do like in gtk_entry_draw_frame, we first draw the shadow, a tad - * smaller when focused if the focus is not interior, then the focus. */ - - if (state->focused && !state->disabled) { - /* This will get us the lit borders that focused textboxes enjoy on - * some themes. */ - gtk_style_context_set_state(style, GTK_STATE_FLAG_FOCUSED); -- if (!interior_focus) { -- /* Indent the border a little bit if we have exterior focus -- (this is what GTK does to draw native entries) */ -- x += focus_width; -- y += focus_width; -- width -= 2 * focus_width; -- height -= 2 * focus_width; -- } - } - - if (state->disabled) { - gtk_style_context_set_state(style, GTK_STATE_FLAG_INSENSITIVE); - } - - if (!draw_focus_outline_only) { - gtk_render_background(style, cr, x, y, width, height); - } - gtk_render_frame(style, cr, x, y, width, height); - -- if (state->focused && !state->disabled) { -- if (!interior_focus) { -- gtk_render_focus(style, cr, rect->x, rect->y, rect->width, rect->height); -- } -- } - gtk_style_context_restore(style); - - return MOZ_GTK_SUCCESS; - } - - static gint - moz_gtk_treeview_paint(cairo_t *cr, GdkRectangle* rect, - GtkWidgetState* state, -@@ -1799,56 +1736,48 @@ moz_gtk_combo_box_entry_button_paint(cai - static gint - moz_gtk_container_paint(cairo_t *cr, GdkRectangle* rect, - GtkWidgetState* state, - gboolean isradio, GtkTextDirection direction) - { - GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); - GtkStyleContext* style; - GtkWidget *widget; -- gboolean interior_focus; -- gint focus_width, focus_pad; - - if (isradio) { - ensure_radiobutton_widget(); - widget = gRadiobuttonWidget; - } else { - ensure_checkbox_widget(); - widget = gCheckboxWidget; - } - gtk_widget_set_direction(widget, direction); - - style = gtk_widget_get_style_context(widget); - gtk_style_context_save(style); -- moz_gtk_widget_get_focus(widget, &interior_focus, &focus_width, &focus_pad); - gtk_style_context_set_state(style, state_flags); - - /* this is for drawing a prelight box */ - if (state_flags & GTK_STATE_FLAG_PRELIGHT) { - gtk_render_background(style, cr, - rect->x, rect->y, rect->width, rect->height); - } - -- if (state->focused && !interior_focus) { -- gtk_render_focus(style, cr, -- rect->x, rect->y, rect->width, rect->height); -- } - gtk_style_context_restore(style); - - return MOZ_GTK_SUCCESS; - } - - static gint - moz_gtk_toggle_label_paint(cairo_t *cr, GdkRectangle* rect, - GtkWidgetState* state, - gboolean isradio, GtkTextDirection direction) - { - GtkStyleContext *style; - GtkWidget *widget; -- gboolean interior_focus; - - if (!state->focused) - return MOZ_GTK_SUCCESS; - - if (isradio) { - ensure_radiobutton_widget(); - widget = gRadiobuttonWidget; - } else { -@@ -1859,20 +1788,16 @@ moz_gtk_toggle_label_paint(cairo_t *cr, - gtk_style_context_save(style); - if (isradio) { - gtk_style_context_add_class(style, GTK_STYLE_CLASS_RADIO); - } else { - gtk_style_context_add_class(style, GTK_STYLE_CLASS_CHECK); - } - gtk_widget_set_direction(widget, direction); - -- gtk_widget_style_get(widget, "interior-focus", &interior_focus, NULL); -- if (!interior_focus) -- return MOZ_GTK_SUCCESS; -- - gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state)); - gtk_render_focus(style, cr, - rect->x, rect->y, rect->width, rect->height); - gtk_style_context_restore(style); - - return MOZ_GTK_SUCCESS; - } - -@@ -2661,18 +2586,16 @@ moz_gtk_get_widget_border(GtkThemeWidget - GtkWidget* w; - GtkStyleContext* style; - *left = *top = *right = *bottom = 0; - - switch (widget) { - case MOZ_GTK_BUTTON: - { - GtkBorder inner_border; -- gboolean interior_focus; -- gint focus_width, focus_pad; - - ensure_button_widget(); - *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gButtonWidget)); - - style = gtk_widget_get_style_context(gButtonWidget); - moz_gtk_add_style_border(style, left, top, right, bottom); - - /* Don't add this padding in HTML, otherwise the buttons will -@@ -2705,33 +2628,32 @@ moz_gtk_get_widget_border(GtkThemeWidget - } - case MOZ_GTK_TREE_HEADER_CELL: - { - /* A Tree Header in GTK is just a different styled button - * It must be placed in a TreeView for getting the correct style - * assigned. - * That is why the following code is the same as for MOZ_GTK_BUTTON. - * */ -- -- GtkBorder inner_border; -- gboolean interior_focus; -- gint focus_width, focus_pad; -+ gint focus_width; -+ GtkStyleContext *style; - - ensure_tree_header_cell_widget(); - *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gTreeHeaderCellWidget)); - -- moz_gtk_widget_get_focus(gTreeHeaderCellWidget, &interior_focus, &focus_width, &focus_pad); -- moz_gtk_button_get_inner_border(gTreeHeaderCellWidget, &inner_border); -- *left += focus_width + focus_pad + inner_border.left; -- *right += focus_width + focus_pad + inner_border.right; -- *top += focus_width + focus_pad + inner_border.top; -- *bottom += focus_width + focus_pad + inner_border.bottom; -- -- moz_gtk_add_style_border(gtk_widget_get_style_context(gTreeHeaderCellWidget), -- left, top, right, bottom); -+ style = gtk_widget_get_style_context(gTreeHeaderCellWidget); -+ gtk_style_context_get(style, 0, "outline-width", &focus_width, NULL); -+ -+ *left += focus_width; -+ *right += focus_width; -+ *top += focus_width; -+ *bottom += focus_width; -+ -+ moz_gtk_add_style_border(style, left, top, right, bottom); -+ moz_gtk_add_style_padding(style, left, top, right, bottom); - return MOZ_GTK_SUCCESS; - } - case MOZ_GTK_TREE_HEADER_SORTARROW: - ensure_tree_header_cell_widget(); - w = gTreeHeaderSortArrowWidget; - break; - case MOZ_GTK_DROPDOWN_ENTRY: - ensure_combo_box_entry_widgets(); -@@ -2741,30 +2663,34 @@ moz_gtk_get_widget_border(GtkThemeWidget - ensure_combo_box_entry_widgets(); - w = gComboBoxEntryButtonWidget; - break; - case MOZ_GTK_DROPDOWN: - { - /* We need to account for the arrow on the dropdown, so text - * doesn't come too close to the arrow, or in some cases spill - * into the arrow. */ -- gboolean ignored_interior_focus, wide_separators; -- gint focus_width, focus_pad, separator_width; -+ gboolean wide_separators; -+ gint focus_width, separator_width; - GtkRequisition arrow_req; - GtkBorder border; - - ensure_combo_box_widgets(); - - *left = gtk_container_get_border_width(GTK_CONTAINER(gComboBoxButtonWidget)); - - if (!inhtml) { -- moz_gtk_widget_get_focus(gComboBoxButtonWidget, -- &ignored_interior_focus, -- &focus_width, &focus_pad); -- *left += focus_width + focus_pad; -+ gint focus_width; -+ GtkBorder focus_pad; -+ GtkStyleContext *style = gtk_widget_get_style_context(gComboBoxButtonWidget); -+ -+ gtk_style_context_get(style, 0, "outline-width", &focus_width, NULL); -+ gtk_style_context_get_padding(style, 0, &focus_pad); -+ -+ *left += focus_width + focus_pad.left; - } - - style = gtk_widget_get_style_context(gComboBoxButtonWidget); - gtk_style_context_get_border(style, 0, &border); - - *top = *left + border.top; - *left += border.left; - -@@ -2818,67 +2744,41 @@ moz_gtk_get_widget_border(GtkThemeWidget - break; - case MOZ_GTK_FRAME: - ensure_frame_widget(); - w = gFrameWidget; - break; - case MOZ_GTK_CHECKBUTTON_LABEL: - case MOZ_GTK_RADIOBUTTON_LABEL: - { -- gboolean interior_focus; -- gint focus_width, focus_pad; -- -- /* If the focus is interior, then the label has a border of -- (focus_width + focus_pad). */ - if (widget == MOZ_GTK_CHECKBUTTON_LABEL) { - ensure_checkbox_widget(); -- moz_gtk_widget_get_focus(gCheckboxWidget, &interior_focus, -- &focus_width, &focus_pad); -+ w = gCheckboxWidget; - } - else { - ensure_radiobutton_widget(); -- moz_gtk_widget_get_focus(gRadiobuttonWidget, &interior_focus, -- &focus_width, &focus_pad); -+ w = gRadiobuttonWidget; - } -- -- if (interior_focus) -- *left = *top = *right = *bottom = (focus_width + focus_pad); -- -+ moz_gtk_add_style_border(gtk_widget_get_style_context(w), -+ left, top, right, bottom); - return MOZ_GTK_SUCCESS; - } - - case MOZ_GTK_CHECKBUTTON_CONTAINER: - case MOZ_GTK_RADIOBUTTON_CONTAINER: - { -- gboolean interior_focus; -- gint focus_width, focus_pad; -- -- /* If the focus is _not_ interior, then the container has a border -- of (focus_width + focus_pad). */ - if (widget == MOZ_GTK_CHECKBUTTON_CONTAINER) { - ensure_checkbox_widget(); -- moz_gtk_widget_get_focus(gCheckboxWidget, &interior_focus, -- &focus_width, &focus_pad); - w = gCheckboxWidget; - } else { - ensure_radiobutton_widget(); -- moz_gtk_widget_get_focus(gRadiobuttonWidget, &interior_focus, -- &focus_width, &focus_pad); - w = gRadiobuttonWidget; - } - - *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(w)); -- -- if (!interior_focus) { -- *left += (focus_width + focus_pad); -- *right += (focus_width + focus_pad); -- *top += (focus_width + focus_pad); -- *bottom += (focus_width + focus_pad); -- } -- - return MOZ_GTK_SUCCESS; - } - case MOZ_GTK_MENUPOPUP: - ensure_menu_popup_widget(); - w = gMenuPopupWidget; - break; - case MOZ_GTK_MENUITEM: - case MOZ_GTK_CHECKMENUITEM: -diff --git a/widget/gtk/gtkdrawing.h b/widget/gtk/gtkdrawing.h ---- a/widget/gtk/gtkdrawing.h -+++ b/widget/gtk/gtkdrawing.h -@@ -288,49 +288,26 @@ moz_gtk_checkbox_get_metrics(gint* indic - * indicator_spacing: [OUT] the spacing between the indicator and its - * container - * - * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise - */ - gint - moz_gtk_radio_get_metrics(gint* indicator_size, gint* indicator_spacing); - --/** -- * Get the inner-border value for a GtkButton widget (button or tree header) -- * widget: [IN] the widget to get the border value for -- * inner_border: [OUT] the inner border -- * -- * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise -- */ --gint --moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border); -- - /** Get the extra size for the focus ring for outline:auto. - * widget: [IN] the widget to get the focus metrics for - * focus_h_width: [OUT] the horizontal width - * focus_v_width: [OUT] the vertical width - * - * returns: MOZ_GTK_SUCCESS - */ - gint - moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width); - --/** Get the focus metrics for a treeheadercell, button, checkbox, or radio button. -- * widget: [IN] the widget to get the focus metrics for -- * interior_focus: [OUT] whether the focus is drawn around the -- * label (TRUE) or around the whole container (FALSE) -- * focus_width: [OUT] the width of the focus line -- * focus_pad: [OUT] the padding between the focus line and children -- * -- * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise -- */ --gint --moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus, -- gint* focus_width, gint* focus_pad); -- - /** Get the horizontal padding for the menuitem widget or checkmenuitem widget. - * horizontal_padding: [OUT] The left and right padding of the menuitem or checkmenuitem - * - * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise - */ - gint - moz_gtk_menuitem_get_horizontal_padding(gint* horizontal_padding); - -diff --git a/widget/gtk/mozgtk/mozgtk.c b/widget/gtk/mozgtk/mozgtk.c ---- a/widget/gtk/mozgtk/mozgtk.c -+++ b/widget/gtk/mozgtk/mozgtk.c -@@ -510,16 +510,17 @@ STUB(gtk_render_frame_gap) - STUB(gtk_render_handle) - STUB(gtk_render_line) - STUB(gtk_render_option) - STUB(gtk_render_slider) - STUB(gtk_scale_new) - STUB(gtk_scrollbar_new) - STUB(gtk_style_context_add_class) - STUB(gtk_style_context_add_region) -+STUB(gtk_style_context_get) - STUB(gtk_style_context_get_background_color) - STUB(gtk_style_context_get_border) - STUB(gtk_style_context_get_border_color) - STUB(gtk_style_context_get_color) - STUB(gtk_style_context_get_margin) - STUB(gtk_style_context_get_padding) - STUB(gtk_style_context_new) - STUB(gtk_style_context_remove_region) diff --git a/mozilla-1073117-focus.patch b/mozilla-1073117-focus.patch new file mode 100644 index 0000000..a67f6e9 --- /dev/null +++ b/mozilla-1073117-focus.patch @@ -0,0 +1,641 @@ +# HG changeset patch +# User Martin Stransky +# Parent 0850966fdb761c309032575cbc6748a27d794983 +Bug 1073117 - Theme issues with GTK 3.14 - fix gtk button and entry size, r=?karlt +Inner borders and focus theming has been removed in Gtk 3.14 so we can't use them to calculate button size. +The size should be computed as border + padding. + + +diff --git a/widget/gtk/gtk2drawing.c b/widget/gtk/gtk2drawing.c +--- a/widget/gtk/gtk2drawing.c ++++ b/widget/gtk/gtk2drawing.c +@@ -826,17 +826,17 @@ moz_gtk_get_focus_outline_size(gint* foc + *focus_v_width = YTHICKNESS(gEntryWidget->style) + focus_width; + } else { + *focus_h_width = focus_width; + *focus_v_width = focus_width; + } + return MOZ_GTK_SUCCESS; + } + +-gint ++static gint + moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus, + gint* focus_width, gint* focus_pad) + { + gtk_widget_style_get (widget, + "interior-focus", interior_focus, + "focus-line-width", focus_width, + "focus-padding", focus_pad, + NULL); +@@ -923,17 +923,17 @@ moz_gtk_splitter_get_metrics(gint orient + gtk_widget_style_get(gHPanedWidget, "handle_size", size, NULL); + } else { + ensure_vpaned_widget(); + gtk_widget_style_get(gVPanedWidget, "handle_size", size, NULL); + } + return MOZ_GTK_SUCCESS; + } + +-gint ++static gint + moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border) + { + static const GtkBorder default_inner_border = { 1, 1, 1, 1 }; + GtkBorder *tmp_border; + + gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL); + + if (tmp_border) { +diff --git a/widget/gtk/gtk3drawing.c b/widget/gtk/gtk3drawing.c +--- a/widget/gtk/gtk3drawing.c ++++ b/widget/gtk/gtk3drawing.c +@@ -756,48 +756,28 @@ moz_gtk_radio_get_metrics(gint* indicato + "indicator_spacing", indicator_spacing, + NULL); + + return MOZ_GTK_SUCCESS; + } + + gint + moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width) +-{ +- gboolean interior_focus; +- gint focus_width = 0; ++{ ++ GtkBorder border; ++ GtkBorder padding; ++ GtkStyleContext *style; + + ensure_entry_widget(); +- gtk_widget_style_get(gEntryWidget, +- "interior-focus", &interior_focus, +- "focus-line-width", &focus_width, +- NULL); +- if (interior_focus) { +- GtkBorder border; +- GtkStyleContext *style = gtk_widget_get_style_context(gEntryWidget); +- gtk_style_context_get_border(style, 0, &border); +- *focus_h_width = border.left + focus_width; +- *focus_v_width = border.top + focus_width; +- } else { +- *focus_h_width = focus_width; +- *focus_v_width = focus_width; +- } +- return MOZ_GTK_SUCCESS; +-} +- +-gint +-moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus, +- gint* focus_width, gint* focus_pad) +-{ +- gtk_widget_style_get (widget, +- "interior-focus", interior_focus, +- "focus-line-width", focus_width, +- "focus-padding", focus_pad, +- NULL); +- ++ style = gtk_widget_get_style_context(gEntryWidget); ++ ++ gtk_style_context_get_border(style, 0, &border); ++ gtk_style_context_get_padding(style, 0, &padding); ++ *focus_h_width = border.left + padding.left; ++ *focus_v_width = border.top + padding.top; + return MOZ_GTK_SUCCESS; + } + + gint + moz_gtk_menuitem_get_horizontal_padding(gint* horizontal_padding) + { + ensure_menu_item_widget(); + +@@ -875,34 +855,16 @@ moz_gtk_splitter_get_metrics(gint orient + gtk_widget_style_get(gHPanedWidget, "handle_size", size, NULL); + } else { + ensure_vpaned_widget(); + gtk_widget_style_get(gVPanedWidget, "handle_size", size, NULL); + } + return MOZ_GTK_SUCCESS; + } + +-gint +-moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border) +-{ +- static const GtkBorder default_inner_border = { 1, 1, 1, 1 }; +- GtkBorder *tmp_border; +- +- gtk_widget_style_get (widget, "inner-border", &tmp_border, NULL); +- +- if (tmp_border) { +- *inner_border = *tmp_border; +- gtk_border_free(tmp_border); +- } +- else +- *inner_border = default_inner_border; +- +- return MOZ_GTK_SUCCESS; +-} +- + static gint + moz_gtk_button_paint(cairo_t *cr, GdkRectangle* rect, + GtkWidgetState* state, + GtkReliefStyle relief, GtkWidget* widget, + GtkTextDirection direction) + { + GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); + GtkStyleContext* style = gtk_widget_get_style_context(widget); +@@ -1032,43 +994,33 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec + } + + static gint + calculate_button_inner_rect(GtkWidget* button, GdkRectangle* rect, + GdkRectangle* inner_rect, + GtkTextDirection direction, + gboolean ignore_focus) + { +- GtkBorder inner_border; +- gboolean interior_focus; +- gint focus_width, focus_pad; + GtkStyleContext* style; + GtkBorder border; ++ GtkBorder padding = {0, 0, 0, 0}; + + style = gtk_widget_get_style_context(button); + + /* This mirrors gtkbutton's child positioning */ +- moz_gtk_button_get_inner_border(button, &inner_border); +- moz_gtk_widget_get_focus(button, &interior_focus, +- &focus_width, &focus_pad); +- +- if (ignore_focus) +- focus_width = focus_pad = 0; +- +- gtk_style_context_get_border(style, 0, &border); +- +- inner_rect->x = rect->x + border.left + focus_width + focus_pad; +- inner_rect->x += direction == GTK_TEXT_DIR_LTR ? +- inner_border.left : inner_border.right; +- inner_rect->y = rect->y + inner_border.top + border.top + +- focus_width + focus_pad; +- inner_rect->width = MAX(1, rect->width - inner_border.left - +- inner_border.right - (border.left + focus_pad + focus_width) * 2); +- inner_rect->height = MAX(1, rect->height - inner_border.top - +- inner_border.bottom - (border.top + focus_pad + focus_width) * 2); ++ gtk_style_context_get_border(style, 0, &border); ++ if (!ignore_focus) ++ gtk_style_context_get_padding(style, 0, &padding); ++ ++ inner_rect->x = rect->x + border.left + padding.left; ++ inner_rect->y = rect->y + padding.top + border.top; ++ inner_rect->width = MAX(1, rect->width - padding.left - ++ padding.right - border.left * 2); ++ inner_rect->height = MAX(1, rect->height - padding.top - ++ padding.bottom - border.top * 2); + + return MOZ_GTK_SUCCESS; + } + + + static gint + calculate_arrow_rect(GtkWidget* arrow, GdkRectangle* rect, + GdkRectangle* arrow_rect, GtkTextDirection direction) +@@ -1427,29 +1379,22 @@ moz_gtk_vpaned_paint(cairo_t *cr, GdkRec + // See gtk_entry_draw() for reference. + static gint + moz_gtk_entry_paint(cairo_t *cr, GdkRectangle* rect, + GtkWidgetState* state, + GtkWidget* widget, GtkTextDirection direction) + { + gint x = rect->x, y = rect->y, width = rect->width, height = rect->height; + GtkStyleContext* style; +- gboolean interior_focus; +- gint focus_width; + int draw_focus_outline_only = state->depressed; // NS_THEME_FOCUS_OUTLINE + + gtk_widget_set_direction(widget, direction); + + style = gtk_widget_get_style_context(widget); + +- gtk_widget_style_get(widget, +- "interior-focus", &interior_focus, +- "focus-line-width", &focus_width, +- NULL); +- + if (draw_focus_outline_only) { + // Inflate the given 'rect' with the focus outline size. + gint h, v; + moz_gtk_get_focus_outline_size(&h, &v); + rect->x -= h; + rect->width += 2 * h; + rect->y -= v; + rect->height += 2 * v; +@@ -1471,40 +1416,27 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect + /* Now paint the shadow and focus border. + * We do like in gtk_entry_draw_frame, we first draw the shadow, a tad + * smaller when focused if the focus is not interior, then the focus. */ + + if (state->focused && !state->disabled) { + /* This will get us the lit borders that focused textboxes enjoy on + * some themes. */ + gtk_style_context_set_state(style, GTK_STATE_FLAG_FOCUSED); +- if (!interior_focus) { +- /* Indent the border a little bit if we have exterior focus +- (this is what GTK does to draw native entries) */ +- x += focus_width; +- y += focus_width; +- width -= 2 * focus_width; +- height -= 2 * focus_width; +- } + } + + if (state->disabled) { + gtk_style_context_set_state(style, GTK_STATE_FLAG_INSENSITIVE); + } + + if (!draw_focus_outline_only) { + gtk_render_background(style, cr, x, y, width, height); + } + gtk_render_frame(style, cr, x, y, width, height); + +- if (state->focused && !state->disabled) { +- if (!interior_focus) { +- gtk_render_focus(style, cr, rect->x, rect->y, rect->width, rect->height); +- } +- } + gtk_style_context_restore(style); + + return MOZ_GTK_SUCCESS; + } + + static gint + moz_gtk_treeview_paint(cairo_t *cr, GdkRectangle* rect, + GtkWidgetState* state, +@@ -1799,56 +1731,48 @@ moz_gtk_combo_box_entry_button_paint(cai + static gint + moz_gtk_container_paint(cairo_t *cr, GdkRectangle* rect, + GtkWidgetState* state, + gboolean isradio, GtkTextDirection direction) + { + GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); + GtkStyleContext* style; + GtkWidget *widget; +- gboolean interior_focus; +- gint focus_width, focus_pad; + + if (isradio) { + ensure_radiobutton_widget(); + widget = gRadiobuttonWidget; + } else { + ensure_checkbox_widget(); + widget = gCheckboxWidget; + } + gtk_widget_set_direction(widget, direction); + + style = gtk_widget_get_style_context(widget); + gtk_style_context_save(style); +- moz_gtk_widget_get_focus(widget, &interior_focus, &focus_width, &focus_pad); + gtk_style_context_set_state(style, state_flags); + + /* this is for drawing a prelight box */ + if (state_flags & GTK_STATE_FLAG_PRELIGHT) { + gtk_render_background(style, cr, + rect->x, rect->y, rect->width, rect->height); + } + +- if (state->focused && !interior_focus) { +- gtk_render_focus(style, cr, +- rect->x, rect->y, rect->width, rect->height); +- } + gtk_style_context_restore(style); + + return MOZ_GTK_SUCCESS; + } + + static gint + moz_gtk_toggle_label_paint(cairo_t *cr, GdkRectangle* rect, + GtkWidgetState* state, + gboolean isradio, GtkTextDirection direction) + { + GtkStyleContext *style; + GtkWidget *widget; +- gboolean interior_focus; + + if (!state->focused) + return MOZ_GTK_SUCCESS; + + if (isradio) { + ensure_radiobutton_widget(); + widget = gRadiobuttonWidget; + } else { +@@ -1859,20 +1783,16 @@ moz_gtk_toggle_label_paint(cairo_t *cr, + gtk_style_context_save(style); + if (isradio) { + gtk_style_context_add_class(style, GTK_STYLE_CLASS_RADIO); + } else { + gtk_style_context_add_class(style, GTK_STYLE_CLASS_CHECK); + } + gtk_widget_set_direction(widget, direction); + +- gtk_widget_style_get(widget, "interior-focus", &interior_focus, NULL); +- if (!interior_focus) +- return MOZ_GTK_SUCCESS; +- + gtk_style_context_set_state(style, GetStateFlagsFromGtkWidgetState(state)); + gtk_render_focus(style, cr, + rect->x, rect->y, rect->width, rect->height); + gtk_style_context_restore(style); + + return MOZ_GTK_SUCCESS; + } + +@@ -2660,44 +2580,42 @@ moz_gtk_get_widget_border(GtkThemeWidget + { + GtkWidget* w; + GtkStyleContext* style; + *left = *top = *right = *bottom = 0; + + switch (widget) { + case MOZ_GTK_BUTTON: + { +- GtkBorder inner_border; +- gboolean interior_focus; +- gint focus_width, focus_pad; +- + ensure_button_widget(); ++ style = gtk_widget_get_style_context(gButtonWidget); ++ + *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gButtonWidget)); + + /* Don't add this padding in HTML, otherwise the buttons will + become too big and stuff the layout. */ + if (!inhtml) { +- moz_gtk_widget_get_focus(gButtonWidget, &interior_focus, &focus_width, &focus_pad); +- moz_gtk_button_get_inner_border(gButtonWidget, &inner_border); +- *left += focus_width + focus_pad + inner_border.left; +- *right += focus_width + focus_pad + inner_border.right; +- *top += focus_width + focus_pad + inner_border.top; +- *bottom += focus_width + focus_pad + inner_border.bottom; ++ moz_gtk_add_style_padding(style, left, top, right, bottom); + } + +- moz_gtk_add_style_border(gtk_widget_get_style_context(gButtonWidget), +- left, top, right, bottom); ++ moz_gtk_add_style_border(style, left, top, right, bottom); + return MOZ_GTK_SUCCESS; + } + case MOZ_GTK_ENTRY: + { + ensure_entry_widget(); + style = gtk_widget_get_style_context(gEntryWidget); + moz_gtk_add_style_border(style, left, top, right, bottom); +- moz_gtk_add_style_padding(style, left, top, right, bottom); ++ ++ /* Use the document padding in HTML ++ and GTK style padding in XUL. */ ++ if (!inhtml) { ++ moz_gtk_add_style_padding(style, left, top, right, bottom); ++ } ++ + return MOZ_GTK_SUCCESS; + } + case MOZ_GTK_TREEVIEW: + { + ensure_scrolled_window_widget(); + style = gtk_widget_get_style_context(gScrolledWindowWidget); + gtk_style_context_save(style); + gtk_style_context_add_class(style, GTK_STYLE_CLASS_FRAME); +@@ -2707,33 +2625,25 @@ moz_gtk_get_widget_border(GtkThemeWidget + } + case MOZ_GTK_TREE_HEADER_CELL: + { + /* A Tree Header in GTK is just a different styled button + * It must be placed in a TreeView for getting the correct style + * assigned. + * That is why the following code is the same as for MOZ_GTK_BUTTON. + * */ +- +- GtkBorder inner_border; +- gboolean interior_focus; +- gint focus_width, focus_pad; ++ GtkStyleContext *style; + + ensure_tree_header_cell_widget(); + *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gTreeHeaderCellWidget)); + +- moz_gtk_widget_get_focus(gTreeHeaderCellWidget, &interior_focus, &focus_width, &focus_pad); +- moz_gtk_button_get_inner_border(gTreeHeaderCellWidget, &inner_border); +- *left += focus_width + focus_pad + inner_border.left; +- *right += focus_width + focus_pad + inner_border.right; +- *top += focus_width + focus_pad + inner_border.top; +- *bottom += focus_width + focus_pad + inner_border.bottom; +- +- moz_gtk_add_style_border(gtk_widget_get_style_context(gTreeHeaderCellWidget), +- left, top, right, bottom); ++ style = gtk_widget_get_style_context(gTreeHeaderCellWidget); ++ ++ moz_gtk_add_style_border(style, left, top, right, bottom); ++ moz_gtk_add_style_padding(style, left, top, right, bottom); + return MOZ_GTK_SUCCESS; + } + case MOZ_GTK_TREE_HEADER_SORTARROW: + ensure_tree_header_cell_widget(); + w = gTreeHeaderSortArrowWidget; + break; + case MOZ_GTK_DROPDOWN_ENTRY: + ensure_combo_box_entry_widgets(); +@@ -2743,39 +2653,33 @@ moz_gtk_get_widget_border(GtkThemeWidget + ensure_combo_box_entry_widgets(); + w = gComboBoxEntryButtonWidget; + break; + case MOZ_GTK_DROPDOWN: + { + /* We need to account for the arrow on the dropdown, so text + * doesn't come too close to the arrow, or in some cases spill + * into the arrow. */ +- gboolean ignored_interior_focus, wide_separators; +- gint focus_width, focus_pad, separator_width; ++ gboolean wide_separators; ++ gint separator_width; + GtkRequisition arrow_req; + GtkBorder border; + + ensure_combo_box_widgets(); + +- *left = gtk_container_get_border_width(GTK_CONTAINER(gComboBoxButtonWidget)); ++ *left = *top = *right = *bottom = ++ gtk_container_get_border_width(GTK_CONTAINER(gComboBoxButtonWidget)); ++ ++ style = gtk_widget_get_style_context(gComboBoxButtonWidget); + + if (!inhtml) { +- moz_gtk_widget_get_focus(gComboBoxButtonWidget, +- &ignored_interior_focus, +- &focus_width, &focus_pad); +- *left += focus_width + focus_pad; ++ moz_gtk_add_style_padding(style, left, top, right, bottom); + } + +- style = gtk_widget_get_style_context(gComboBoxButtonWidget); +- gtk_style_context_get_border(style, 0, &border); +- +- *top = *left + border.top; +- *left += border.left; +- +- *right = *left; *bottom = *top; ++ moz_gtk_add_style_border(style, left, top, right, bottom); + + /* If there is no separator, don't try to count its width. */ + separator_width = 0; + if (gComboBoxSeparatorWidget) { + gtk_widget_style_get(gComboBoxSeparatorWidget, + "wide-separators", &wide_separators, + "separator-width", &separator_width, + NULL); +@@ -2817,70 +2721,33 @@ moz_gtk_get_widget_border(GtkThemeWidget + case MOZ_GTK_SCALE_VERTICAL: + ensure_scale_widget(); + w = gVScaleWidget; + break; + case MOZ_GTK_FRAME: + ensure_frame_widget(); + w = gFrameWidget; + break; +- case MOZ_GTK_CHECKBUTTON_LABEL: +- case MOZ_GTK_RADIOBUTTON_LABEL: +- { +- gboolean interior_focus; +- gint focus_width, focus_pad; +- +- /* If the focus is interior, then the label has a border of +- (focus_width + focus_pad). */ +- if (widget == MOZ_GTK_CHECKBUTTON_LABEL) { +- ensure_checkbox_widget(); +- moz_gtk_widget_get_focus(gCheckboxWidget, &interior_focus, +- &focus_width, &focus_pad); +- } +- else { +- ensure_radiobutton_widget(); +- moz_gtk_widget_get_focus(gRadiobuttonWidget, &interior_focus, +- &focus_width, &focus_pad); +- } +- +- if (interior_focus) +- *left = *top = *right = *bottom = (focus_width + focus_pad); +- +- return MOZ_GTK_SUCCESS; +- } +- + case MOZ_GTK_CHECKBUTTON_CONTAINER: + case MOZ_GTK_RADIOBUTTON_CONTAINER: + { +- gboolean interior_focus; +- gint focus_width, focus_pad; +- +- /* If the focus is _not_ interior, then the container has a border +- of (focus_width + focus_pad). */ + if (widget == MOZ_GTK_CHECKBUTTON_CONTAINER) { + ensure_checkbox_widget(); +- moz_gtk_widget_get_focus(gCheckboxWidget, &interior_focus, +- &focus_width, &focus_pad); + w = gCheckboxWidget; + } else { + ensure_radiobutton_widget(); +- moz_gtk_widget_get_focus(gRadiobuttonWidget, &interior_focus, +- &focus_width, &focus_pad); + w = gRadiobuttonWidget; + } ++ style = gtk_widget_get_style_context(w); + + *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(w)); +- +- if (!interior_focus) { +- *left += (focus_width + focus_pad); +- *right += (focus_width + focus_pad); +- *top += (focus_width + focus_pad); +- *bottom += (focus_width + focus_pad); +- } +- ++ moz_gtk_add_style_border(style, ++ left, top, right, bottom); ++ moz_gtk_add_style_padding(style, ++ left, top, right, bottom); + return MOZ_GTK_SUCCESS; + } + case MOZ_GTK_MENUPOPUP: + ensure_menu_popup_widget(); + w = gMenuPopupWidget; + break; + case MOZ_GTK_MENUITEM: + case MOZ_GTK_CHECKMENUITEM: +@@ -2897,16 +2764,18 @@ moz_gtk_get_widget_border(GtkThemeWidget + } + + *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(w)); + moz_gtk_add_style_padding(gtk_widget_get_style_context(w), + left, top, right, bottom); + return MOZ_GTK_SUCCESS; + } + /* These widgets have no borders, since they are not containers. */ ++ case MOZ_GTK_CHECKBUTTON_LABEL: ++ case MOZ_GTK_RADIOBUTTON_LABEL: + case MOZ_GTK_SPLITTER_HORIZONTAL: + case MOZ_GTK_SPLITTER_VERTICAL: + case MOZ_GTK_CHECKBUTTON: + case MOZ_GTK_RADIOBUTTON: + case MOZ_GTK_SCROLLBAR_BUTTON: + case MOZ_GTK_SCROLLBAR_TRACK_HORIZONTAL: + case MOZ_GTK_SCROLLBAR_TRACK_VERTICAL: + case MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL: +diff --git a/widget/gtk/gtkdrawing.h b/widget/gtk/gtkdrawing.h +--- a/widget/gtk/gtkdrawing.h ++++ b/widget/gtk/gtkdrawing.h +@@ -288,49 +288,26 @@ moz_gtk_checkbox_get_metrics(gint* indic + * indicator_spacing: [OUT] the spacing between the indicator and its + * container + * + * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise + */ + gint + moz_gtk_radio_get_metrics(gint* indicator_size, gint* indicator_spacing); + +-/** +- * Get the inner-border value for a GtkButton widget (button or tree header) +- * widget: [IN] the widget to get the border value for +- * inner_border: [OUT] the inner border +- * +- * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise +- */ +-gint +-moz_gtk_button_get_inner_border(GtkWidget* widget, GtkBorder* inner_border); +- + /** Get the extra size for the focus ring for outline:auto. + * widget: [IN] the widget to get the focus metrics for + * focus_h_width: [OUT] the horizontal width + * focus_v_width: [OUT] the vertical width + * + * returns: MOZ_GTK_SUCCESS + */ + gint + moz_gtk_get_focus_outline_size(gint* focus_h_width, gint* focus_v_width); + +-/** Get the focus metrics for a treeheadercell, button, checkbox, or radio button. +- * widget: [IN] the widget to get the focus metrics for +- * interior_focus: [OUT] whether the focus is drawn around the +- * label (TRUE) or around the whole container (FALSE) +- * focus_width: [OUT] the width of the focus line +- * focus_pad: [OUT] the padding between the focus line and children +- * +- * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise +- */ +-gint +-moz_gtk_widget_get_focus(GtkWidget* widget, gboolean* interior_focus, +- gint* focus_width, gint* focus_pad); +- + /** Get the horizontal padding for the menuitem widget or checkmenuitem widget. + * horizontal_padding: [OUT] The left and right padding of the menuitem or checkmenuitem + * + * returns: MOZ_GTK_SUCCESS if there was no error, an error code otherwise + */ + gint + moz_gtk_menuitem_get_horizontal_padding(gint* horizontal_padding); + diff --git a/mozilla-1101582.patch b/mozilla-1101582.patch deleted file mode 100644 index c1963f8..0000000 --- a/mozilla-1101582.patch +++ /dev/null @@ -1,122 +0,0 @@ -# HG changeset patch -# Parent cef590a6f94681064fa954890bae6014db819158 -# User Martin Stransky -Bug 1101582 - [GTK3] - Use window background color for ThreeDFace,ButtonFace r=karlt -This fixes missing borders on non-natively-styled textareas. - -diff --git a/widget/gtk/nsLookAndFeel.cpp b/widget/gtk/nsLookAndFeel.cpp ---- a/widget/gtk/nsLookAndFeel.cpp -+++ b/widget/gtk/nsLookAndFeel.cpp -@@ -279,39 +279,41 @@ nsLookAndFeel::NativeGetColor(ColorID aI - // scrollbar gray area - #if (MOZ_WIDGET_GTK == 2) - aColor = GDK_COLOR_TO_NS_RGB(mStyle->bg[GTK_STATE_ACTIVE]); - #else - aColor = sMozScrollbar; - #endif - break; - -+ case eColorID_threedlightshadow: -+ // 3-D highlighted inner edge color -+ // always same as background in GTK code - case eColorID_threedface: - case eColorID_buttonface: - // 3-D face color -- aColor = sFrameBackground; -+#if (MOZ_WIDGET_GTK == 3) -+ aColor = sMozWindowBackground; -+#else -+ aColor = sButtonBackground; -+#endif - break; - - case eColorID_buttontext: - // text on push buttons - aColor = sButtonText; - break; - - case eColorID_buttonhighlight: - // 3-D highlighted edge color - case eColorID_threedhighlight: - // 3-D highlighted outer edge color - aColor = sFrameOuterLightBorder; - break; - -- case eColorID_threedlightshadow: -- // 3-D highlighted inner edge color -- aColor = sFrameBackground; // always same as background in GTK code -- break; -- - case eColorID_buttonshadow: - // 3-D shadow edge color - case eColorID_threedshadow: - // 3-D shadow inner edge color - aColor = sFrameInnerDarkBorder; - break; - - #if (MOZ_WIDGET_GTK == 2) -@@ -1136,17 +1138,17 @@ nsLookAndFeel::Init() - } - - sOddCellBackground = GDK_COLOR_TO_NS_RGB(colorValue); - if (colorValuePtr) - gdk_color_free(colorValuePtr); - - style = gtk_widget_get_style(button); - if (style) { -- sFrameBackground = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_NORMAL]); -+ sButtonBackground = GDK_COLOR_TO_NS_RGB(style->bg[GTK_STATE_NORMAL]); - sFrameOuterLightBorder = - GDK_COLOR_TO_NS_RGB(style->light[GTK_STATE_NORMAL]); - sFrameInnerDarkBorder = - GDK_COLOR_TO_NS_RGB(style->dark[GTK_STATE_NORMAL]); - } - #else - // Button text, background, border - style = gtk_widget_get_style_context(label); -@@ -1184,22 +1186,19 @@ nsLookAndFeel::Init() - gtk_style_context_add_region(style, GTK_STYLE_REGION_ROW, GTK_REGION_ODD); - gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); - sOddCellBackground = GDK_RGBA_TO_NS_RGBA(color); - gtk_style_context_restore(style); - - GtkWidget *frame = gtk_frame_new(nullptr); - gtk_container_add(GTK_CONTAINER(parent), frame); - -- style = gtk_widget_get_style_context(frame); -- gtk_style_context_get_background_color(style, GTK_STATE_FLAG_NORMAL, &color); -- sFrameBackground = GDK_RGBA_TO_NS_RGBA(color); -- - // TODO GTK3 - update sFrameOuterLightBorder - // for GTK_BORDER_STYLE_INSET/OUTSET/GROVE/RIDGE border styles (Bug 978172). -+ style = gtk_widget_get_style_context(frame); - gtk_style_context_get_border_color(style, GTK_STATE_FLAG_NORMAL, &color); - sFrameInnerDarkBorder = sFrameOuterLightBorder = GDK_RGBA_TO_NS_RGBA(color); - #endif - // Some themes have a unified menu bar, and support window dragging on it - gboolean supports_menubar_drag = FALSE; - GParamSpec *param_spec = - gtk_widget_class_find_style_property(GTK_WIDGET_GET_CLASS(menuBar), - "window-dragging"); -diff --git a/widget/gtk/nsLookAndFeel.h b/widget/gtk/nsLookAndFeel.h ---- a/widget/gtk/nsLookAndFeel.h -+++ b/widget/gtk/nsLookAndFeel.h -@@ -59,17 +59,17 @@ protected: - nscolor sMenuBackground; - nscolor sMenuBarText; - nscolor sMenuBarHoverText; - nscolor sMenuText; - nscolor sMenuHover; - nscolor sMenuHoverText; - nscolor sButtonText; - nscolor sButtonHoverText; -- nscolor sFrameBackground; -+ nscolor sButtonBackground; - nscolor sFrameOuterLightBorder; - nscolor sFrameInnerDarkBorder; - nscolor sOddCellBackground; - nscolor sNativeHyperLinkText; - nscolor sComboBoxText; - nscolor sComboBoxBackground; - nscolor sMozFieldText; - nscolor sMozFieldBackground; diff --git a/mozilla-1108834.patch b/mozilla-1108834.patch deleted file mode 100644 index 87edc57..0000000 --- a/mozilla-1108834.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff -up firefox-36.0/mozilla-release/js/src/jit/none/Lowering-none.h.old firefox-36.0/mozilla-release/js/src/jit/none/Lowering-none.h ---- firefox-36.0/mozilla-release/js/src/jit/none/Lowering-none.h.old 2015-02-20 03:01:48.000000000 +0100 -+++ firefox-36.0/mozilla-release/js/src/jit/none/Lowering-none.h 2015-03-06 12:00:43.486675228 +0100 -@@ -89,6 +89,7 @@ class LIRGeneratorNone : public LIRGener - bool visitSimdTernaryBitwise(MSimdTernaryBitwise *ins) { MOZ_CRASH(); } - bool visitSimdSplatX4(MSimdSplatX4 *ins) { MOZ_CRASH(); } - bool visitSimdValueX4(MSimdValueX4 *lir) { MOZ_CRASH(); } -+ bool visitSubstr(MSubstr *) { MOZ_CRASH(); } - }; - - typedef LIRGeneratorNone LIRGeneratorSpecific; diff --git a/mozilla-1110211.patch b/mozilla-1110211.patch deleted file mode 100644 index 0828055..0000000 --- a/mozilla-1110211.patch +++ /dev/null @@ -1,95 +0,0 @@ -diff -up firefox-35.0/mozilla-release/accessible/atk/Platform.cpp.1110211 firefox-35.0/mozilla-release/accessible/atk/Platform.cpp ---- firefox-35.0/mozilla-release/accessible/atk/Platform.cpp.1110211 2015-01-06 06:11:41.000000000 +0100 -+++ firefox-35.0/mozilla-release/accessible/atk/Platform.cpp 2015-01-06 12:24:02.508105586 +0100 -@@ -18,6 +18,9 @@ - #include - #endif - #include -+#if (MOZ_WIDGET_GTK == 3) -+#include -+#endif - - using namespace mozilla; - using namespace mozilla::a11y; -@@ -43,6 +46,7 @@ static gulong sToplevel_hide_hook = 0; - - GType g_atk_hyperlink_impl_type = G_TYPE_INVALID; - -+#if (MOZ_WIDGET_GTK == 2) - struct GnomeAccessibilityModule - { - const char *libName; -@@ -119,6 +123,7 @@ LoadGtkModule(GnomeAccessibilityModule& - } - return NS_OK; - } -+#endif // (MOZ_WIDGET_GTK == 2) - - void - a11y::PlatformInit() -@@ -158,20 +163,26 @@ a11y::PlatformInit() - } - } - -+#if (MOZ_WIDGET_GTK == 2) - // Load and initialize gail library. - nsresult rv = LoadGtkModule(sGail); - if (NS_SUCCEEDED(rv)) - (*sGail.init)(); -+#endif - - // Initialize the MAI Utility class, it will overwrite gail_util. - g_type_class_unref(g_type_class_ref(mai_util_get_type())); - - // Init atk-bridge now - PR_SetEnv("NO_AT_BRIDGE=0"); -+#if (MOZ_WIDGET_GTK == 2) - rv = LoadGtkModule(sAtkBridge); - if (NS_SUCCEEDED(rv)) { - (*sAtkBridge.init)(); - } -+#else -+ atk_bridge_adaptor_init(nullptr, nullptr); -+#endif - - if (!sToplevel_event_hook_added) { - sToplevel_event_hook_added = true; -@@ -199,6 +210,7 @@ a11y::PlatformShutdown() - sToplevel_hide_hook); - } - -+#if (MOZ_WIDGET_GTK == 2) - if (sAtkBridge.lib) { - // Do not shutdown/unload atk-bridge, - // an exit function registered will take care of it -@@ -220,6 +232,7 @@ a11y::PlatformShutdown() - sGail.init = nullptr; - sGail.shutdown = nullptr; - } -+#endif - // if (sATKLib) { - // PR_UnloadLibrary(sATKLib); - // sATKLib = nullptr; -diff -up firefox-35.0/mozilla-release/config/system-headers.1110211 firefox-35.0/mozilla-release/config/system-headers ---- firefox-35.0/mozilla-release/config/system-headers.1110211 2015-01-06 06:11:48.000000000 +0100 -+++ firefox-35.0/mozilla-release/config/system-headers 2015-01-06 12:24:02.508105586 +0100 -@@ -189,6 +189,7 @@ asm/signal.h - ASRegistry.h - assert.h - atk/atk.h -+atk-bridge.h - atlcom.h - atlconv.h - atlctl.cpp -diff -up firefox-35.0/mozilla-release/configure.in.1110211 firefox-35.0/mozilla-release/configure.in ---- firefox-35.0/mozilla-release/configure.in.1110211 2015-01-06 12:24:02.509105590 +0100 -+++ firefox-35.0/mozilla-release/configure.in 2015-01-06 12:24:49.419274706 +0100 -@@ -4364,7 +4364,7 @@ fi - - if test "$COMPILE_ENVIRONMENT"; then - if test "$MOZ_ENABLE_GTK3"; then -- PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 $GDK_PACKAGES) -+ PKG_CHECK_MODULES(MOZ_GTK3, gtk+-3.0 >= $GTK3_VERSION gtk+-unix-print-3.0 glib-2.0 gobject-2.0 atk-bridge-2.0 $GDK_PACKAGES) - MOZ_GTK3_CFLAGS="-I${_topsrcdir}/widget/gtk/compat-gtk3 $MOZ_GTK3_CFLAGS" - dnl Contrary to MOZ_GTK2_LIBS, MOZ_GTK3_LIBS needs to be literally added to TK_LIBS instead - dnl of a make reference because of how TK_LIBS is mangled in toolkit/library/moz.build diff --git a/sources b/sources index 71e210b..d85fd4c 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -da5d71fa9ce3c57efbc9db247861823c firefox-36.0.4.source.tar.bz2 -81d175210e6f6ddbf62a46c7383ed823 firefox-langpacks-36.0.4-20150321.tar.xz +1da9fa09bda70c1d77607c38427f143a firefox-langpacks-37.0-20150327.tar.xz +ccdec2d8f362a3782fe74e0ca7f79724 firefox-37.0.source.tar.bz2 -- cgit