Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorj.delarago <joeydelarago@gmail.com>2022-04-26 13:02:43 +0300
committerj.delarago <joeydelarago@gmail.com>2022-04-26 13:02:43 +0300
commit45642486fa647863ba1161dcfa96fdfbd9494459 (patch)
tree65b8c684773943be39bb396d424fb39a8f367739
parent698adc45db3b9b20b5dcb1c8fa0dc6bea7f43c11 (diff)
Fix popup going off the bottom of the screen by having popup push up instead of down when they are below halfway down the list.CURA-9185_material_menu_cut_off
CURA-9185
-rw-r--r--resources/qml/Menus/MaterialBrandMenu.qml29
1 files changed, 26 insertions, 3 deletions
diff --git a/resources/qml/Menus/MaterialBrandMenu.qml b/resources/qml/Menus/MaterialBrandMenu.qml
index 04d780b5c3..e256e75904 100644
--- a/resources/qml/Menus/MaterialBrandMenu.qml
+++ b/resources/qml/Menus/MaterialBrandMenu.qml
@@ -87,11 +87,25 @@ Cura.MenuItem
Popup
{
id: menuPopup
- x: parent.width - UM.Theme.getSize("default_lining").width
- y: -UM.Theme.getSize("default_lining").width
width: materialTypesList.width + padding * 2
height: materialTypesList.height + padding * 2
+ property var flipped: false
+
+ x: parent.width - UM.Theme.getSize("default_lining").width
+ y: {
+ // Checks if popup is more than halfway down the screen AND further than 400 down (this avoids popup going off the top of screen)
+ // If it is then the popup will push up instead of down
+ // This fixes the popups appearing bellow the bottom of the screen.
+
+ if (materialBrandMenu.parent.height / 2 < parent.y && parent.y > 400) {
+ flipped = true
+ return -UM.Theme.getSize("default_lining").width - height + UM.Theme.getSize("menu").height
+ }
+ flipped = false
+ return -UM.Theme.getSize("default_lining").width
+ }
+
padding: background.border.width
// Nasty hack to ensure that we can keep track if the popup contains the mouse.
// Since we also want a hover for the sub items (and these events are sent async)
@@ -128,11 +142,14 @@ Cura.MenuItem
//With a custom MouseArea, we can prevent the events from being accepted.
delegate: Rectangle
{
+ id: brandMaterialBase
height: UM.Theme.getSize("menu").height
width: UM.Theme.getSize("menu").width
color: materialTypeButton.containsMouse ? UM.Theme.getColor("background_2") : UM.Theme.getColor("background_1")
+ property var isFlipped: menuPopup.flipped
+
RowLayout
{
spacing: 0
@@ -225,7 +242,13 @@ Cura.MenuItem
width: materialColorsList.width + padding * 2
height: materialColorsList.height + padding * 2
x: parent.width
- y: -UM.Theme.getSize("default_lining").width
+ y: {
+ // If flipped the popup should push up rather than down from the parent
+ if (brandMaterialBase.isFlipped) {
+ return -height + UM.Theme.getSize("menu").height + UM.Theme.getSize("default_lining").width
+ }
+ return -UM.Theme.getSize("default_lining").width
+ }
property int itemHovered: 0
padding: background.border.width