Revision control
Copy as Markdown
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtWayland.Compositor
import QtWayland.Compositor.QtShell
QtShellChrome {
id: chrome
property alias shellSurface: shellSurfaceItemId.shellSurface
//! [maximizedRect]
maximizedRect: Qt.rect(usableArea.x,
usableArea.y,
usableArea.width,
usableArea.height)
//! [maximizedRect]
//! [leftResizeHandle]
Rectangle {
id: leftResizeHandle
color: "gray"
width: visible ? 5 : 0
anchors.topMargin: 5
anchors.bottomMargin: 5
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
}
//! [leftResizeHandle]
Rectangle {
id: rightResizeHandle
color: "gray"
width: visible ? 5 : 0
anchors.topMargin: 5
anchors.bottomMargin: 5
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
}
Rectangle {
id: topResizeHandle
color: "gray"
height: visible ? 5 : 0
anchors.leftMargin: 5
anchors.rightMargin: 5
anchors.left: parent.left
anchors.top: parent.top
anchors.right: parent.right
}
Rectangle {
id: bottomResizeHandle
color: "gray"
height: visible ? 5 : 0
anchors.leftMargin: 5
anchors.rightMargin: 5
anchors.left: parent.left
anchors.bottom: parent.bottom
anchors.right: parent.right
}
Rectangle {
id: titleBar
anchors.top: topResizeHandle.bottom
anchors.left: leftResizeHandle.right
anchors.right: rightResizeHandle.left
height: visible ? xButton.height + 10 : 0
color: shellSurface.active ? "cornflowerblue" : "lightgray"
Text {
anchors.left: parent.left
anchors.right: rowLayout.left
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: xButton.height
text: shellSurface.windowTitle
fontSizeMode: Text.Fit
}
//! [buttons]
RowLayout {
id: rowLayout
anchors.right: parent.right
anchors.rightMargin: 5
ToolButton {
text: "-"
Layout.margins: 5
visible: (chrome.windowFlags & Qt.WindowMinimizeButtonHint) != 0
onClicked: {
chrome.toggleMinimized()
}
}
ToolButton {
text: "+"
Layout.margins: 5
visible: (chrome.windowFlags & Qt.WindowMaximizeButtonHint) != 0
onClicked: {
chrome.toggleMaximized()
}
}
ToolButton {
id: xButton
text: "X"
Layout.margins: 5
visible: (chrome.windowFlags & Qt.WindowCloseButtonHint) != 0
onClicked: shellSurface.sendClose()
}
}
//! [buttons]
}
Rectangle {
id: topLeftResizeHandle
color: "gray"
height: 5
width: 5
anchors.left: parent.left
anchors.top: parent.top
}
Rectangle {
id: topRightResizeHandle
color: "gray"
height: 5
width: 5
anchors.right: parent.right
anchors.top: parent.top
}
Rectangle {
id: bottomLeftResizeHandle
color: "gray"
height: 5
width: 5
anchors.left: parent.left
anchors.bottom: parent.bottom
}
Rectangle {
id: bottomRightResizeHandle
color: "gray"
height: 5
width: 5
anchors.right: parent.right
anchors.bottom: parent.bottom
}
//! [decorations]
leftResizeHandle: leftResizeHandle
rightResizeHandle: rightResizeHandle
topResizeHandle: topResizeHandle
bottomResizeHandle: bottomResizeHandle
bottomLeftResizeHandle: bottomLeftResizeHandle
bottomRightResizeHandle: bottomRightResizeHandle
topLeftResizeHandle: topLeftResizeHandle
topRightResizeHandle: topRightResizeHandle
titleBar: titleBar
//! [decorations]
//! [shellsurfaceitem]
ShellSurfaceItem {
id: shellSurfaceItemId
anchors.top: titleBar.bottom
anchors.bottom: bottomResizeHandle.top
anchors.left: leftResizeHandle.right
anchors.right: rightResizeHandle.left
moveItem: chrome
staysOnBottom: shellSurface.windowFlags & Qt.WindowStaysOnBottomHint
staysOnTop: !staysOnBottom && shellSurface.windowFlags & Qt.WindowStaysOnTopHint
}
shellSurfaceItem: shellSurfaceItemId
//! [shellsurfaceitem]
}