plasma-framework/tests/dialog_resizeWithParent.qml
Marco Martin afe0524fa7 queue change of minimum/maximum size
the layout size hints can change all together, in any order possible.
the only way to have a deterministic behavior is to compress them
and do the sync of the size all at once.
also being sure to do a single adjustGeometry (one X call) instead of
separate setWidth/setHeight

a test for the issue is dialog_resizeWithParent.qml

BUG:339478
Change-Id: Ia7c3c55e40ff89971beb734dcd205df05bfba687
2014-09-30 16:34:21 +02:00

77 lines
2.4 KiB
QML

/*
* Copyright 2014 Vishesh Handa <vhanda@kde.org>
* Copyright 2014 Marco Martin <mart@kde.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2,
* or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import QtQuick 2.0
import QtQuick.Controls 1.1 as Controls
import QtQuick.Layouts 1.1
import org.kde.plasma.core 2.0 as PlasmaCore
Item {
id: root
Layout.minimumWidth: 300
Layout.minimumHeight: 300
Controls.Button {
id: button
anchors.centerIn: parent
text: "Show Dialog"
onClicked: {
//changing the minimumHeight of the mainItem of an hidden dialog
//shouldn't
rect.Layout.minimumHeight = rect.Layout.minimumHeight + 1
rect.Layout.minimumWidth = rect.Layout.minimumWidth + 1
subDialog.visible = !subDialog.visible
}
}
PlasmaCore.Dialog {
id: subDialog
location: PlasmaCore.Types.Floating
visualParent: button
visible: false
Rectangle {
id: rect
Layout.minimumWidth: 300
Layout.minimumHeight: 300
Layout.maximumHeight: 500
property int fixedHeight: 500
width: 500
height: fixedHeight
color: "red"
border {
color: "blue"
width: 3
}
Controls.Button {
text: "Resize"
anchors.centerIn: parent
onClicked: {
rect.fixedHeight = rect.Layout.minimumHeight = rect.Layout.maximumHeight = (rect.fixedHeight == 500 ? rect.fixedHeight = 100 : rect.fixedHeight = 500)
//subDialog.height = (subDialog.height == 500 ? subDialog.height = 100 : subDialog.height = 500)
}
}
}
}
}