status-desktop/ui/shared/status/StatusChatInputImageArea.qml
Pascal Precht c01300a3bb fix(Chat): ensure image area is reset properly when removing images
We were only resetting the `Image` source but not the consumer facing `imageSource`
property when removing a selected image from the image area.

This cause the `imageSource` to practically never change after an image has
been selected the first time. Selecting an image another time would open the
image area, but if the image happens to be the same as the first time, the `imageSource`
practically didn't change, causing the app to render an "empty" image.
2020-12-08 17:01:32 -05:00

94 lines
2.4 KiB
QML

import QtQuick 2.13
import QtGraphicalEffects 1.13
import QtQuick.Controls 2.13
import "../../imports"
import "../../shared"
Rectangle {
id: imageArea
height: chatImage.height
signal imageRemoved()
property url imageSource: ""
color: "transparent"
Image {
id: chatImage
property bool hovered: false
height: 64
anchors.left: parent.left
anchors.top: parent.top
fillMode: Image.PreserveAspectFit
mipmap: true
smooth: false
antialiasing: true
source: parent.imageSource
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
hoverEnabled: true
onEntered: {
chatImage.hovered = true
}
onExited: {
chatImage.hovered = false
}
}
layer.enabled: true
layer.effect: OpacityMask {
maskSource: Item {
width: chatImage.width
height: chatImage.height
Rectangle {
anchors.top: parent.top
anchors.left: parent.left
width: chatImage.width
height: chatImage.height
radius: 16
}
Rectangle {
anchors.bottom: parent.bottom
anchors.right: parent.right
width: 32
height: 32
radius: 4
}
}
}
}
RoundButton {
id: closeBtn
implicitWidth: 24
implicitHeight: 24
padding: 0
anchors.top: chatImage.top
anchors.topMargin: -5
anchors.right: chatImage.right
anchors.rightMargin: -Style.current.halfPadding
visible: chatImage.hovered || hovered
contentItem: SVGImage {
source: !closeBtn.hovered ?
"../../app/img/close-filled.svg" : "../../app/img/close-filled-hovered.svg"
width: closeBtn.width
height: closeBtn.height
}
background: Rectangle {
color: "transparent"
}
onClicked: {
imageArea.imageRemoved()
imageArea.imageSource = ""
}
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onPressed: mouse.accepted = false
}
}
}