diff --git a/src/contents/ui/Bubble.qml b/src/contents/ui/Bubble.qml --- a/src/contents/ui/Bubble.qml +++ b/src/contents/ui/Bubble.qml @@ -22,6 +22,7 @@ property var menuContent: [] readonly property var bubbleSpacing: leftPadding + rightPadding + readonly property double replyMaxHeight: Kirigami.Units.gridUnit * 7 Layout.fillWidth: true Layout.preferredHeight: bubbleRootLayout.implicitHeight @@ -122,7 +123,7 @@ Layout.fillWidth: true Layout.margins: 0 Layout.preferredHeight: inReplyToLayout.implicitHeight - Layout.maximumHeight: Kirigami.Units.gridUnit * 5 + Layout.maximumHeight: upper.replyMaxHeight clip: true onClicked: eventListView.goToEvent(bubbleRootLayout.replyToOrAnnotatedEventId) diff --git a/src/contents/ui/event-types/Image.qml b/src/contents/ui/event-types/Image.qml --- a/src/contents/ui/event-types/Image.qml +++ b/src/contents/ui/event-types/Image.qml @@ -30,6 +30,7 @@ property var imageFile: event.content.file || {} property var imageWidth: imageInfo.w property var imageHeight: imageInfo.h + property var imageMaxHeight: compactMode ? Kirigami.Units.gridUnit * 5 : Infinity property var imageMxcUri: fileHandler.encryptedFileMxcUri || fileHandler.unencryptedFileMxcUri property var innerContentWidth: upper.contentMaxWidth - bubble.bubbleSpacing @@ -70,9 +71,14 @@ property var image: Image { id: image + objectName: 'mainImage' Layout.fillWidth: true - Layout.preferredWidth: calcImageWidth() - Layout.preferredHeight: width < calcImageWidth() ? calcImageHeight() / calcImageWidth() * width : calcImageHeight() + property double imageWidth: upper.thumbnailWidth || upper.imageWidth || image.implicitWidth || 1 + property double imageHeight: upper.thumbnailHeight || upper.imageHeight || image.implicitHeight || 1 + property double privHeight: Math.min(imageMaxHeight, imageHeight) + property double privWidth: privHeight / imageHeight * imageWidth + Layout.preferredWidth: privWidth + Layout.preferredHeight: width < privWidth ? privHeight / privWidth * width : privHeight source: fileHandler.kazvIOJob ? "" : fileHandler.cachedFile horizontalAlignment: Image.AlignLeft fillMode: Image.PreserveAspectFit @@ -106,14 +112,4 @@ ] } } - - function calcImageWidth() { - const eventSpecWidth = thumbnailWidth || imageWidth - return eventSpecWidth || image.implicitWidth || 1 - } - - function calcImageHeight() { - const eventSpecHeight = thumbnailHeight || imageHeight - return eventSpecHeight || image.implicitHeight || 1 - } } diff --git a/src/tests/quick-tests/tst_EventView.qml b/src/tests/quick-tests/tst_EventView.qml --- a/src/tests/quick-tests/tst_EventView.qml +++ b/src/tests/quick-tests/tst_EventView.qml @@ -9,7 +9,7 @@ import QtTest 1.0 import moe.kazv.mxc.kazv 0.0 as MK - +import org.kde.kirigami 2.13 as Kirigami import '../../contents/ui' as Kazv import 'test-helpers.js' as Helpers import 'test-helpers' as TestHelpers @@ -140,6 +140,10 @@ content: { msgtype: 'm.image', body: 'some body', + info: { + h: Kirigami.Units.gridUnit * 10, + w: Kirigami.Units.gridUnit * 10, + } }, formattedTime: '4:06 P.M.', }) @@ -589,6 +593,9 @@ verify(findChild(eventViewSticker, 'bodyLabel').visible); verify(findChild(eventViewStickerCompact, 'summaryLabel').visible); verify(!findChild(eventViewStickerCompact, 'bodyLabel').visible); + + const image = findChild(eventViewImageCompact, 'mainImage'); + verify(image.height <= Kirigami.Units.gridUnit * 5); } } }