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
|
- Catch server 5xx errors when sending message and retry
|
||||||
|
|
||||||
- Popups and room settings can't be scrolled when not enough height to show all
|
- 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
|
- 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
|
- 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
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
|
||||||
import QtQuick 2.12
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
import QtQuick.Layouts 1.12
|
import QtQuick.Layouts 1.12
|
||||||
import "../Base"
|
import "../Base"
|
||||||
|
|
||||||
|
@ -12,7 +13,7 @@ BoxPopup {
|
||||||
okText: qsTr("Invite")
|
okText: qsTr("Invite")
|
||||||
okEnabled: invitingAllowed && Boolean(inviteArea.text.trim())
|
okEnabled: invitingAllowed && Boolean(inviteArea.text.trim())
|
||||||
|
|
||||||
onOpened: inviteArea.area.forceActiveFocus()
|
onOpened: inviteArea.forceActiveFocus()
|
||||||
|
|
||||||
onInvitingAllowedChanged:
|
onInvitingAllowedChanged:
|
||||||
if (! invitingAllowed && inviteFuture) inviteFuture.cancel()
|
if (! invitingAllowed && inviteFuture) inviteFuture.cancel()
|
||||||
|
@ -60,14 +61,16 @@ BoxPopup {
|
||||||
property var failedInvites: []
|
property var failedInvites: []
|
||||||
|
|
||||||
|
|
||||||
HScrollableTextArea {
|
ScrollView {
|
||||||
id: inviteArea
|
|
||||||
focusItemOnTab: box.firstButton
|
|
||||||
area.placeholderText:
|
|
||||||
qsTr("User IDs (e.g. @bob:matrix.org @alice:localhost)")
|
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
|
HTextArea {
|
||||||
|
id: inviteArea
|
||||||
|
focusItemOnTab: box.firstButton
|
||||||
|
placeholderText:
|
||||||
|
qsTr("User IDs (e.g. @bob:matrix.org @alice:localhost)")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HLabel {
|
HLabel {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
|
|
||||||
import QtQuick 2.12
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
import QtQuick.Layouts 1.12
|
import QtQuick.Layouts 1.12
|
||||||
import "../Base"
|
import "../Base"
|
||||||
|
|
||||||
|
@ -20,12 +21,14 @@ BoxPopup {
|
||||||
property string traceback: ""
|
property string traceback: ""
|
||||||
|
|
||||||
|
|
||||||
HScrollableTextArea {
|
ScrollView {
|
||||||
text: [message, traceback].join("\n\n") || qsTr("No info available")
|
|
||||||
area.readOnly: true
|
|
||||||
area.font.family: theme.fontFamily.mono
|
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
HTextArea {
|
||||||
|
text: [message, traceback].join("\n\n") || qsTr("No info available")
|
||||||
|
readOnly: true
|
||||||
|
font.family: theme.fontFamily.mono
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HCheckBox {
|
HCheckBox {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user