[gtk+] roundedbox: Only grow border-radius if there is one



commit 67456304d43bc455a068c9e2755ef3af4da78426
Author: Benjamin Otte <otte redhat com>
Date:   Thu Aug 21 00:10:43 2014 +0200

    roundedbox: Only grow border-radius if there is one
    
    This is relevant for shadow spread and goes in line with the web.
    
    Testcase included.

 gtk/gtkroundedbox.c                         |    6 ++++--
 testsuite/reftests/Makefile.am              |    3 +++
 testsuite/reftests/box-shadow-spread.css    |    9 +++++++++
 testsuite/reftests/box-shadow-spread.ref.ui |   24 ++++++++++++++++++++++++
 testsuite/reftests/box-shadow-spread.ui     |   24 ++++++++++++++++++++++++
 5 files changed, 64 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkroundedbox.c b/gtk/gtkroundedbox.c
index c3e2650..c89a1fd 100644
--- a/gtk/gtkroundedbox.c
+++ b/gtk/gtkroundedbox.c
@@ -149,8 +149,10 @@ gtk_css_border_radius_grow (GtkRoundedBoxCorner *corner,
                             double               horizontal,
                             double               vertical)
 {
-  corner->horizontal += horizontal;
-  corner->vertical += vertical;
+  if (corner->horizontal)
+    corner->horizontal += horizontal;
+  if (corner->vertical)
+    corner->vertical += vertical;
 
   if (corner->horizontal <= 0 || corner->vertical <= 0)
     {
diff --git a/testsuite/reftests/Makefile.am b/testsuite/reftests/Makefile.am
index 0b39b41..103b523 100644
--- a/testsuite/reftests/Makefile.am
+++ b/testsuite/reftests/Makefile.am
@@ -143,6 +143,9 @@ testdata = \
        box-shadow-spec-inset.css \
        box-shadow-spec-inset.ref.ui \
        box-shadow-spec-inset.ui \
+       box-shadow-spread.css \
+       box-shadow-spread.ref.ui \
+       box-shadow-spread.ui \
        button-wrapping.ui \
        button-wrapping.ref.ui \
        cellrenderer-pixbuf-stock-rtl.css \
diff --git a/testsuite/reftests/box-shadow-spread.css b/testsuite/reftests/box-shadow-spread.css
new file mode 100644
index 0000000..b22bad4
--- /dev/null
+++ b/testsuite/reftests/box-shadow-spread.css
@@ -0,0 +1,9 @@
+ import "reset-to-defaults.css";
+
+.test {
+  box-shadow: 0 0 0 10px red;
+}
+
+.reference {
+  border: solid 10px red;
+}
diff --git a/testsuite/reftests/box-shadow-spread.ref.ui b/testsuite/reftests/box-shadow-spread.ref.ui
new file mode 100644
index 0000000..f6894c2
--- /dev/null
+++ b/testsuite/reftests/box-shadow-spread.ref.ui
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.1 -->
+<interface>
+  <requires lib="gtk+" version="3.12"/>
+  <object class="GtkWindow" id="window1">
+    <property name="width_request">100</property>
+    <property name="height_request">100</property>
+    <property name="can_focus">False</property>
+    <property name="type">popup</property>
+    <child>
+      <object class="GtkButton" id="button1">
+        <property name="label" translatable="yes">Hi</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="receives_default">False</property>
+        <property name="halign">center</property>
+        <property name="valign">center</property>
+        <style>
+          <class name="reference"/>
+        </style>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/testsuite/reftests/box-shadow-spread.ui b/testsuite/reftests/box-shadow-spread.ui
new file mode 100644
index 0000000..ef4cdea
--- /dev/null
+++ b/testsuite/reftests/box-shadow-spread.ui
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.1 -->
+<interface>
+  <requires lib="gtk+" version="3.12"/>
+  <object class="GtkWindow" id="window1">
+    <property name="width_request">100</property>
+    <property name="height_request">100</property>
+    <property name="can_focus">False</property>
+    <property name="type">popup</property>
+    <child>
+      <object class="GtkButton" id="button1">
+        <property name="label" translatable="yes">Hi</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="receives_default">False</property>
+        <property name="halign">center</property>
+        <property name="valign">center</property>
+        <style>
+          <class name="test"/>
+        </style>
+      </object>
+    </child>
+  </object>
+</interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]