Fix flickering in hover menu

This commit is contained in:
Nicolas Werner 2022-03-07 23:16:18 +01:00
parent fd041ce58d
commit 9c622b60b9
No known key found for this signature in database
GPG Key ID: C8D75E610773F2D9
1 changed files with 13 additions and 16 deletions

View File

@ -56,7 +56,7 @@ Item {
anchors.rightMargin: scrollbar.interactive? scrollbar.width : 0
Rectangle {
Control {
//closePolicy: Popup.NoAutoClose
id: messageActions
@ -64,27 +64,22 @@ Item {
property Item attached: null
property alias model: row.model
// use comma to update on scroll
property var attachedPos: chat.contentY, chat.count, attached ? chat.mapFromItem(attached, attached ? attached.width - width : 0, -height) : null
readonly property int padding: Nheko.paddingSmall
property var attachedPos: chat.contentY, attached ? chat.mapFromItem(attached, attached ? attached.width - width : 0, -height) : null
padding: Nheko.paddingSmall
visible: Settings.buttonsInTimeline && !!attached && (attached.hovered || messageActionHover.hovered)
visible: Settings.buttonsInTimeline && !!attached && (attached.hovered || hovered)
x: attached ? attachedPos.x : 0
y: attached ? attachedPos.y : 0
z: 10
height: row.implicitHeight + padding * 2
width: row.implicitWidth + padding * 2
background: Rectangle {
color: Nheko.colors.window
border.color: Nheko.colors.buttonText
border.width: 1
radius: padding
HoverHandler {
id: messageActionHover
grabPermissions: PointerHandler.CanTakeOverFromAnything
}
Row {
contentItem: Row {
id: row
property var model
@ -479,7 +474,7 @@ Item {
TimelineRow {
id: timelinerow
hovered: messageActionHover.hovered ? (messageActions.model != undefined && messageActions.model.eventId == timelinerow.eventId) : wrapper.hovered
hovered: messageActions.hovered ? (messageActions.model != undefined && messageActions.model == timelinerow) : wrapper.hovered
proportionalHeight: wrapper.proportionalHeight
type: chat.model, wrapper.type
@ -512,17 +507,19 @@ Item {
status: wrapper.status
relatedEventCacheBuster: wrapper.relatedEventCacheBuster
y: section.visible && section.active ? section.y + section.height : 0
}
onHoveredChanged: {
onHoveredChanged: {
console.log("Hover changed: " + hovered + " w: " + wrapper.hovered + " h: "+ messageActions.hovered + " obj: " + timelinerow)
if (!Settings.mobileMode && hovered) {
if (!messageActionHover.hovered) {
if (!messageActions.hovered) {
messageActions.attached = timelinerow;
messageActions.model = timelinerow;
}
}
}
}
Connections {
function onMovementEnded() {
if (y + height + 2 * chat.spacing > chat.contentY + chat.height && y < chat.contentY + chat.height)