qml: fix keyboard exclusion zone
turns out that Qt.inputMethod.keyboardRectangle.height is not suitable for calculating the exact keyboard dimensions in Qt coordinates. Instead, use Qt.inputMethod.keyboardRectangle.y transformed to Qt coordinates using Screen.devicePixelRatio Note: Qt.inputMethod.keyboardRectangle stop being updated after exiting FLAG_SECURE state (e.g. in seed or master key entry pages)
This commit is contained in:
@@ -35,7 +35,7 @@ Dialog {
|
|||||||
reject()
|
reject()
|
||||||
}
|
}
|
||||||
|
|
||||||
parent: resizeWithKeyboard ? Overlay.overlay.children[0] : Overlay.overlay
|
parent: resizeWithKeyboard ? app.keyboardFreeZone : Overlay.overlay
|
||||||
modal: true
|
modal: true
|
||||||
Overlay.modal: Rectangle {
|
Overlay.modal: Rectangle {
|
||||||
color: "#aa000000"
|
color: "#aa000000"
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ ApplicationWindow
|
|||||||
Constants { id: appconstants }
|
Constants { id: appconstants }
|
||||||
|
|
||||||
property alias stack: mainStackView
|
property alias stack: mainStackView
|
||||||
|
property alias keyboardFreeZone: _keyboardFreeZone
|
||||||
|
|
||||||
property variant activeDialogs: []
|
property variant activeDialogs: []
|
||||||
|
|
||||||
@@ -210,15 +211,13 @@ ApplicationWindow
|
|||||||
}
|
}
|
||||||
|
|
||||||
// hack to force relayout of toolbar
|
// hack to force relayout of toolbar
|
||||||
// since qt6 watchOnlyIndicator.visible doesn't trigger relayout(?)
|
// since qt6 LightningNetworkStatusIndicator.visible doesn't trigger relayout(?)
|
||||||
Item {
|
Item {
|
||||||
Layout.preferredHeight: 1
|
Layout.preferredHeight: 1
|
||||||
Layout.topMargin: -1
|
Layout.topMargin: -1
|
||||||
Layout.preferredWidth: watchOnlyIndicator.visible
|
Layout.preferredWidth: lnnsi.visible
|
||||||
? 1
|
? 1
|
||||||
: lnnsi.visible
|
: 2
|
||||||
? 2
|
|
||||||
: 3
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -226,7 +225,7 @@ ApplicationWindow
|
|||||||
StackView {
|
StackView {
|
||||||
id: mainStackView
|
id: mainStackView
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: keyboardFreeZone.height - header.height
|
height: _keyboardFreeZone.height - header.height
|
||||||
initialItem: Component {
|
initialItem: Component {
|
||||||
WalletMainView {}
|
WalletMainView {}
|
||||||
}
|
}
|
||||||
@@ -270,7 +269,7 @@ ApplicationWindow
|
|||||||
}
|
}
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: keyboardFreeZone
|
id: _keyboardFreeZone
|
||||||
// Item as first child in Overlay that adjusts its size to the available
|
// Item as first child in Overlay that adjusts its size to the available
|
||||||
// screen space minus the virtual keyboard (e.g. to center dialogs in)
|
// screen space minus the virtual keyboard (e.g. to center dialogs in)
|
||||||
// see also ElDialog.resizeWithKeyboard property
|
// see also ElDialog.resizeWithKeyboard property
|
||||||
@@ -278,39 +277,42 @@ ApplicationWindow
|
|||||||
width: parent.width
|
width: parent.width
|
||||||
height: parent.height
|
height: parent.height
|
||||||
|
|
||||||
states: State {
|
states: [
|
||||||
name: "visible"
|
State {
|
||||||
when: Qt.inputMethod.visible
|
name: 'visible'
|
||||||
PropertyChanges {
|
when: Qt.inputMethod.keyboardRectangle.y
|
||||||
target: keyboardFreeZone
|
PropertyChanges {
|
||||||
height: keyboardFreeZone.parent.height - Qt.inputMethod.keyboardRectangle.height / Screen.devicePixelRatio
|
target: _keyboardFreeZone
|
||||||
|
height: _keyboardFreeZone.parent.height - (Screen.desktopAvailableHeight - (Qt.inputMethod.keyboardRectangle.y/Screen.devicePixelRatio))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
]
|
||||||
|
|
||||||
transitions: [
|
transitions: [
|
||||||
Transition {
|
Transition {
|
||||||
from: ''
|
from: ''
|
||||||
to: 'visible'
|
to: 'visible'
|
||||||
ParallelAnimation {
|
NumberAnimation {
|
||||||
NumberAnimation {
|
properties: 'height'
|
||||||
properties: "height"
|
duration: 100
|
||||||
duration: 250
|
easing.type: Easing.OutQuad
|
||||||
easing.type: Easing.OutQuad
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Transition {
|
Transition {
|
||||||
from: 'visible'
|
from: 'visible'
|
||||||
to: ''
|
to: ''
|
||||||
ParallelAnimation {
|
SequentialAnimation {
|
||||||
|
PauseAnimation {
|
||||||
|
duration: 200
|
||||||
|
}
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
properties: "height"
|
properties: 'height'
|
||||||
duration: 50
|
duration: 50
|
||||||
easing.type: Easing.OutQuad
|
easing.type: Easing.OutQuad
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
property alias newWalletWizard: _newWalletWizard
|
property alias newWalletWizard: _newWalletWizard
|
||||||
|
|||||||
Reference in New Issue
Block a user