mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-13 19:35:56 +08:00
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
This commit is contained in:
parent
698adc45db
commit
45642486fa
@ -87,11 +87,25 @@ Cura.MenuItem
|
|||||||
Popup
|
Popup
|
||||||
{
|
{
|
||||||
id: menuPopup
|
id: menuPopup
|
||||||
x: parent.width - UM.Theme.getSize("default_lining").width
|
|
||||||
y: -UM.Theme.getSize("default_lining").width
|
|
||||||
width: materialTypesList.width + padding * 2
|
width: materialTypesList.width + padding * 2
|
||||||
height: materialTypesList.height + 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
|
padding: background.border.width
|
||||||
// Nasty hack to ensure that we can keep track if the popup contains the mouse.
|
// 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)
|
// 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.
|
//With a custom MouseArea, we can prevent the events from being accepted.
|
||||||
delegate: Rectangle
|
delegate: Rectangle
|
||||||
{
|
{
|
||||||
|
id: brandMaterialBase
|
||||||
height: UM.Theme.getSize("menu").height
|
height: UM.Theme.getSize("menu").height
|
||||||
width: UM.Theme.getSize("menu").width
|
width: UM.Theme.getSize("menu").width
|
||||||
|
|
||||||
color: materialTypeButton.containsMouse ? UM.Theme.getColor("background_2") : UM.Theme.getColor("background_1")
|
color: materialTypeButton.containsMouse ? UM.Theme.getColor("background_2") : UM.Theme.getColor("background_1")
|
||||||
|
|
||||||
|
property var isFlipped: menuPopup.flipped
|
||||||
|
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
spacing: 0
|
spacing: 0
|
||||||
@ -225,7 +242,13 @@ Cura.MenuItem
|
|||||||
width: materialColorsList.width + padding * 2
|
width: materialColorsList.width + padding * 2
|
||||||
height: materialColorsList.height + padding * 2
|
height: materialColorsList.height + padding * 2
|
||||||
x: parent.width
|
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
|
property int itemHovered: 0
|
||||||
padding: background.border.width
|
padding: background.border.width
|
||||||
|
Loading…
x
Reference in New Issue
Block a user