50 lines
1.6 KiB
QML
50 lines
1.6 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
|
// Qt-Security score:significant reason:default
|
|
|
|
import QtQuick
|
|
|
|
Canvas {
|
|
id: root
|
|
x: targetItem ? targetItem.x + leftOffset - frameSize : 0
|
|
y: targetItem ? targetItem.y + topOffset - frameSize : 0
|
|
// Stack on top of all siblings of the targetItem
|
|
z: 100
|
|
width: targetItem ? targetItem.width - leftOffset - rightOffset + (frameSize * 2) : 0
|
|
height: targetItem ? targetItem.height - topOffset - bottomOffset + (frameSize * 2) : 0
|
|
visible: targetItem && targetItem.visible
|
|
|
|
function moveToItem(item, margins, radius) {
|
|
if (!item) {
|
|
targetItem = null;
|
|
parent = null;
|
|
return;
|
|
}
|
|
parent = item.parent
|
|
targetItem = item
|
|
leftOffset = margins.left
|
|
rightOffset = margins.right
|
|
topOffset = margins.top
|
|
bottomOffset = margins.bottom
|
|
frameRadius = radius
|
|
}
|
|
|
|
property Item targetItem
|
|
property real leftOffset: 0
|
|
property real rightOffset: 0
|
|
property real topOffset: 0
|
|
property real bottomOffset: 0
|
|
property real frameOpacity: 0
|
|
property real frameSize: 0
|
|
property real frameRadius: 0
|
|
|
|
onPaint: {
|
|
let context = getContext("2d")
|
|
context.strokeStyle = Qt.rgba(0, 0, 0, 1)
|
|
context.setLineDash([1, 1])
|
|
context.beginPath()
|
|
context.roundedRect(0.5, 0.5, width - 1, height - 1, root.frameRadius, root.frameRadius)
|
|
context.stroke()
|
|
}
|
|
}
|