Set min.-height and 'stage-awareness' for print-setup-UI. [CURA-6478]

This commit is contained in:
Remco Burema 2019-04-25 15:37:52 +02:00
parent 194f01f840
commit bd262ca6c4
3 changed files with 28 additions and 4 deletions

View file

@ -79,7 +79,10 @@ Item
property int shadowOffset: 2
// Prefix used for the dragged position preferences. Preferences not used if empty. Don't translate!
property var dragPreferencesNamePrefix: ""
property string dragPreferencesNamePrefix: ""
// Whether this component can remain when switchin from one stage to the other (for ex. 'Prepare' to 'Preview')
property bool isMultiStage: false
function toggleContent()
{
@ -325,6 +328,18 @@ Item
updateDragPosition();
}
Connections
{
target: UM.Controller
onActiveStageChanged:
{
if (isMultiStage)
{
updateDragPosition();
}
}
}
// DO NOT MOVE UP IN THE CODE: This connection has to be here, after the definition of the content item.
// Apparently the order in which these are handled matters and so the height is correctly updated if this is here.
Connections

View file

@ -12,6 +12,7 @@ Cura.ExpandableComponent
id: printSetupSelector
dragPreferencesNamePrefix: "view/settings"
isMultiStage: true
property bool preSlicedData: PrintInformation.preSliced

View file

@ -14,6 +14,8 @@ Item
{
id: content
property int absoluteMinimumHeight: 200 * screenScaleFactor
width: UM.Theme.getSize("print_setup_widget").width - 2 * UM.Theme.getSize("default_margin").width
height: contents.height + buttonRow.height
@ -86,8 +88,14 @@ Item
Math.min
(
UM.Preferences.getValue("view/settings_list_height"),
base.height - (customPrintSetup.mapToItem(null, 0, 0).y + buttonRow.height + UM.Theme.getSize("default_margin").height)
Math.max
(
absoluteMinimumHeight,
base.height - (customPrintSetup.mapToItem(null, 0, 0).y + buttonRow.height + UM.Theme.getSize("default_margin").height)
)
);
updateDragPosition();
}
}
visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom
@ -175,9 +183,9 @@ Item
// position of mouse relative to dropdown align vertical centre of mouse area to cursor
// v------------------------------v v------------v
var h = mouseY + buttonRow.y + content.y - height / 2 | 0;
if(h < 200 * screenScaleFactor) //Enforce a minimum size.
if(h < absoluteMinimumHeight) //Enforce a minimum size.
{
h = 200 * screenScaleFactor;
h = absoluteMinimumHeight;
}
//Absolute mouse Y position in the window, to prevent it from going outside the window.