Files
RedBear-OS/local/recipes/kde/kirigami/source/autotests/tst_overlaysheet.qml
T
2026-04-14 10:51:06 +01:00

145 lines
3.9 KiB
QML

/*
* SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import QtTest
import org.kde.kirigami as Kirigami
TestCase {
id: root
name: "OverlaySheetTest"
visible: true
when: windowShown
width: 500
height: 500
Component {
id: emptyComponent
Kirigami.OverlaySheet {}
}
Component {
id: itemContentComponent
Kirigami.OverlaySheet {
Rectangle {
implicitWidth: 100
implicitHeight: 200
}
}
}
Component {
id: viewContentWithImplicitSizeComponent
Kirigami.OverlaySheet {
ListView {
implicitWidth: 100
implicitHeight: 200
}
}
}
Component {
id: viewContentWithPreferredSizeComponent
Kirigami.OverlaySheet {
ListView {
Layout.preferredWidth: 100
Layout.preferredHeight: 200
}
}
}
Component {
id: itemContentWithMixedSizesComponent
Kirigami.OverlaySheet {
Rectangle {
implicitWidth: 100
implicitHeight: 200
Layout.preferredWidth: 300
Layout.preferredHeight: 400
}
}
}
Component {
id: viewContentWithMixedSizesComponent
Kirigami.OverlaySheet {
ListView {
implicitWidth: 100
implicitHeight: 200
Layout.preferredWidth: 300
Layout.preferredHeight: 400
}
}
}
function setupWarningsFilter() {
// no nullable property access errors are allowed
failOnWarning(/\bnull\b/);
}
// Note about implicit size comparison: we don't know how much space
// header+footer+paddings would take, but the sum should be no less than
// the implicit or preferred size given. And the difference between
// implicit and preferred size is big enough (200px) that it is unlikely
// to get an overlap.
function test_init() {
setupWarningsFilter();
{
const sheet = createTemporaryObject(emptyComponent, null);
verify(sheet);
verify(!sheet.parent);
}
{
const sheet = createTemporaryObject(emptyComponent, this);
verify(sheet);
compare(sheet.parent, this);
}
{
const sheet = createTemporaryObject(viewContentWithImplicitSizeComponent, this);
verify(sheet);
verify(sheet.implicitWidth >= 100);
verify(sheet.implicitHeight >= 200);
}
{
const sheet = createTemporaryObject(viewContentWithPreferredSizeComponent, this);
verify(sheet);
verify(sheet.implicitWidth >= 100);
verify(sheet.implicitHeight >= 200);
}
}
// Layout.preferred* takes precedence over implicit size
function test_sizeHintPrecedence() {
setupWarningsFilter();
{
// first, make sure 100x200 sheet's total implicit size is smaller than 300x400
const sheet = createTemporaryObject(itemContentComponent, this);
verify(sheet);
verify(sheet.implicitWidth >= 100 && sheet.implicitWidth < 300);
verify(sheet.implicitHeight >= 200 && sheet.implicitHeight < 400);
}
{
const sheet = createTemporaryObject(itemContentWithMixedSizesComponent, this);
verify(sheet);
verify(sheet.implicitWidth >= 300);
verify(sheet.implicitHeight >= 400);
}
{
const sheet = createTemporaryObject(viewContentWithMixedSizesComponent, this);
verify(sheet);
verify(sheet.implicitWidth >= 300);
verify(sheet.implicitHeight >= 400);
}
}
}