Workaround for https://bugreports.qt.io/browse/QTBUG-54767 or https://bugreports.qt.io/browse/QTBUG-130996. This is probably the worst code I have written in a while, but basically we add a value interceptor to filter out any invisible menu entry. This is pretty dangerous because one false step crashes the whole menu. Menu entries are actually Cpp owned and need to be manually deleted unless they are removed via removeItem. Care needs to be taken to not mess up the contentData list. I expect this to break soon.
50 lines
1.2 KiB
QML
50 lines
1.2 KiB
QML
// SPDX-FileCopyrightText: Nheko Contributors
|
|
//
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import im.nheko
|
|
|
|
TextArea {
|
|
id: r
|
|
|
|
property alias cursorShape: cs.cursorShape
|
|
|
|
ToolTip.text: hoveredLink
|
|
ToolTip.visible: hoveredLink || false
|
|
background: null
|
|
bottomInset: 0
|
|
bottomPadding: 0
|
|
// this always has to be enabled, otherwise you can't click links anymore!
|
|
//enabled: selectByMouse
|
|
color: palette.text
|
|
focus: false
|
|
leftInset: 0
|
|
leftPadding: 0
|
|
readOnly: true
|
|
rightInset: 0
|
|
rightPadding: 0
|
|
textFormat: TextEdit.RichText
|
|
topInset: 0
|
|
topPadding: 0
|
|
wrapMode: Text.Wrap
|
|
|
|
// Setting a tooltip delay makes the hover text empty .-.
|
|
//ToolTip.delay: Nheko.tooltipDelay
|
|
Component.onCompleted: {
|
|
TimelineManager.fixImageRendering(r.textDocument, r);
|
|
}
|
|
onLinkActivated: (link) => Nheko.openLink(link)
|
|
|
|
// propagate events up
|
|
onPressAndHold: event => event.accepted = false
|
|
onPressed: event => event.accepted = (event.button == Qt.LeftButton)
|
|
|
|
NhekoCursorShape {
|
|
id: cs
|
|
|
|
anchors.fill: parent
|
|
cursorShape: hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
|
|
}
|
|
}
|