Merge pull request #488 from Nheko-Reborn/scroll-view-thingy

Use Scrollview again
This commit is contained in:
DeepBlueV7.X 2021-02-22 22:14:31 +00:00 committed by GitHub
commit 736ba5e2e8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,14 +1,16 @@
import "./voip" import "./voip"
import QtQuick 2.9 import QtQuick 2.12
import QtQuick.Controls 2.3 import QtQuick.Controls 2.3
import QtQuick.Layouts 1.2 import QtQuick.Layouts 1.2
import QtQuick.Window 2.2 import QtQuick.Window 2.2
import im.nheko 1.0 import im.nheko 1.0
Rectangle { Rectangle {
id: inputBar
color: colors.window color: colors.window
Layout.fillWidth: true Layout.fillWidth: true
Layout.preferredHeight: textInput.height + 16 Layout.preferredHeight: row.implicitHeight
Layout.minimumHeight: 40 Layout.minimumHeight: 40
Component { Component {
@ -20,11 +22,9 @@ Rectangle {
} }
RowLayout { RowLayout {
id: inputBar id: row
anchors.fill: parent anchors.fill: parent
anchors.margins: 8
spacing: 16
ImageButton { ImageButton {
visible: CallManager.callsSupported visible: CallManager.callsSupported
@ -36,7 +36,7 @@ Rectangle {
image: CallManager.isOnCall ? ":/icons/icons/ui/end-call.png" : ":/icons/icons/ui/place-call.png" image: CallManager.isOnCall ? ":/icons/icons/ui/end-call.png" : ":/icons/icons/ui/place-call.png"
ToolTip.visible: hovered ToolTip.visible: hovered
ToolTip.text: CallManager.isOnCall ? qsTr("Hang up") : qsTr("Place a call") ToolTip.text: CallManager.isOnCall ? qsTr("Hang up") : qsTr("Place a call")
Layout.leftMargin: 8 Layout.margins: 8
onClicked: { onClicked: {
if (TimelineManager.timeline) { if (TimelineManager.timeline) {
if (CallManager.haveCallInvite) { if (CallManager.haveCallInvite) {
@ -58,7 +58,7 @@ Rectangle {
width: 22 width: 22
height: 22 height: 22
image: ":/icons/icons/ui/paper-clip-outline.png" image: ":/icons/icons/ui/paper-clip-outline.png"
Layout.leftMargin: CallManager.callsSupported ? 0 : 8 Layout.margins: 8
onClicked: TimelineManager.timeline.input.openFileSelection() onClicked: TimelineManager.timeline.input.openFileSelection()
ToolTip.visible: hovered ToolTip.visible: hovered
ToolTip.text: qsTr("Send a file") ToolTip.text: qsTr("Send a file")
@ -77,31 +77,13 @@ Rectangle {
} }
Flickable { ScrollView {
id: textInput id: textInput
function ensureVisible(r) { Layout.alignment: Qt.AlignBottom // | Qt.AlignHCenter
if (contentX >= r.x)
contentX = r.x;
else if (contentX + width <= r.x + r.width)
contentX = r.x + r.width - width;
if (contentY >= r.y)
contentY = r.y;
else if (contentY + height <= r.y + r.height)
contentY = r.y + r.height - height;
}
Layout.alignment: Qt.AlignBottom
Layout.maximumHeight: Window.height / 4 Layout.maximumHeight: Window.height / 4
Layout.minimumHeight: Settings.fontSize Layout.minimumHeight: Settings.fontSize
Layout.fillWidth: true implicitWidth: inputBar.width - 4 * (22 + 16) - 24
clip: true
boundsBehavior: Flickable.StopAtBounds
flickableDirection: Flickable.VerticalFlick
implicitWidth: messageInput.width
implicitHeight: messageInput.height
contentWidth: messageInput.width
contentHeight: messageInput.height
TextArea { TextArea {
id: messageInput id: messageInput
@ -122,18 +104,11 @@ Rectangle {
selectByMouse: true selectByMouse: true
placeholderText: qsTr("Write a message...") placeholderText: qsTr("Write a message...")
//placeholderTextColor: colors.buttonText placeholderTextColor: colors.buttonText
// only set the anchors on Qt 5.12 or higher
// see https://doc.qt.io/qt-5/qml-qtquick-controls2-popup.html#anchors.centerIn-prop
Component.onCompleted: {
if (placeholderTextColor !== undefined)
placeholderTextColor = colors.buttonText;
}
color: colors.text color: colors.text
width: textInput.width width: textInput.width
wrapMode: TextEdit.Wrap wrapMode: TextEdit.Wrap
padding: 0 padding: 8
focus: true focus: true
onTextChanged: { onTextChanged: {
if (TimelineManager.timeline) if (TimelineManager.timeline)
@ -141,7 +116,6 @@ Rectangle {
forceActiveFocus(); forceActiveFocus();
} }
onCursorRectangleChanged: textInput.ensureVisible(cursorRectangle)
onCursorPositionChanged: { onCursorPositionChanged: {
if (!TimelineManager.timeline) if (!TimelineManager.timeline)
return ; return ;
@ -296,15 +270,13 @@ Rectangle {
} }
ScrollBar.vertical: ScrollBar {
}
} }
ImageButton { ImageButton {
id: emojiButton id: emojiButton
Layout.alignment: Qt.AlignRight | Qt.AlignBottom Layout.alignment: Qt.AlignRight | Qt.AlignBottom
Layout.margins: 8
hoverEnabled: true hoverEnabled: true
width: 22 width: 22
height: 22 height: 22
@ -319,6 +291,7 @@ Rectangle {
ImageButton { ImageButton {
Layout.alignment: Qt.AlignRight | Qt.AlignBottom Layout.alignment: Qt.AlignRight | Qt.AlignBottom
Layout.margins: 8
hoverEnabled: true hoverEnabled: true
width: 22 width: 22
height: 22 height: 22