From 37fddaee5c0f31302e3acb377116731192e14f6b Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Mon, 22 Apr 2019 23:23:34 +0200 Subject: [PATCH] Limit draggable component to the main window. --- cura/CuraApplication.py | 10 ++++++++++ resources/qml/ExpandableComponent.qml | 12 +++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 9dd1168135..224ad81c32 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -1782,3 +1782,13 @@ class CuraApplication(QtApplication): # Only show the what's new dialog if there's no machine and we have just upgraded show_whatsnew_only = has_active_machine and has_app_just_upgraded return show_whatsnew_only + + @pyqtSlot(result = int) + def appWidth(self) -> int: + main_window = cast(UM.Qt.Bindings.MainWindow, QtApplication.getInstance().getMainWindow()) + return main_window.width() + + @pyqtSlot(result = int) + def appHeight(self) -> int: + main_window = cast(UM.Qt.Bindings.MainWindow, QtApplication.getInstance().getMainWindow()) + return main_window.height() diff --git a/resources/qml/ExpandableComponent.qml b/resources/qml/ExpandableComponent.qml index 595fe779b8..662dd1d6c4 100644 --- a/resources/qml/ExpandableComponent.qml +++ b/resources/qml/ExpandableComponent.qml @@ -245,10 +245,16 @@ Item onPositionChanged: { var delta = Qt.point(mouse.x - clickPos.x, mouse.y - clickPos.y); - if (delta.x != 0 || delta.y != 0) + if (delta.x !== 0 || delta.y !== 0) { - contentContainer.x += delta.x; - contentContainer.y += delta.y; + var minPt = base.mapFromItem(null, 0, 0); + var maxPt = base.mapFromItem(null, + CuraApplication.appWidth() - contentContainer.width, + CuraApplication.appHeight() - contentContainer.height); + var initialY = background.height + base.shadowOffset + base.contentSpacingY; + + contentContainer.x = Math.min(maxPt.x, Math.max(minPt.x, contentContainer.x + delta.x)); + contentContainer.y = Math.min(maxPt.y, Math.max(initialY, contentContainer.y + delta.y)); } } }