[firefox] Gtk3 - added fix for button/entry focus sizes

Martin Stransky stransky at fedoraproject.org
Mon Jan 12 10:30:59 UTC 2015


commit d3440514d510ac87ee780a7ecc7d42b9c5300031
Author: Martin Stransky <stransky at anakreon.cz>
Date:   Mon Jan 12 11:31:12 2015 +0100

    Gtk3 - added fix for button/entry focus sizes

 firefox.spec                       |    3 +
 mozilla-1073117-button-focus.patch |   78 ++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+), 0 deletions(-)
---
diff --git a/firefox.spec b/firefox.spec
index dfdba64..fa0dbe4 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -153,6 +153,7 @@ Patch406:        mozilla-1073117-color.patch
 Patch407:        mozilla-1097592.patch
 Patch408:        mozilla-1110211.patch
 Patch409:        mozilla-1073117-entry-button-size.patch
+Patch410:        mozilla-1073117-button-focus.patch
 
 %if %{official_branding}
 # Required by Mozilla Corporation
@@ -308,6 +309,7 @@ cd %{tarballdir}
 %patch407 -p1 -b .1097592
 %patch408 -p2 -b .1110211
 %patch409 -p1 -b .1073117-entry-button-size
+%patch410 -p1 -b .1073117-button-focus
 %endif
 
 %if %{official_branding}
@@ -774,6 +776,7 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 * Fri Jan 12 2015 Martin Stransky <stransky at redhat.com> - 35.0-2
 - Update to 35.0 Build 3
 - Gtk3 - added fix for button/entry box sizes
+- Gtk3 - added fix for button/entry focus sizes
 
 * Tue Jan 6 2015 Martin Stransky <stransky at redhat.com> - 35.0-1
 - Update to 35.0 Build 1
diff --git a/mozilla-1073117-button-focus.patch b/mozilla-1073117-button-focus.patch
new file mode 100644
index 0000000..10be353
--- /dev/null
+++ b/mozilla-1073117-button-focus.patch
@@ -0,0 +1,78 @@
+# HG changeset patch
+# Parent ee674865d97716b0334559abb8eec54eb5c72cb0
+# User Martin Stransky <stransky at redhat.com>
+Bug 1073117 - Fixed Theme issues with GTK 3.14 - GtkButtons - use border style 
+property for focus rendering. Don't follow interior-focus which is always true in Gtk 3.14.
+r=?karlt
+
+diff --git a/widget/gtk/gtk3drawing.c b/widget/gtk/gtk3drawing.c
+--- a/widget/gtk/gtk3drawing.c
++++ b/widget/gtk/gtk3drawing.c
+@@ -903,29 +903,18 @@ moz_gtk_button_paint(cairo_t *cr, GdkRec
+                      GtkWidgetState* state,
+                      GtkReliefStyle relief, GtkWidget* widget,
+                      GtkTextDirection direction)
+ {
+     GtkStateFlags state_flags = GetStateFlagsFromGtkWidgetState(state);
+     GtkStyleContext* style = gtk_widget_get_style_context(widget);    
+     gint x = rect->x, y=rect->y, width=rect->width, height=rect->height;
+ 
+-    gboolean interior_focus;
+-    gint focus_width, focus_pad;
+-
+-    moz_gtk_widget_get_focus(widget, &interior_focus, &focus_width, &focus_pad);
+     gtk_widget_set_direction(widget, direction);
+-
+-    if (!interior_focus && state->focused) {
+-        x += focus_width + focus_pad;
+-        y += focus_width + focus_pad;
+-        width -= 2 * (focus_width + focus_pad);
+-        height -= 2 * (focus_width + focus_pad);
+-    }
+-  
++ 
+     gtk_style_context_save(style);
+     gtk_style_context_set_state(style, state_flags);
+ 
+     if (state->isDefault && relief == GTK_RELIEF_NORMAL) {
+         /* handle default borders both outside and inside the button */
+         gint default_top, default_left, default_bottom, default_right;
+         moz_gtk_button_get_default_overflow(&default_top, &default_left,
+                                             &default_bottom, &default_right);
+@@ -948,30 +937,22 @@ moz_gtk_button_paint(cairo_t *cr, GdkRec
+         /* the following line can trigger an assertion (Crux theme)
+            file ../../gdk/gdkwindow.c: line 1846 (gdk_window_clear_area):
+            assertion `GDK_IS_WINDOW (window)' failed */
+         gtk_render_background(style, cr, x, y, width, height);
+         gtk_render_frame(style, cr, x, y, width, height);
+     }
+ 
+     if (state->focused) {
+-        if (interior_focus) {
+-            GtkBorder border;
+-            gtk_style_context_get_border(style, state_flags, &border);
+-            x += border.left + focus_pad;
+-            y += border.top + focus_pad;
+-            width -= 2 * (border.left + focus_pad);
+-            height -= 2 * (border.top + focus_pad);
+-        } else {
+-            x -= focus_width + focus_pad;
+-            y -= focus_width + focus_pad;
+-            width += 2 * (focus_width + focus_pad);
+-            height += 2 * (focus_width + focus_pad);
+-        }
+-
++        GtkBorder border;
++        gtk_style_context_get_border(style, state_flags, &border);
++        x += border.left;
++        y += border.top;
++        width -= (border.left + border.right);
++        height -= (border.top + border.bottom);
+         gtk_render_focus(style, cr, x, y, width, height);
+     }
+     gtk_style_context_restore(style);
+     return MOZ_GTK_SUCCESS;
+ }
+ 
+ static gint
+ moz_gtk_toggle_paint(cairo_t *cr, GdkRectangle* rect,


More information about the scm-commits mailing list