Remove usage of HScrollableTextArea
This commit is contained in:
parent
a91a0c18f7
commit
01d3b6b489
1
TODO.md
1
TODO.md
|
@ -29,6 +29,7 @@
|
|||
- Catch server 5xx errors when sending message and retry
|
||||
|
||||
- Popups and room settings can't be scrolled when not enough height to show all
|
||||
- `TextArea`s in Popups grow past window height instead of being scrollable
|
||||
|
||||
- Handle cases where a known account's access token is invalid
|
||||
- If an account is gone from the user's config, discard UI state last page
|
||||
|
|
|
@ -1,120 +0,0 @@
|
|||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
|
||||
ScrollView {
|
||||
id: scrollView
|
||||
opacity: enabled ? 1 : theme.disabledElementsOpacity
|
||||
clip: true
|
||||
ScrollBar.vertical.visible: contentHeight > height
|
||||
|
||||
// Set it only on component creation to avoid binding loops
|
||||
Component.onCompleted: if (! text) {
|
||||
text = window.getState(this, "text", "")
|
||||
textArea.cursorPosition = text.length
|
||||
}
|
||||
|
||||
onTextChanged: window.saveState(this)
|
||||
|
||||
|
||||
default property alias textAreaData: textArea.data
|
||||
|
||||
property string saveName: ""
|
||||
property var saveId: "ALL"
|
||||
property var saveProperties: ["text"]
|
||||
|
||||
property alias placeholderText: textArea.placeholderText
|
||||
property alias placeholderTextColor: textArea.placeholderTextColor
|
||||
property alias area: textArea
|
||||
property alias text: textArea.text
|
||||
|
||||
property var focusItemOnTab: null
|
||||
property var disabledText: null
|
||||
property string defaultText: ""
|
||||
readonly property bool changed: text !== defaultText
|
||||
|
||||
|
||||
function reset() { area.clear(); text = defaultText }
|
||||
|
||||
|
||||
Behavior on opacity { HNumberAnimation {} }
|
||||
|
||||
TextArea {
|
||||
id: textArea
|
||||
text: defaultText
|
||||
enabled: parent.enabled
|
||||
leftPadding: theme.spacing
|
||||
rightPadding: leftPadding
|
||||
topPadding: theme.spacing / 1.5
|
||||
bottomPadding: topPadding
|
||||
|
||||
readOnly: ! visible
|
||||
selectByMouse: true
|
||||
|
||||
wrapMode: TextEdit.Wrap
|
||||
font.family: theme.fontFamily.sans
|
||||
font.pixelSize: theme.fontSize.normal
|
||||
font.pointSize: -1
|
||||
|
||||
placeholderTextColor: theme.controls.textArea.placeholderText
|
||||
color: theme.controls.textArea.text
|
||||
|
||||
background: Rectangle {
|
||||
id: textAreaBackground
|
||||
color: theme.controls.textArea.background
|
||||
radius: theme.radius
|
||||
}
|
||||
|
||||
Keys.onPressed: if (
|
||||
event.modifiers & Qt.AltModifier ||
|
||||
event.modifiers & Qt.MetaModifier
|
||||
) event.accepted = true
|
||||
|
||||
KeyNavigation.priority: KeyNavigation.BeforeItem
|
||||
KeyNavigation.tab: focusItemOnTab
|
||||
|
||||
|
||||
Binding on color {
|
||||
value: "transparent"
|
||||
when: disabledText !== null && ! textArea.enabled
|
||||
}
|
||||
|
||||
Binding on placeholderTextColor {
|
||||
value: "transparent"
|
||||
when: disabledText !== null && ! textArea.enabled
|
||||
}
|
||||
|
||||
Binding on implicitHeight {
|
||||
value: disabledTextLabel.implicitHeight
|
||||
when: disabledText !== null && ! textArea.enabled
|
||||
}
|
||||
|
||||
Behavior on color { HColorAnimation {} }
|
||||
Behavior on placeholderTextColor { HColorAnimation {} }
|
||||
|
||||
HLabel {
|
||||
id: disabledTextLabel
|
||||
anchors.fill: parent
|
||||
visible: opacity > 0
|
||||
opacity: disabledText !== null && parent.enabled ? 0 : 1
|
||||
text: disabledText || ""
|
||||
|
||||
leftPadding: parent.leftPadding
|
||||
rightPadding: parent.rightPadding
|
||||
topPadding: parent.topPadding
|
||||
bottomPadding: parent.bottomPadding
|
||||
|
||||
wrapMode:
|
||||
parent.wrapMode === TextEdit.Wrap ? Text.Wrap :
|
||||
parent.wrapMode === TextEdit.WordWrap ? Text.WordWrap :
|
||||
parent.wrapMode === TextEdit.WrapAnywhere ? Text.WrapAnywhere :
|
||||
Text.NoWrap
|
||||
|
||||
font.family: parent.font.family
|
||||
font.pixelSize: parent.font.pixelSize
|
||||
|
||||
Behavior on opacity { HNumberAnimation {} }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
import "../Base"
|
||||
|
||||
|
@ -12,7 +13,7 @@ BoxPopup {
|
|||
okText: qsTr("Invite")
|
||||
okEnabled: invitingAllowed && Boolean(inviteArea.text.trim())
|
||||
|
||||
onOpened: inviteArea.area.forceActiveFocus()
|
||||
onOpened: inviteArea.forceActiveFocus()
|
||||
|
||||
onInvitingAllowedChanged:
|
||||
if (! invitingAllowed && inviteFuture) inviteFuture.cancel()
|
||||
|
@ -60,14 +61,16 @@ BoxPopup {
|
|||
property var failedInvites: []
|
||||
|
||||
|
||||
HScrollableTextArea {
|
||||
id: inviteArea
|
||||
focusItemOnTab: box.firstButton
|
||||
area.placeholderText:
|
||||
qsTr("User IDs (e.g. @bob:matrix.org @alice:localhost)")
|
||||
|
||||
ScrollView {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
HTextArea {
|
||||
id: inviteArea
|
||||
focusItemOnTab: box.firstButton
|
||||
placeholderText:
|
||||
qsTr("User IDs (e.g. @bob:matrix.org @alice:localhost)")
|
||||
}
|
||||
}
|
||||
|
||||
HLabel {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
import "../Base"
|
||||
|
||||
|
@ -20,12 +21,14 @@ BoxPopup {
|
|||
property string traceback: ""
|
||||
|
||||
|
||||
HScrollableTextArea {
|
||||
text: [message, traceback].join("\n\n") || qsTr("No info available")
|
||||
area.readOnly: true
|
||||
area.font.family: theme.fontFamily.mono
|
||||
|
||||
ScrollView {
|
||||
Layout.fillWidth: true
|
||||
|
||||
HTextArea {
|
||||
text: [message, traceback].join("\n\n") || qsTr("No info available")
|
||||
readOnly: true
|
||||
font.family: theme.fontFamily.mono
|
||||
}
|
||||
}
|
||||
|
||||
HCheckBox {
|
||||
|
|
Loading…
Reference in New Issue
Block a user