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.
This commit is contained in:
Benjamin Otte 2017-01-13 03:28:34 +01:00
parent b58de2d16c
commit a06b1ea1ba
5 changed files with 36 additions and 4 deletions

View File

@ -358,13 +358,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

View File

@ -198,6 +198,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 \

View File

@ -0,0 +1,8 @@
window {
background-image: -gtk-icontheme("edit-delete");
background-repeat: no-repeat;
}
#reference {
background-size: 24px 24px;
}

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window1">
<property name="width_request">48</property>
<property name="height_request">24</property>
<property name="can_focus">False</property>
<property name="type">popup</property>
<property name="name">reference</property>
</object>
</interface>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.0 -->
<object class="GtkWindow" id="window1">
<property name="width_request">48</property>
<property name="height_request">24</property>
<property name="can_focus">False</property>
<property name="type">popup</property>
</object>
</interface>