# HG changeset patch # User Wolfgang Rosenauer # Date 1461478810 -7200 # Node ID b29b47737173f3de843d952f807bf8282d58cc6b # Parent 3ccb278a9cebeb381ef2ffbdc30861c83449e52f sync from mozilla:Factory diff -r 3ccb278a9ceb -r b29b47737173 MozillaFirefox/MozillaFirefox.changes --- a/MozillaFirefox/MozillaFirefox.changes Tue Apr 12 21:14:38 2016 +0200 +++ b/MozillaFirefox/MozillaFirefox.changes Sun Apr 24 08:20:10 2016 +0200 @@ -1,4 +1,10 @@ ------------------------------------------------------------------- +Thu Apr 21 12:00:28 UTC 2016 - badshah400@gmail.com + +- Update mozilla-gtk3_20.patch to fix scrollbar appearance under + gtk >= 3.20 (patch synced to Fedora's version). + +------------------------------------------------------------------- Tue Apr 12 19:11:30 UTC 2016 - badshah400@gmail.com - Compile against gtk3 depending on whether the macro @@ -135,6 +141,16 @@ * Fix using WebSockets in service worker controlled pages (bmo#1243942) ------------------------------------------------------------------- +Sat Jan 30 08:28:17 UTC 2016 - dmueller@suse.com + +- build fixes for arm/aarch64: + * disable webrtc for arm/aarch64 + * switch away from openGL-ES backend to default for arm/aarch64 + since it almost never builds + * reenable neon +- reenable webrtc for powerpc as it seems to build + +------------------------------------------------------------------- Sun Jan 24 09:33:15 UTC 2016 - wr@rosenauer.org - update to Firefox 44.0 diff -r 3ccb278a9ceb -r b29b47737173 MozillaFirefox/MozillaFirefox.spec --- a/MozillaFirefox/MozillaFirefox.spec Tue Apr 12 21:14:38 2016 +0200 +++ b/MozillaFirefox/MozillaFirefox.spec Sun Apr 24 08:20:10 2016 +0200 @@ -368,17 +368,15 @@ %if ! %crashreporter ac_add_options --disable-crashreporter %endif -# Disable neon for arm as it does not build correctly %ifarch %arm -ac_add_options --disable-neon +ac_add_options --disable-elf-hack +ac_add_options --with-fpu=vfpv3-d16 +ac_add_options --with-float-abi=hard +ac_add_options --with-arch=armv7-a %endif -%ifnarch %ix86 x86_64 +%ifarch %arm aarch64 s390x ac_add_options --disable-webrtc %endif -# try to use OpenGL-ES on ARM -%ifarch %arm aarch64 -ac_add_options --with-gl-provider=EGL -%endif EOF make -f client.mk build diff -r 3ccb278a9ceb -r b29b47737173 mozilla-gtk3_20.patch --- a/mozilla-gtk3_20.patch Tue Apr 12 21:14:38 2016 +0200 +++ b/mozilla-gtk3_20.patch Sun Apr 24 08:20:10 2016 +0200 @@ -1,7 +1,7 @@ -diff -up firefox-45.0.1/widget/gtk/gtk3drawing.c.gtk3-20 firefox-45.0.1/widget/gtk/gtk3drawing.c ---- firefox-45.0.1/widget/gtk/gtk3drawing.c.gtk3-20 2016-03-15 23:37:46.000000000 +0100 -+++ firefox-45.0.1/widget/gtk/gtk3drawing.c 2016-04-05 14:40:27.846088625 +0200 -@@ -17,32 +17,78 @@ +diff -up firefox-45.0.2/widget/gtk/gtk3drawing.c.gtk3-20 firefox-45.0.2/widget/gtk/gtk3drawing.c +--- firefox-45.0.2/widget/gtk/gtk3drawing.c.gtk3-20 2016-04-08 01:55:04.000000000 +0200 ++++ firefox-45.0.2/widget/gtk/gtk3drawing.c 2016-04-20 18:49:52.897795872 +0200 +@@ -17,32 +17,79 @@ #include @@ -22,6 +22,7 @@ + + struct { + GtkStyleContext* style; ++ GtkStyleContext* styleContents; + GtkStyleContext* styleTrough; + GtkStyleContext* styleSlider; + } scroll; @@ -89,7 +90,7 @@ static GtkWidget* gTabWidget; static GtkWidget* gTooltipWidget; static GtkWidget* gMenuBarWidget; -@@ -78,6 +124,37 @@ static gboolean is_initialized; +@@ -78,6 +125,37 @@ static gboolean is_initialized; #define GTK_STATE_FLAG_CHECKED (1 << 11) #endif @@ -127,7 +128,7 @@ static GtkStateFlags GetStateFlagsFromGtkWidgetState(GtkWidgetState* state) { -@@ -97,6 +174,41 @@ GetStateFlagsFromGtkWidgetState(GtkWidge +@@ -97,6 +175,41 @@ GetStateFlagsFromGtkWidgetState(GtkWidge return stateFlags; } @@ -169,7 +170,7 @@ /* Because we have such an unconventional way of drawing widgets, signal to the GTK theme engine that they are drawing for Mozilla instead of a conventional GTK app so they can do any specific things they may want to do. */ -@@ -141,9 +253,16 @@ setup_widget_prototype(GtkWidget* widget +@@ -141,9 +254,16 @@ setup_widget_prototype(GtkWidget* widget static gint ensure_button_widget() { @@ -189,7 +190,7 @@ } return MOZ_GTK_SUCCESS; } -@@ -195,9 +314,21 @@ ensure_button_arrow_widget() +@@ -195,9 +315,21 @@ ensure_button_arrow_widget() static gint ensure_checkbox_widget() { @@ -214,7 +215,7 @@ } return MOZ_GTK_SUCCESS; } -@@ -205,9 +336,21 @@ ensure_checkbox_widget() +@@ -205,9 +337,21 @@ ensure_checkbox_widget() static gint ensure_radiobutton_widget() { @@ -239,7 +240,7 @@ } return MOZ_GTK_SUCCESS; } -@@ -215,13 +358,31 @@ ensure_radiobutton_widget() +@@ -215,25 +359,62 @@ ensure_radiobutton_widget() static gint ensure_scrollbar_widget() { @@ -250,35 +251,42 @@ - if (!gHorizScrollbarWidget) { - gHorizScrollbarWidget = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, NULL); - setup_widget_prototype(gHorizScrollbarWidget); +- } + if (!gVertScrollbar.widget && !gHorizScrollbar.widget) { + GtkCssNode path[] = { -+ { GTK_TYPE_SCROLLBAR, "scrollbar", "horizontal", NULL }, -+ { GTK_TYPE_SCROLLBAR, "scrollbar", "vertical", NULL }, -+ { GTK_TYPE_SCROLLBAR, "trough", NULL, NULL }, -+ { GTK_TYPE_SCROLLBAR, "slider", NULL, NULL } ++ { GTK_TYPE_SCROLLBAR, "scrollbar", "horizontal", "bottom"}, ++ { GTK_TYPE_SCROLLBAR, "scrollbar", "vertical", "right" }, ++ { G_TYPE_NONE, "contents", NULL, NULL }, ++ { G_TYPE_NONE, "trough", NULL, NULL }, ++ { G_TYPE_NONE, "slider", NULL, NULL } + }; + ++ gHorizScrollbar.widget = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, NULL); ++ setup_widget_prototype(gHorizScrollbar.widget); ++ ++ gHorizScrollbar.scroll.style = moz_gtk_style_create(path, NULL); ++ gHorizScrollbar.scroll.styleContents = moz_gtk_style_create(path+2, ++ gHorizScrollbar.scroll.style); ++ gHorizScrollbar.scroll.styleTrough = moz_gtk_style_create(path+3, ++ gHorizScrollbar.scroll.styleContents); ++ gHorizScrollbar.scroll.styleSlider = moz_gtk_style_create(path+4, ++ gHorizScrollbar.scroll.styleTrough); ++ + gVertScrollbar.widget = gtk_scrollbar_new(GTK_ORIENTATION_VERTICAL, NULL); + setup_widget_prototype(gVertScrollbar.widget); + + gVertScrollbar.scroll.style = moz_gtk_style_create(path+1, NULL); -+ gVertScrollbar.scroll.styleTrough = moz_gtk_style_create(path+2, ++ gVertScrollbar.scroll.styleContents = moz_gtk_style_create(path+2, + gVertScrollbar.scroll.style); -+ gVertScrollbar.scroll.styleSlider = moz_gtk_style_create(path+3, ++ gVertScrollbar.scroll.styleTrough = moz_gtk_style_create(path+3, ++ gVertScrollbar.scroll.styleContents); ++ gVertScrollbar.scroll.styleSlider = moz_gtk_style_create(path+4, + gVertScrollbar.scroll.styleTrough); + -+ gHorizScrollbar.widget = gtk_scrollbar_new(GTK_ORIENTATION_HORIZONTAL, NULL); -+ setup_widget_prototype(gHorizScrollbar.widget); -+ -+ gHorizScrollbar.scroll.style = moz_gtk_style_create(path, NULL); -+ gHorizScrollbar.scroll.styleTrough = moz_gtk_style_create(path+2, -+ gHorizScrollbar.scroll.style); -+ gHorizScrollbar.scroll.styleSlider = moz_gtk_style_create(path+3, -+ gHorizScrollbar.scroll.styleTrough); - } ++ } return MOZ_GTK_SUCCESS; } -@@ -229,11 +390,24 @@ ensure_scrollbar_widget() + static gint ensure_spin_widget() { @@ -308,7 +316,7 @@ } static gint -@@ -253,9 +427,19 @@ ensure_scale_widget() +@@ -253,9 +434,19 @@ ensure_scale_widget() static gint ensure_entry_widget() { @@ -331,7 +339,7 @@ } return MOZ_GTK_SUCCESS; } -@@ -387,9 +571,9 @@ moz_gtk_get_combo_box_entry_inner_widget +@@ -387,9 +578,9 @@ moz_gtk_get_combo_box_entry_inner_widget g_object_add_weak_pointer(G_OBJECT(widget), (gpointer) &gComboBoxEntryButtonWidget); } else if (GTK_IS_ENTRY(widget)) { @@ -343,7 +351,7 @@ } else return; gtk_widget_realize(widget); -@@ -411,7 +595,7 @@ ensure_combo_box_entry_widgets() +@@ -411,7 +602,7 @@ ensure_combo_box_entry_widgets() { GtkWidget* buttonChild; @@ -352,7 +360,7 @@ gComboBoxEntryButtonWidget && gComboBoxEntryArrowWidget) return MOZ_GTK_SUCCESS; -@@ -427,9 +611,9 @@ ensure_combo_box_entry_widgets() +@@ -427,9 +618,9 @@ ensure_combo_box_entry_widgets() moz_gtk_get_combo_box_entry_inner_widgets, NULL); @@ -364,7 +372,7 @@ } if (gComboBoxEntryButtonWidget) { -@@ -528,9 +712,21 @@ ensure_tab_widget() +@@ -528,9 +719,21 @@ ensure_tab_widget() static gint ensure_progress_widget() { @@ -389,7 +397,7 @@ } return MOZ_GTK_SUCCESS; } -@@ -636,6 +832,11 @@ static gint +@@ -636,6 +839,11 @@ static gint ensure_check_menu_item_widget() { if (!gCheckMenuItemWidget) { @@ -401,7 +409,7 @@ ensure_menu_popup_widget(); gCheckMenuItemWidget = gtk_check_menu_item_new_with_label("M"); gtk_menu_shell_append(GTK_MENU_SHELL(gMenuPopupWidget), -@@ -757,7 +958,7 @@ moz_gtk_checkbox_get_metrics(gint* indic +@@ -757,7 +965,7 @@ moz_gtk_checkbox_get_metrics(gint* indic { ensure_checkbox_widget(); @@ -410,7 +418,7 @@ "indicator_size", indicator_size, "indicator_spacing", indicator_spacing, NULL); -@@ -770,7 +971,7 @@ moz_gtk_radio_get_metrics(gint* indicato +@@ -770,7 +978,7 @@ moz_gtk_radio_get_metrics(gint* indicato { ensure_radiobutton_widget(); @@ -419,7 +427,7 @@ "indicator_size", indicator_size, "indicator_spacing", indicator_spacing, NULL); -@@ -783,13 +984,12 @@ moz_gtk_get_focus_outline_size(gint* foc +@@ -783,13 +991,12 @@ moz_gtk_get_focus_outline_size(gint* foc { GtkBorder border; GtkBorder padding; @@ -436,7 +444,7 @@ *focus_h_width = border.left + padding.left; *focus_v_width = border.top + padding.top; return MOZ_GTK_SUCCESS; -@@ -826,7 +1026,7 @@ moz_gtk_button_get_default_overflow(gint +@@ -826,7 +1033,7 @@ moz_gtk_button_get_default_overflow(gint GtkBorder* default_outside_border; ensure_button_widget(); @@ -445,7 +453,7 @@ "default-outside-border", &default_outside_border, NULL); -@@ -849,7 +1049,7 @@ moz_gtk_button_get_default_border(gint* +@@ -849,7 +1056,7 @@ moz_gtk_button_get_default_border(gint* GtkBorder* default_border; ensure_button_widget(); @@ -454,7 +462,7 @@ "default-border", &default_border, NULL); -@@ -940,7 +1140,7 @@ moz_gtk_button_paint(cairo_t *cr, GdkRec +@@ -940,7 +1147,7 @@ moz_gtk_button_paint(cairo_t *cr, GdkRec if (state->focused) { GtkBorder border; @@ -463,7 +471,7 @@ x += border.left; y += border.top; width -= (border.left + border.right); -@@ -961,15 +1161,14 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec +@@ -961,15 +1168,14 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec gint indicator_size, indicator_spacing; gint x, y, width, height; gint focus_x, focus_y, focus_width, focus_height; @@ -482,7 +490,7 @@ } // XXX we should assert rect->height >= indicator_size too -@@ -988,11 +1187,9 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec +@@ -988,11 +1194,9 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec focus_width = width + 2 * indicator_spacing; focus_height = height + 2 * indicator_spacing; @@ -497,7 +505,7 @@ if (selected) state_flags |= checkbox_check_state; -@@ -1000,13 +1197,15 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec +@@ -1000,13 +1204,15 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec if (inconsistent) state_flags |= GTK_STATE_FLAG_INCONSISTENT; @@ -517,7 +525,7 @@ focus_width, focus_height); } } -@@ -1015,15 +1214,14 @@ moz_gtk_toggle_paint(cairo_t *cr, GdkRec +@@ -1015,15 +1221,14 @@ 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. */ @@ -537,7 +545,7 @@ return MOZ_GTK_SUCCESS; } -@@ -1040,8 +1238,8 @@ calculate_button_inner_rect(GtkWidget* b +@@ -1040,8 +1245,8 @@ calculate_button_inner_rect(GtkWidget* b style = gtk_widget_get_style_context(button); /* This mirrors gtkbutton's child positioning */ @@ -548,7 +556,7 @@ inner_rect->x = rect->x + border.left + padding.left; inner_rect->y = rect->y + padding.top + border.top; -@@ -1107,9 +1305,9 @@ moz_gtk_scrollbar_button_paint(cairo_t * +@@ -1107,9 +1312,9 @@ moz_gtk_scrollbar_button_paint(cairo_t * ensure_scrollbar_widget(); if (flags & MOZ_GTK_STEPPER_VERTICAL) @@ -560,7 +568,7 @@ gtk_widget_set_direction(scrollbar, direction); -@@ -1175,26 +1373,23 @@ moz_gtk_scrollbar_trough_paint(GtkThemeW +@@ -1175,26 +1380,23 @@ moz_gtk_scrollbar_trough_paint(GtkThemeW GtkTextDirection direction) { GtkStyleContext* style; @@ -576,11 +584,11 @@ - gtk_widget_set_direction(GTK_WIDGET(scrollbar), direction); + if (widget == MOZ_GTK_SCROLLBAR_TRACK_HORIZONTAL) { + gtk_widget_set_direction(GTK_WIDGET(gHorizScrollbar.widget), direction); -+ style = gHorizScrollbar.scroll.styleTrough; ++ style = gHorizScrollbar.scroll.style; + } + else { + gtk_widget_set_direction(GTK_WIDGET(gVertScrollbar.widget), direction); -+ style = gVertScrollbar.scroll.styleTrough; ++ style = gVertScrollbar.scroll.style; + } if (flags & MOZ_GTK_TRACK_OPAQUE) { @@ -595,7 +603,7 @@ gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -@@ -1202,7 +1397,6 @@ moz_gtk_scrollbar_trough_paint(GtkThemeW +@@ -1202,7 +1404,6 @@ moz_gtk_scrollbar_trough_paint(GtkThemeW gtk_render_focus(style, cr, rect->x, rect->y, rect->width, rect->height); } @@ -603,7 +611,7 @@ return MOZ_GTK_SUCCESS; } -@@ -1214,25 +1408,21 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWi +@@ -1214,25 +1415,21 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWi { GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); GtkStyleContext* style; @@ -637,7 +645,7 @@ gtk_style_context_get_margin (style, state_flags, &margin); gtk_render_slider(style, cr, -@@ -1243,8 +1433,6 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWi +@@ -1243,8 +1440,6 @@ moz_gtk_scrollbar_thumb_paint(GtkThemeWi (widget == MOZ_GTK_SCROLLBAR_THUMB_HORIZONTAL) ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL); @@ -646,7 +654,7 @@ return MOZ_GTK_SUCCESS; } -@@ -1255,8 +1443,8 @@ moz_gtk_spin_paint(cairo_t *cr, GdkRecta +@@ -1255,8 +1450,8 @@ moz_gtk_spin_paint(cairo_t *cr, GdkRecta GtkStyleContext* style; ensure_spin_widget(); @@ -657,7 +665,7 @@ gtk_style_context_save(style); gtk_style_context_add_class(style, GTK_STYLE_CLASS_SPINBUTTON); gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); -@@ -1275,11 +1463,10 @@ moz_gtk_spin_updown_paint(cairo_t *cr, G +@@ -1275,11 +1470,10 @@ moz_gtk_spin_updown_paint(cairo_t *cr, G GtkStyleContext* style; ensure_spin_widget(); @@ -671,7 +679,7 @@ gtk_render_background(style, cr, rect->x, rect->y, rect->width, rect->height); gtk_render_frame(style, cr, rect->x, rect->y, rect->width, rect->height); -@@ -1445,15 +1632,13 @@ moz_gtk_vpaned_paint(cairo_t *cr, GdkRec +@@ -1445,15 +1639,13 @@ moz_gtk_vpaned_paint(cairo_t *cr, GdkRec static gint moz_gtk_entry_paint(cairo_t *cr, GdkRectangle* rect, GtkWidgetState* state, @@ -690,7 +698,7 @@ if (draw_focus_outline_only) { // Inflate the given 'rect' with the focus outline size. -@@ -1473,10 +1658,9 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect +@@ -1473,10 +1665,9 @@ moz_gtk_entry_paint(cairo_t *cr, GdkRect * textarea window uses gtk_paint_flat_box when exposed */ /* This gets us a lovely greyish disabledish look */ @@ -702,7 +710,7 @@ /* Now paint the shadow and focus border. * We do like in gtk_entry_draw_frame, we first draw the shadow, a tad -@@ -1526,7 +1710,7 @@ moz_gtk_treeview_paint(cairo_t *cr, GdkR +@@ -1526,7 +1717,7 @@ moz_gtk_treeview_paint(cairo_t *cr, GdkR style = gtk_widget_get_style_context(gScrolledWindowWidget); gtk_style_context_save(style); gtk_style_context_add_class(style, GTK_STYLE_CLASS_FRAME); @@ -711,7 +719,7 @@ xthickness = border.left; ythickness = border.top; -@@ -1697,7 +1881,7 @@ moz_gtk_combo_box_paint(cairo_t *cr, Gdk +@@ -1697,7 +1888,7 @@ moz_gtk_combo_box_paint(cairo_t *cr, Gdk if (direction == GTK_TEXT_DIR_LTR) { GtkBorder padding; GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); @@ -720,7 +728,7 @@ arrow_rect.x -= padding.left; } else -@@ -1799,29 +1983,27 @@ moz_gtk_container_paint(cairo_t *cr, Gdk +@@ -1799,29 +1990,27 @@ moz_gtk_container_paint(cairo_t *cr, Gdk gboolean isradio, GtkTextDirection direction) { GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state); @@ -758,7 +766,7 @@ return MOZ_GTK_SUCCESS; } -@@ -1831,32 +2013,26 @@ moz_gtk_toggle_label_paint(cairo_t *cr, +@@ -1831,32 +2020,26 @@ moz_gtk_toggle_label_paint(cairo_t *cr, GtkWidgetState* state, gboolean isradio, GtkTextDirection direction) { @@ -776,15 +784,15 @@ } else { ensure_checkbox_widget(); - widget = gCheckboxWidget; -- } ++ widget = &gCheckbox; + } - style = gtk_widget_get_style_context(widget); - 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); -+ widget = &gCheckbox; - } +- } - gtk_widget_set_direction(widget, direction); + gtk_style_context_save(widget->check.styleLabel); + gtk_widget_set_direction(widget->widget, direction); @@ -800,7 +808,7 @@ return MOZ_GTK_SUCCESS; } -@@ -1917,7 +2093,7 @@ moz_gtk_toolbar_separator_paint(cairo_t +@@ -1917,7 +2100,7 @@ moz_gtk_toolbar_separator_paint(cairo_t rect->height * (end_fraction - start_fraction)); } else { GtkBorder padding; @@ -809,7 +817,7 @@ paint_width = padding.left; if (paint_width > rect->width) -@@ -2004,18 +2180,13 @@ static gint +@@ -2004,18 +2187,13 @@ static gint moz_gtk_progressbar_paint(cairo_t *cr, GdkRectangle* rect, GtkTextDirection direction) { @@ -833,7 +841,7 @@ return MOZ_GTK_SUCCESS; } -@@ -2025,15 +2196,8 @@ moz_gtk_progress_chunk_paint(cairo_t *cr +@@ -2025,15 +2203,8 @@ moz_gtk_progress_chunk_paint(cairo_t *cr GtkTextDirection direction, GtkThemeWidgetType widget) { @@ -850,7 +858,7 @@ if (widget == MOZ_GTK_PROGRESS_CHUNK_INDETERMINATE || widget == MOZ_GTK_PROGRESS_CHUNK_VERTICAL_INDETERMINATE) { -@@ -2072,12 +2236,14 @@ moz_gtk_progress_chunk_paint(cairo_t *cr +@@ -2072,12 +2243,14 @@ moz_gtk_progress_chunk_paint(cairo_t *cr // gtk_render_activity was used to render progress chunks on GTK versions // before 3.13.7, see bug 1173907. if (!gtk_check_version(3, 13, 7)) { @@ -869,7 +877,7 @@ return MOZ_GTK_SUCCESS; } -@@ -2094,7 +2260,7 @@ moz_gtk_get_tab_thickness(void) +@@ -2094,7 +2267,7 @@ moz_gtk_get_tab_thickness(void) style = gtk_widget_get_style_context(gTabWidget); gtk_style_context_add_class(style, GTK_STYLE_CLASS_NOTEBOOK); @@ -878,7 +886,7 @@ if (border.top < 2) return 2; /* some themes don't set ythickness correctly */ -@@ -2290,7 +2456,7 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectan +@@ -2290,7 +2463,7 @@ moz_gtk_tab_paint(cairo_t *cr, GdkRectan gtk_style_context_save(style); moz_gtk_tab_prepare_style_context(style, flags); @@ -887,7 +895,7 @@ focusRect.x += padding.left; focusRect.width -= (padding.left + padding.right); -@@ -2406,7 +2572,7 @@ moz_gtk_tab_scroll_arrow_paint(cairo_t * +@@ -2406,7 +2579,7 @@ moz_gtk_tab_scroll_arrow_paint(cairo_t * } static gint @@ -896,7 +904,7 @@ GtkTextDirection direction) { GtkStyleContext* style; -@@ -2467,7 +2633,7 @@ moz_gtk_menu_separator_paint(cairo_t *cr +@@ -2467,7 +2640,7 @@ moz_gtk_menu_separator_paint(cairo_t *cr border_width = gtk_container_get_border_width(GTK_CONTAINER(gMenuSeparatorWidget)); style = gtk_widget_get_style_context(gMenuSeparatorWidget); @@ -905,7 +913,7 @@ x = rect->x + border_width; y = rect->y + border_width; -@@ -2521,7 +2687,8 @@ moz_gtk_menu_item_paint(cairo_t *cr, Gdk +@@ -2521,7 +2694,8 @@ moz_gtk_menu_item_paint(cairo_t *cr, Gdk item_widget = gMenuItemWidget; } style = gtk_widget_get_style_context(item_widget); @@ -915,7 +923,7 @@ if (flags & MOZ_TOPLEVEL_MENU_ITEM) { gtk_style_context_add_class(style, GTK_STYLE_CLASS_MENUBAR); -@@ -2540,7 +2707,7 @@ moz_gtk_menu_item_paint(cairo_t *cr, Gdk +@@ -2540,7 +2714,7 @@ moz_gtk_menu_item_paint(cairo_t *cr, Gdk gtk_render_background(style, cr, x, y, w, h); gtk_render_frame(style, cr, x, y, w, h); @@ -924,7 +932,7 @@ } return MOZ_GTK_SUCCESS; -@@ -2556,7 +2723,10 @@ moz_gtk_menu_arrow_paint(cairo_t *cr, Gd +@@ -2556,7 +2730,10 @@ moz_gtk_menu_arrow_paint(cairo_t *cr, Gd ensure_menu_item_widget(); gtk_widget_set_direction(gMenuItemWidget, direction); @@ -936,7 +944,7 @@ style = gtk_widget_get_style_context(gMenuItemWidget); gtk_style_context_save(style); gtk_style_context_add_class(style, GTK_STYLE_CLASS_MENUITEM); -@@ -2606,7 +2776,7 @@ moz_gtk_check_menu_item_paint(cairo_t *c +@@ -2606,7 +2783,7 @@ moz_gtk_check_menu_item_paint(cairo_t *c } gtk_style_context_set_state(style, state_flags); @@ -945,7 +953,7 @@ offset = gtk_container_get_border_width(GTK_CONTAINER(gCheckMenuItemWidget)) + padding.left + 2; -@@ -2658,7 +2828,7 @@ moz_gtk_add_style_border(GtkStyleContext +@@ -2658,7 +2835,7 @@ moz_gtk_add_style_border(GtkStyleContext { GtkBorder border; @@ -954,7 +962,7 @@ *left += border.left; *right += border.right; -@@ -2667,12 +2837,22 @@ moz_gtk_add_style_border(GtkStyleContext +@@ -2667,12 +2844,22 @@ moz_gtk_add_style_border(GtkStyleContext } static void @@ -978,7 +986,7 @@ *left += padding.left; *right += padding.right; -@@ -2680,6 +2860,16 @@ moz_gtk_add_style_padding(GtkStyleContex +@@ -2680,6 +2867,16 @@ moz_gtk_add_style_padding(GtkStyleContex *bottom += padding.bottom; } @@ -995,14 +1003,14 @@ gint moz_gtk_get_widget_border(GtkThemeWidgetType widget, gint* left, gint* top, gint* right, gint* bottom, GtkTextDirection direction, -@@ -2694,36 +2884,27 @@ moz_gtk_get_widget_border(GtkThemeWidget +@@ -2694,36 +2891,27 @@ moz_gtk_get_widget_border(GtkThemeWidget case MOZ_GTK_TOOLBAR_BUTTON: { ensure_button_widget(); - style = gtk_widget_get_style_context(gButtonWidget); - +- - *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(gButtonWidget)); -- + - if (widget == MOZ_GTK_TOOLBAR_BUTTON) { - gtk_style_context_save(style); - gtk_style_context_add_class(style, "image-button"); @@ -1039,7 +1047,7 @@ return MOZ_GTK_SUCCESS; } -@@ -2759,7 +2940,7 @@ moz_gtk_get_widget_border(GtkThemeWidget +@@ -2759,7 +2947,7 @@ moz_gtk_get_widget_border(GtkThemeWidget break; case MOZ_GTK_DROPDOWN_ENTRY: ensure_combo_box_entry_widgets(); @@ -1048,7 +1056,7 @@ break; case MOZ_GTK_DROPDOWN_ARROW: ensure_combo_box_entry_widgets(); -@@ -2795,7 +2976,7 @@ moz_gtk_get_widget_border(GtkThemeWidget +@@ -2795,7 +2983,7 @@ moz_gtk_get_widget_border(GtkThemeWidget if (!wide_separators) { style = gtk_widget_get_style_context(gComboBoxSeparatorWidget); @@ -1057,7 +1065,7 @@ separator_width = border.left; } } -@@ -2814,14 +2995,17 @@ moz_gtk_get_widget_border(GtkThemeWidget +@@ -2814,14 +3002,17 @@ moz_gtk_get_widget_border(GtkThemeWidget w = gTabWidget; break; case MOZ_GTK_PROGRESSBAR: @@ -1079,7 +1087,7 @@ break; case MOZ_GTK_SCALE_HORIZONTAL: ensure_scale_widget(); -@@ -2840,12 +3024,13 @@ moz_gtk_get_widget_border(GtkThemeWidget +@@ -2840,12 +3031,13 @@ moz_gtk_get_widget_border(GtkThemeWidget { if (widget == MOZ_GTK_CHECKBUTTON_CONTAINER) { ensure_checkbox_widget(); @@ -1096,7 +1104,7 @@ *left = *top = *right = *bottom = gtk_container_get_border_width(GTK_CONTAINER(w)); moz_gtk_add_style_border(style, -@@ -2978,6 +3163,32 @@ moz_gtk_get_combo_box_entry_button_size( +@@ -2978,6 +3170,32 @@ moz_gtk_get_combo_box_entry_button_size( } gint @@ -1129,7 +1137,7 @@ moz_gtk_get_tab_scroll_arrow_size(gint* width, gint* height) { gint arrow_size; -@@ -3022,7 +3233,7 @@ moz_gtk_get_toolbar_separator_width(gint +@@ -3022,7 +3240,7 @@ moz_gtk_get_toolbar_separator_width(gint "separator-width", &separator_width, NULL); /* Just in case... */ @@ -1138,7 +1146,7 @@ *size = MAX(*size, (wide_separators ? separator_width : border.left)); return MOZ_GTK_SUCCESS; } -@@ -3064,7 +3275,7 @@ moz_gtk_get_menu_separator_height(gint * +@@ -3064,7 +3282,7 @@ moz_gtk_get_menu_separator_height(gint * border_width = gtk_container_get_border_width(GTK_CONTAINER(gMenuSeparatorWidget)); style = gtk_widget_get_style_context(gMenuSeparatorWidget); @@ -1147,7 +1155,7 @@ gtk_style_context_save(style); gtk_style_context_add_class(style, GTK_STYLE_CLASS_SEPARATOR); -@@ -3122,15 +3333,21 @@ moz_gtk_get_scrollbar_metrics(MozGtkScro +@@ -3122,15 +3340,21 @@ moz_gtk_get_scrollbar_metrics(MozGtkScro { ensure_scrollbar_widget(); @@ -1172,7 +1180,7 @@ return MOZ_GTK_SUCCESS; } -@@ -3155,7 +3372,7 @@ moz_gtk_images_in_buttons() +@@ -3155,7 +3379,7 @@ moz_gtk_images_in_buttons() GtkSettings* settings; ensure_button_widget(); @@ -1181,7 +1189,7 @@ g_object_get(settings, "gtk-button-images", &result, NULL); return result; -@@ -3183,7 +3400,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType +@@ -3183,7 +3407,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType } ensure_button_widget(); return moz_gtk_button_paint(cr, rect, state, @@ -1190,7 +1198,7 @@ direction); break; case MOZ_GTK_CHECKBUTTON: -@@ -3233,7 +3450,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType +@@ -3233,7 +3457,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType case MOZ_GTK_SPINBUTTON_ENTRY: ensure_spin_widget(); return moz_gtk_entry_paint(cr, rect, state, @@ -1199,7 +1207,7 @@ break; case MOZ_GTK_GRIPPER: return moz_gtk_gripper_paint(cr, rect, state, -@@ -3260,7 +3477,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType +@@ -3260,7 +3484,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType case MOZ_GTK_ENTRY: ensure_entry_widget(); return moz_gtk_entry_paint(cr, rect, state, @@ -1208,7 +1216,7 @@ break; case MOZ_GTK_DROPDOWN: return moz_gtk_combo_box_paint(cr, rect, state, direction); -@@ -3272,7 +3489,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType +@@ -3272,7 +3496,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType case MOZ_GTK_DROPDOWN_ENTRY: ensure_combo_box_entry_widgets(); return moz_gtk_entry_paint(cr, rect, state, @@ -1217,7 +1225,7 @@ break; case MOZ_GTK_CHECKBUTTON_CONTAINER: case MOZ_GTK_RADIOBUTTON_CONTAINER: -@@ -3324,7 +3541,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType +@@ -3324,7 +3548,7 @@ moz_gtk_widget_paint(GtkThemeWidgetType (GtkArrowType) flags, direction); break; case MOZ_GTK_MENUBAR: @@ -1226,7 +1234,7 @@ break; case MOZ_GTK_MENUPOPUP: return moz_gtk_menu_popup_paint(cr, rect, direction); -@@ -3375,7 +3592,7 @@ GtkWidget* moz_gtk_get_scrollbar_widget( +@@ -3375,7 +3599,7 @@ GtkWidget* moz_gtk_get_scrollbar_widget( { MOZ_ASSERT(is_initialized, "Forgot to call moz_gtk_init()"); ensure_scrollbar_widget(); @@ -1235,7 +1243,7 @@ } gboolean moz_gtk_has_scrollbar_buttons(void) -@@ -3383,7 +3600,7 @@ gboolean moz_gtk_has_scrollbar_buttons(v +@@ -3383,7 +3607,7 @@ gboolean moz_gtk_has_scrollbar_buttons(v gboolean backward, forward, secondary_backward, secondary_forward; MOZ_ASSERT(is_initialized, "Forgot to call moz_gtk_init()"); ensure_scrollbar_widget(); @@ -1244,7 +1252,7 @@ "has-backward-stepper", &backward, "has-forward-stepper", &forward, "has-secondary-backward-stepper", &secondary_backward, -@@ -3409,17 +3626,19 @@ moz_gtk_shutdown() +@@ -3409,17 +3633,19 @@ moz_gtk_shutdown() gProtoWindow = NULL; gProtoLayout = NULL; @@ -1271,7 +1279,7 @@ gComboBoxWidget = NULL; gComboBoxButtonWidget = NULL; gComboBoxSeparatorWidget = NULL; -@@ -3427,12 +3646,12 @@ moz_gtk_shutdown() +@@ -3427,12 +3653,12 @@ moz_gtk_shutdown() gComboBoxEntryWidget = NULL; gComboBoxEntryButtonWidget = NULL; gComboBoxEntryArrowWidget = NULL; @@ -1286,9 +1294,9 @@ gTabWidget = NULL; gTooltipWidget = NULL; gMenuBarWidget = NULL; -diff -up firefox-45.0.1/widget/gtk/gtkdrawing.h.gtk3-20 firefox-45.0.1/widget/gtk/gtkdrawing.h ---- firefox-45.0.1/widget/gtk/gtkdrawing.h.gtk3-20 2016-03-15 23:37:46.000000000 +0100 -+++ firefox-45.0.1/widget/gtk/gtkdrawing.h 2016-04-05 14:40:27.847088629 +0200 +diff -up firefox-45.0.2/widget/gtk/gtkdrawing.h.gtk3-20 firefox-45.0.2/widget/gtk/gtkdrawing.h +--- firefox-45.0.2/widget/gtk/gtkdrawing.h.gtk3-20 2016-04-08 01:55:04.000000000 +0200 ++++ firefox-45.0.2/widget/gtk/gtkdrawing.h 2016-04-20 15:00:29.468048948 +0200 @@ -67,6 +67,13 @@ typedef enum { MOZ_GTK_TAB_SELECTED = 1 << 10 } GtkTabFlags; @@ -1327,9 +1335,9 @@ #ifdef __cplusplus } #endif /* __cplusplus */ -diff -up firefox-45.0.1/widget/gtk/mozgtk/mozgtk.c.gtk3-20 firefox-45.0.1/widget/gtk/mozgtk/mozgtk.c ---- firefox-45.0.1/widget/gtk/mozgtk/mozgtk.c.gtk3-20 2016-04-05 14:40:27.799088451 +0200 -+++ firefox-45.0.1/widget/gtk/mozgtk/mozgtk.c 2016-04-05 15:16:17.401430826 +0200 +diff -up firefox-45.0.2/widget/gtk/mozgtk/mozgtk.c.gtk3-20 firefox-45.0.2/widget/gtk/mozgtk/mozgtk.c +--- firefox-45.0.2/widget/gtk/mozgtk/mozgtk.c.gtk3-20 2016-04-20 15:00:29.443048846 +0200 ++++ firefox-45.0.2/widget/gtk/mozgtk/mozgtk.c 2016-04-20 15:00:29.469048952 +0200 @@ -503,6 +503,11 @@ STUB(gtk_window_set_type_hint) STUB(gtk_window_set_wmclass) STUB(gtk_window_unfullscreen) @@ -1364,9 +1372,9 @@ #endif #ifdef GTK2_SYMBOLS -diff -up firefox-45.0.1/widget/gtk/nsLookAndFeel.cpp.gtk3-20 firefox-45.0.1/widget/gtk/nsLookAndFeel.cpp ---- firefox-45.0.1/widget/gtk/nsLookAndFeel.cpp.gtk3-20 2016-03-15 23:37:46.000000000 +0100 -+++ firefox-45.0.1/widget/gtk/nsLookAndFeel.cpp 2016-04-05 14:40:27.848088632 +0200 +diff -up firefox-45.0.2/widget/gtk/nsLookAndFeel.cpp.gtk3-20 firefox-45.0.2/widget/gtk/nsLookAndFeel.cpp +--- firefox-45.0.2/widget/gtk/nsLookAndFeel.cpp.gtk3-20 2016-04-08 01:55:04.000000000 +0200 ++++ firefox-45.0.2/widget/gtk/nsLookAndFeel.cpp 2016-04-20 15:00:29.469048952 +0200 @@ -232,14 +232,18 @@ nsLookAndFeel::NativeGetColor(ColorID aI case eColorID_activeborder: // active window border @@ -1589,9 +1597,9 @@ #endif // Some themes have a unified menu bar, and support window dragging on it gboolean supports_menubar_drag = FALSE; -diff -up firefox-45.0.1/widget/gtk/nsNativeThemeGTK.cpp.gtk3-20 firefox-45.0.1/widget/gtk/nsNativeThemeGTK.cpp ---- firefox-45.0.1/widget/gtk/nsNativeThemeGTK.cpp.gtk3-20 2016-03-15 23:37:46.000000000 +0100 -+++ firefox-45.0.1/widget/gtk/nsNativeThemeGTK.cpp 2016-04-05 14:40:27.848088632 +0200 +diff -up firefox-45.0.2/widget/gtk/nsNativeThemeGTK.cpp.gtk3-20 firefox-45.0.2/widget/gtk/nsNativeThemeGTK.cpp +--- firefox-45.0.2/widget/gtk/nsNativeThemeGTK.cpp.gtk3-20 2016-04-08 01:55:04.000000000 +0200 ++++ firefox-45.0.2/widget/gtk/nsNativeThemeGTK.cpp 2016-04-20 15:00:29.469048952 +0200 @@ -1548,9 +1548,6 @@ nsNativeThemeGTK::GetMinimumWidgetSize(n case NS_THEME_RADIO_CONTAINER: case NS_THEME_CHECKBOX_LABEL: