Warning, /plasma/kwin/src/plugins/tileseditor/qml/ResizeHandle.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2022 Marco Martin <mart@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick
0008 import org.kde.kwin as KWinComponents
0009 import org.kde.kwin.private.effects
0010 import org.kde.kirigami 2.20 as Kirigami
0011 
0012 Rectangle {
0013     id: handle
0014 
0015     required property QtObject tile
0016 
0017     required property int edge
0018     readonly property int orientation: edge === Qt.LeftEdge || edge === Qt.RightEdge ? Qt.Horizontal : Qt.Vertical
0019     readonly property bool valid: tile !== null && tile.parent !== null && (tile.layoutDirection === KWinComponents.Tile.Floating
0020         || (orientation === Qt.Horizontal && tile.parent.layoutDirection === KWinComponents.Tile.Horizontal)
0021         || (orientation === Qt.Vertical && tile.parent.layoutDirection === KWinComponents.Tile.Vertical))
0022 
0023     z: 2
0024 
0025     implicitWidth: Kirigami.Units.smallSpacing * 2
0026     implicitHeight: Kirigami.Units.smallSpacing * 2
0027 
0028     radius: 3
0029     color: Kirigami.Theme.highlightColor
0030     opacity: hoverHandler.hovered || dragHandler.active ? 0.4 : 0
0031     visible: valid && (tile.layoutDirection === KWinComponents.Tile.Floating || tile.positionInLayout > 0)
0032 
0033     HoverHandler {
0034         id: hoverHandler
0035         cursorShape: orientation == Qt.Horizontal ? Qt.SizeHorCursor : Qt.SizeVerCursor
0036     }
0037 
0038     DragHandler {
0039         id: dragHandler
0040         target: null
0041         property point oldPoint: Qt.point(0, 0)
0042         property point dragPoint: centroid.scenePosition
0043         dragThreshold: 0
0044         onActiveChanged: {
0045             if (active) {
0046                 oldPoint = dragPoint;
0047             }
0048         }
0049         onDragPointChanged: {
0050             if (!active) {
0051                 return;
0052             }
0053             switch (handle.edge) {
0054             case Qt.LeftEdge:
0055             case Qt.RightEdge:
0056                 tile.resizeByPixels(dragPoint.x - oldPoint.x, handle.edge);
0057                 break;
0058             case Qt.TopEdge:
0059             case Qt.BottomEdge:
0060                 tile.resizeByPixels(dragPoint.y - oldPoint.y, handle.edge);
0061                 break;
0062             }
0063 
0064             oldPoint = dragPoint;
0065         }
0066     }
0067 }