diff --git a/electrum/gui/qml/components/GenericShareDialog.qml b/electrum/gui/qml/components/GenericShareDialog.qml index df728ea1d..2b1357301 100644 --- a/electrum/gui/qml/components/GenericShareDialog.qml +++ b/electrum/gui/qml/components/GenericShareDialog.qml @@ -58,6 +58,8 @@ ElDialog { QRImage { id: qr + render: dialog.enter ? false : true + qrdata: dialog.text_qr ? dialog.text_qr : dialog.text Layout.alignment: Qt.AlignHCenter Layout.topMargin: constants.paddingSmall Layout.bottomMargin: constants.paddingSmall @@ -108,7 +110,13 @@ ElDialog { } } - Component.onCompleted: { - qr.qrdata = dialog.text_qr ? dialog.text_qr : dialog.text + Connections { + target: dialog.enter + function onRunningChanged() { + console.log('dialog open animation running changed: ' + dialog.enter.running) + if (!dialog.enter.running) { + qr.render = true + } + } } } diff --git a/electrum/gui/qml/components/RequestDialog.qml b/electrum/gui/qml/components/RequestDialog.qml index 4f55ca33c..4f3e6f935 100644 --- a/electrum/gui/qml/components/RequestDialog.qml +++ b/electrum/gui/qml/components/RequestDialog.qml @@ -17,6 +17,8 @@ ElDialog { property string _bip21uri property string _address + property bool _render_qr: false // delay qr rendering until dialog is shown + parent: Overlay.overlay modal: true standardButtons: Dialog.Close @@ -91,18 +93,21 @@ ElDialog { id: qri_bolt11 QRImage { qrdata: _bolt11 + render: _render_qr } } Component { id: qri_bip21uri QRImage { qrdata: _bip21uri + render: _render_qr } } Component { id: qri_address QRImage { qrdata: _address + render: _render_qr } } } @@ -298,4 +303,14 @@ ElDialog { wallet: Daemon.currentWallet key: dialog.key } + + // hack. delay qr rendering until dialog is shown + Connections { + target: dialog.enter + function onRunningChanged() { + if (!dialog.enter.running) { + dialog._render_qr = true + } + } + } } diff --git a/electrum/gui/qml/components/controls/QRImage.qml b/electrum/gui/qml/components/controls/QRImage.qml index 3318a4a19..638773aea 100644 --- a/electrum/gui/qml/components/controls/QRImage.qml +++ b/electrum/gui/qml/components/controls/QRImage.qml @@ -1,25 +1,40 @@ import QtQuick 2.6 -Image { +Item { + id: root property string qrdata + property bool render: true // init to false, then set true if render needs delay + property var qrprops: QRIP.getDimensions(qrdata) - source: qrdata ? 'image://qrgen/' + qrdata : '' + width: r.width + height: r.height Rectangle { - property var qrprops: QRIP.getDimensions(qrdata) + id: r + width: qrprops.modules * qrprops.box_size + height: width color: 'white' - x: (parent.width - width) / 2 - y: (parent.height - height) / 2 - width: qrprops.icon_modules * qrprops.box_size - height: qrprops.icon_modules * qrprops.box_size + } + + Image { + source: qrdata && render ? 'image://qrgen/' + qrdata : '' + + Rectangle { + visible: root.render + color: 'white' + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: qrprops.icon_modules * qrprops.box_size + height: qrprops.icon_modules * qrprops.box_size - Image { - source: '../../../icons/electrum.png' - x: 1 - y: 1 - width: parent.width - 2 - height: parent.height - 2 - scale: 0.9 + Image { + source: '../../../icons/electrum.png' + x: 1 + y: 1 + width: parent.width - 2 + height: parent.height - 2 + scale: 0.9 + } } } }