on xenial help sign in
CroppedImageMinimumSourceSize: Fix 'Binding loop detected for property "imageAspectRatio"'
00e2272Albert Astals Cid
plugins/Dash/CroppedImageMinimumSourceSize.qml+15−4
@@ -1,5 +1,5 @@
1/*
1/*
2− * Copyright (C) 2014 Canonical, Ltd.
2+ * Copyright (C) 2014, 2015 Canonical, Ltd.
3 *
3 *
4 * This program is free software; you can redistribute it and/or modify
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
5 * it under the terms of the GNU General Public License as published by
@@ -21,7 +21,18 @@ Image {
21
21
22 fillMode: Image.PreserveAspectCrop
22 fillMode: Image.PreserveAspectCrop
23
23
24− readonly property real itemAspectRatio: width / height
24+ property bool useHeight: false
25+ function updateUseHeight()
26+ {
27+ // Do not turn into a binding since otherwise the qml
28+ // engine complains about binding loops
25− readonly property real imageAspectRatio: implicitWidth / implicitHeight
29+ useHeight = (implicitWidth / implicitHeight) > (width / height);
30+ }
31+
32+ onHeightChanged: updateUseHeight();
33+ onWidthChanged: updateUseHeight();
34+ onImplicitHeightChanged: updateUseHeight();
35+ onImplicitWidthChanged: updateUseHeight();
36+
26− sourceSize: (imageAspectRatio > itemAspectRatio) ? Qt.size(0, height) : Qt.size(width, 0)
37+ sourceSize: useHeight ? Qt.size(0, height) : Qt.size(width, 0)
27}
38}