Warning, /plasma/kwin/src/plugins/tileseditor/qml/ResizeCorner.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 Qt5Compat.GraphicalEffects
0009 import QtQuick.Layouts
0010 import org.kde.kwin as KWinComponents
0011 import org.kde.kwin.private.effects
0012 import org.kde.kirigami 2.20 as Kirigami
0013
0014 Rectangle {
0015 id: handle
0016
0017 required property QtObject tile
0018
0019 required property int corner
0020
0021 z: 2
0022
0023 implicitWidth: Kirigami.Units.gridUnit
0024 implicitHeight: Kirigami.Units.gridUnit
0025
0026 radius: 3
0027 color: Kirigami.Theme.highlightColor
0028 opacity: hoverHandler.hovered || dragHandler.active ? 0.4 : 0
0029 visible: tile &&
0030 (tile.layoutDirection === KWinComponents.Tile.Floating ||
0031 (corner === Qt.TopLeftCorner || corner === Qt.BottomLeftCorner ? tile.relativeGeometry.x > 0 : true) &&
0032 (corner === Qt.TopLeftCorner || corner === Qt.TopRightCorner ? tile.relativeGeometry.y > 0 : true) &&
0033 (corner === Qt.TopRightCorner || corner === Qt.BottomRightCorner ? tile.relativeGeometry.x + tile.relativeGeometry.width < 1 : true) &&
0034 (corner === Qt.BottomLeftCorner || corner === Qt.BottomRightCorner ? tile.relativeGeometry.y + tile.relativeGeometry.height < 1 : true))
0035
0036 HoverHandler {
0037 id: hoverHandler
0038 grabPermissions: PointerHandler.TakeOverForbidden | PointerHandler.CanTakeOverFromAnything
0039 cursorShape: {
0040 switch (handle.corner) {
0041 case Qt.TopLeftCorner:
0042 return Qt.SizeFDiagCursor;
0043 case Qt.TopRightCorner:
0044 return Qt.SizeBDiagCursor;
0045 case Qt.BottomLeftCorner:
0046 return Qt.SizeBDiagCursor;
0047 case Qt.BottomRightCorner:
0048 return Qt.SizeFDiagCursor;
0049 }
0050 }
0051 }
0052
0053 DragHandler {
0054 id: dragHandler
0055 target: null
0056 property point oldPoint: Qt.point(0, 0)
0057 property point dragPoint: centroid.scenePosition
0058 dragThreshold: 0
0059 grabPermissions: PointerHandler.TakeOverForbidden | PointerHandler.CanTakeOverFromAnything
0060 onActiveChanged: {
0061 if (active) {
0062 oldPoint = dragPoint;
0063 }
0064 }
0065 onDragPointChanged: {
0066 if (!active) {
0067 return;
0068 }
0069 switch (handle.corner) {
0070 case Qt.TopLeftCorner:
0071 tile.resizeByPixels(dragPoint.x - oldPoint.x, Qt.LeftEdge);
0072 tile.resizeByPixels(dragPoint.y - oldPoint.y, Qt.TopEdge);
0073 break;
0074 case Qt.TopRightCorner:
0075 tile.resizeByPixels(dragPoint.x - oldPoint.x, Qt.RightEdge);
0076 tile.resizeByPixels(dragPoint.y - oldPoint.y, Qt.TopEdge);
0077 break;
0078 case Qt.BottomLeftCorner:
0079 tile.resizeByPixels(dragPoint.x - oldPoint.x, Qt.LeftEdge);
0080 tile.resizeByPixels(dragPoint.y - oldPoint.y, Qt.BottomEdge);
0081 break;
0082 case Qt.BottomRightCorner:
0083 tile.resizeByPixels(dragPoint.x - oldPoint.x, Qt.RightEdge);
0084 tile.resizeByPixels(dragPoint.y - oldPoint.y, Qt.BottomEdge);
0085 break;
0086 }
0087
0088 oldPoint = dragPoint;
0089 }
0090 }
0091 }