diff --git a/electrum/gui/qml/components/SwapDialog.qml b/electrum/gui/qml/components/SwapDialog.qml index f421924e0..094d692c2 100644 --- a/electrum/gui/qml/components/SwapDialog.qml +++ b/electrum/gui/qml/components/SwapDialog.qml @@ -159,8 +159,9 @@ ElDialog { id: swapslider Layout.topMargin: constants.paddingLarge Layout.bottomMargin: constants.paddingLarge - Layout.leftMargin: constants.paddingXXLarge - Layout.rightMargin: constants.paddingXXLarge + Layout.leftMargin: constants.paddingXXLarge + (parent.width - 2 * constants.paddingXXLarge) * swaphelper.leftVoid + Layout.rightMargin: constants.paddingXXLarge + (parent.width - 2 * constants.paddingXXLarge) * swaphelper.rightVoid + Layout.fillWidth: true from: swaphelper.rangeMin diff --git a/electrum/gui/qml/qeswaphelper.py b/electrum/gui/qml/qeswaphelper.py index 34282809d..ecaa442af 100644 --- a/electrum/gui/qml/qeswaphelper.py +++ b/electrum/gui/qml/qeswaphelper.py @@ -45,6 +45,9 @@ class QESwapHelper(AuthMixin, QObject): self._send_amount = 0 self._receive_amount = 0 + self._leftVoid = 0 + self._rightVoid = 0 + walletChanged = pyqtSignal() @pyqtProperty(QEWallet, notify=walletChanged) def wallet(self): @@ -91,6 +94,28 @@ class QESwapHelper(AuthMixin, QObject): self._rangeMax = rangeMax self.rangeMaxChanged.emit() + leftVoidChanged = pyqtSignal() + @pyqtProperty(float, notify=leftVoidChanged) + def leftVoid(self): + return self._leftVoid + + @leftVoid.setter + def leftVoid(self, leftVoid): + if self._leftVoid != leftVoid: + self._leftVoid = leftVoid + self.leftVoidChanged.emit() + + rightVoidChanged = pyqtSignal() + @pyqtProperty(float, notify=rightVoidChanged) + def rightVoid(self): + return self._rightVoid + + @rightVoid.setter + def rightVoid(self, rightVoid): + if self._rightVoid != rightVoid: + self._rightVoid = rightVoid + self.rightVoidChanged.emit() + validChanged = pyqtSignal() @pyqtProperty(bool, notify=validChanged) def valid(self): @@ -215,6 +240,16 @@ class QESwapHelper(AuthMixin, QObject): self._logger.debug(f'Slider range {-reverse} - {forward}') self.rangeMin = -reverse self.rangeMax = forward + # percentage of void, right or left + if reverse < forward: + self.leftVoid = 0.5 * (forward - reverse) / forward + self.rightVoid = 0 + elif reverse > forward: + self.leftVoid = 0 + self.rightVoid = - 0.5 * (forward - reverse) / reverse + else: + self.leftVoid = 0 + self.rightVoid = 0 self.swap_slider_moved()