From: Benjamin Otte Date: Fri, 13 Jan 2017 02:28:34 +0000 (+0100) Subject: cssimage: Scale images to contain, not cover X-Git-Tag: archive/raspbian/3.24.39-1+rpi1~1^2~65^2~39^2~881 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2e7d5c08cbd62cbb49dbec965ecebd6229d6d00a;p=gtk%2B3.0.git cssimage: Scale images to contain, not cover Images with just an aspect ratio, but without a size, should be scaled to be fully visible in the given area. But we scaled them to completely cover the given area, which made them partially invisible. Reftest included. --- diff --git a/gtk/gtkcssimage.c b/gtk/gtkcssimage.c index 3b9ff41a41..eebe013cea 100644 --- a/gtk/gtkcssimage.c +++ b/gtk/gtkcssimage.c @@ -307,13 +307,13 @@ _gtk_css_image_get_concrete_size (GtkCssImage *image, { if (image_aspect * default_height > default_width) { - *concrete_width = default_height * image_aspect; - *concrete_height = default_height; + *concrete_width = default_width; + *concrete_height = default_width / image_aspect; } else { - *concrete_width = default_width; - *concrete_height = default_width / image_aspect; + *concrete_width = default_height * image_aspect; + *concrete_height = default_height; } } else diff --git a/testsuite/reftests/Makefile.am b/testsuite/reftests/Makefile.am index 37df3a9876..fa968e9105 100644 --- a/testsuite/reftests/Makefile.am +++ b/testsuite/reftests/Makefile.am @@ -206,6 +206,9 @@ testdata = \ css-currentcolor-alpha.css \ css-currentcolor-alpha.ui \ css-currentcolor-alpha.ref.ui \ + css-image-aspect-ratio.css \ + css-image-aspect-ratio.ui \ + css-image-aspect-ratio.ref.ui \ css-match-class.css \ css-match-class.ref.ui \ css-match-class.ui \ diff --git a/testsuite/reftests/css-image-aspect-ratio.css b/testsuite/reftests/css-image-aspect-ratio.css new file mode 100644 index 0000000000..da054daa16 --- /dev/null +++ b/testsuite/reftests/css-image-aspect-ratio.css @@ -0,0 +1,8 @@ +window { + background-image: -gtk-icontheme("edit-delete"); + background-repeat: no-repeat; +} + +#reference { + background-size: 24px 24px; +} diff --git a/testsuite/reftests/css-image-aspect-ratio.ref.ui b/testsuite/reftests/css-image-aspect-ratio.ref.ui new file mode 100644 index 0000000000..88fbd72e75 --- /dev/null +++ b/testsuite/reftests/css-image-aspect-ratio.ref.ui @@ -0,0 +1,11 @@ + + + + + 48 + 24 + False + popup + reference + + diff --git a/testsuite/reftests/css-image-aspect-ratio.ui b/testsuite/reftests/css-image-aspect-ratio.ui new file mode 100644 index 0000000000..c7f559893b --- /dev/null +++ b/testsuite/reftests/css-image-aspect-ratio.ui @@ -0,0 +1,10 @@ + + + + + 48 + 24 + False + popup + +