nheko/resources/qml/MatrixText.qml
Nicolas Werner cd21ff6993
Horrific hack to hide menu entries when invisible
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.
2025-01-06 22:04:48 +01:00

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
}
}