diff --git a/app/view/effects.cpp b/app/view/effects.cpp index dcc9411e4..52414adb9 100644 --- a/app/view/effects.cpp +++ b/app/view/effects.cpp @@ -305,7 +305,6 @@ void Effects::setInputMask(QRect area) } m_inputMask = area; - m_corona->wm()->setInputMask(m_view, area); emit inputMaskChanged(); @@ -427,14 +426,21 @@ void Effects::updateBackgroundCorners() void Effects::updateMask() { if (KWindowSystem::compositingActive()) { - if (m_view->behaveAsPlasmaPanel()) { - if (!m_view->visibility()->isHidden()) { - m_view->setMask(QRect()); - } else { - m_view->setMask(VisibilityManager::ISHIDDENMASK); + if (KWindowSystem::isPlatformX11()) { + if (m_view->mask() != VisibilityManager::ISHIDDENMASK ) { + m_view->setMask(QRect(0, 0, m_view->width(), m_view->height())); } } else { - m_view->setMask(maskCombinedRegion()); + //! this needs investigation under Wayland how to work correctly + if (m_view->behaveAsPlasmaPanel()) { + if (!m_view->visibility()->isHidden()) { + m_view->setMask(QRect()); + } else { + m_view->setMask(VisibilityManager::ISHIDDENMASK); + } + } else { + m_view->setMask(maskCombinedRegion()); + } } } else { QRegion fixedMask; diff --git a/app/view/visibilitymanager.cpp b/app/view/visibilitymanager.cpp index 778561ccb..d827ca491 100644 --- a/app/view/visibilitymanager.cpp +++ b/app/view/visibilitymanager.cpp @@ -647,7 +647,7 @@ void VisibilityManager::hide() return; } - m_lastMask = m_latteView->effects()->mask(); + // m_lastMask = m_latteView->effects()->mask(); m_latteView->effects()->setMask(ISHIDDENMASK); } @@ -657,8 +657,8 @@ void VisibilityManager::show() return; } - if (m_latteView->effects()->mask() == ISHIDDENMASK) { - m_latteView->effects()->setMask(m_lastMask); + if (m_latteView->mask() == ISHIDDENMASK) { + m_latteView->effects()->setMask(QRect(0, 0, m_latteView->width(), m_latteView->height())); } } diff --git a/containment/package/contents/ui/VisibilityManager.qml b/containment/package/contents/ui/VisibilityManager.qml index b220d39e3..96f3c6e37 100644 --- a/containment/package/contents/ui/VisibilityManager.qml +++ b/containment/package/contents/ui/VisibilityManager.qml @@ -60,7 +60,10 @@ Item{ property bool inScreenEdgeInternalWindowSliding: root.behaveAsDockWithMask && hideThickScreenGap readonly property bool inSliding: inSlidingIn || inSlidingOut || inRelocationHiding || inScreenEdgeInternalWindowSliding || inLocationAnimation - readonly property bool isSinkedEventEnabled: !(parabolic.isEnabled && (animations.needBothAxis.count>0 || animations.needLength.count>0)) && !inSlidingIn + readonly property bool isSinkedEventEnabled: !(parabolic.isEnabled && (animations.needBothAxis.count>0 || animations.needLength.count>0)) + && !inSlidingIn + && !inSlidingOut + && !latteView.visibility.isHidden property int length: root.isVertical ? Screen.height : Screen.width //screenGeometry.height : screenGeometry.width @@ -561,223 +564,14 @@ Item{ } } - var tempLength = root.isHorizontal ? width : height; - var tempThickness = root.isHorizontal ? height : width; - - if (LatteCore.WindowSystem.compositingActive) { - if (normalState) { - //console.log("entered normal state..."); - //count panel length - tempLength = background.totals.visualLength; - tempThickness = metrics.mask.thickness.normal; - - if (animations.needThickness.count > 0) { - tempThickness = LatteCore.WindowSystem.compositingActive ? metrics.mask.thickness.zoomed : metrics.mask.thickness.normal; - } - - if (maskIsFloating) { - tempThickness = tempThickness - maskFloatedGap; - } - - if (latteView.visibility.isHidden && !slidingAnimationAutoHiddenOut.running ) { - tempThickness = metrics.mask.thickness.hidden; - } - - //configure x,y based on plasmoid position and root.panelAlignment(Alignment) - if ((plasmoid.location === PlasmaCore.Types.BottomEdge) || (plasmoid.location === PlasmaCore.Types.TopEdge)) { - if (plasmoid.location === PlasmaCore.Types.BottomEdge) { - if (latteView.visibility.isHidden && latteView.visibility.supportsKWinEdges) { - localY = latteView.height + tempThickness; - } else if (maskIsFloating && !latteView.visibility.isHidden) { - localY = latteView.height - tempThickness - maskFloatedGap; - } else { - localY = latteView.height - tempThickness; - } - } else if (plasmoid.location === PlasmaCore.Types.TopEdge) { - if (latteView.visibility.isHidden && latteView.visibility.supportsKWinEdges) { - localY = -tempThickness; - } else if (maskIsFloating && !latteView.visibility.isHidden) { - localY = maskFloatedGap; - } else { - localY = 0; - } - } - - if (plasmoid.configuration.alignment === LatteCore.Types.Justify) { - localX = (latteView.width/2) - tempLength/2 + background.offset; - } else if (root.panelAlignment === LatteCore.Types.Left) { - localX = background.offset; - } else if (root.panelAlignment === LatteCore.Types.Center) { - localX = (latteView.width/2) - tempLength/2 + background.offset; - } else if (root.panelAlignment === LatteCore.Types.Right) { - localX = latteView.width - tempLength - background.offset; - } - } else if ((plasmoid.location === PlasmaCore.Types.LeftEdge) || (plasmoid.location === PlasmaCore.Types.RightEdge)){ - if (plasmoid.location === PlasmaCore.Types.LeftEdge) { - if (latteView.visibility.isHidden && latteView.visibility.supportsKWinEdges) { - localX = -tempThickness; - } else if (maskIsFloating && !latteView.visibility.isHidden) { - localX = maskFloatedGap; - } else { - localX = 0; - } - } else if (plasmoid.location === PlasmaCore.Types.RightEdge) { - if (latteView.visibility.isHidden && latteView.visibility.supportsKWinEdges) { - localX = latteView.width + tempThickness; - } else if (maskIsFloating && !latteView.visibility.isHidden) { - localX = latteView.width - tempThickness - maskFloatedGap; - } else { - localX = latteView.width - tempThickness; - } - } - - if (plasmoid.configuration.alignment === LatteCore.Types.Justify) { - localY = (latteView.height/2) - tempLength/2 + background.offset; - } else if (root.panelAlignment === LatteCore.Types.Top) { - localY = background.offset; - } else if (root.panelAlignment === LatteCore.Types.Center) { - localY = (latteView.height/2) - tempLength/2 + background.offset; - } else if (root.panelAlignment === LatteCore.Types.Bottom) { - localY = latteView.height - tempLength - background.offset; - } - } - - if (latteView.visibility.isHidden && latteView && latteView.visibility.mode === LatteCore.Types.SidebarOnDemand) { - //!hide completely - localX = -1; - localY = -1; - tempThickness = 1; - tempLength = 1; - } - } else { - // !inNormalState - - if(root.isHorizontal) - tempLength = Screen.width; //screenGeometry.width; - else - tempLength = Screen.height; //screenGeometry.height; - - //grow only on length and not thickness - var onlyLengthAnimation = (animations.needLength.count>0 && animations.needBothAxis.count === 0); - - if(onlyLengthAnimation) { - //this is used to fix a bug with shadow showing when the animation of edit mode - //is triggered - tempThickness = metrics.mask.thickness.normal; - - if (latteView.visibility.isHidden && !slidingAnimationAutoHiddenOut.running ) { - tempThickness = metrics.mask.thickness.hidden; - } else if (animations.needThickness.count > 0) { - tempThickness = metrics.mask.thickness.maxZoomed; - } - } else{ - //use all thickness space - if (latteView.visibility.isHidden && !slidingAnimationAutoHiddenOut.running ) { - tempThickness = LatteCore.WindowSystem.compositingActive ? metrics.mask.thickness.hidden : metrics.mask.thickness.maxNormalForItems; - } else { - tempThickness = !maskIsFloating ? metrics.mask.thickness.maxZoomed : metrics.mask.thickness.maxZoomed - maskFloatedGap; - } - } - - //configure the x,y position based on thickness - if(plasmoid.location === PlasmaCore.Types.RightEdge) { - localX = !maskIsFloating ? latteView.width - tempThickness : latteView.width - tempThickness - maskFloatedGap; - - if (localX < 0) { - tempThickness = tempThickness + localX; - localX = 0; - } - } else if (plasmoid.location === PlasmaCore.Types.BottomEdge) { - localY = !maskIsFloating ? latteView.height - tempThickness : latteView.height - tempThickness - maskFloatedGap; - - if (localY < 0) { - tempThickness = tempThickness + localY; - localY = 0; - } - } else if (plasmoid.location === PlasmaCore.Types.TopEdge) { - localY = !maskIsFloating ? 0 : maskFloatedGap; - } else if (plasmoid.location === PlasmaCore.Types.LeftEdge) { - localX = !maskIsFloating ? 0 : maskFloatedGap; - } - } - } // end of compositing calculations - - var maskArea = latteView.effects.mask; - - if (LatteCore.WindowSystem.compositingActive) { - var maskLength = maskArea.width; //in Horizontal - if (root.isVertical) { - maskLength = maskArea.height; - } - - var maskThickness = maskArea.height; //in Horizontal - if (root.isVertical) { - maskThickness = maskArea.width; + if (!LatteCore.WindowSystem.compositingActive) { + if (!latteView.visibility.isHidden) { + latteView.effects.mask = latteView.effects.rect; } } else { - //! no compositing case - var overridesHidden = latteView.visibility.isHidden && !latteView.visibility.supportsKWinEdges; - - if (!overridesHidden) { - localX = latteView.effects.rect.x; - localY = latteView.effects.rect.y; - } else { - if (plasmoid.location === PlasmaCore.Types.BottomEdge) { - localX = latteView.effects.rect.x; - localY = root.height - metrics.mask.thickness.hidden; - } else if (plasmoid.location === PlasmaCore.Types.TopEdge) { - localX = latteView.effects.rect.x; - localY = 0; - } else if (plasmoid.location === PlasmaCore.Types.LeftEdge) { - localX = 0; - localY = latteView.effects.rect.y; - } else if (plasmoid.location === PlasmaCore.Types.RightEdge) { - localX = root.width - metrics.mask.thickness.hidden; - localY = latteView.effects.rect.y; - } - } - - if (root.isHorizontal) { - tempThickness = overridesHidden ? metrics.mask.thickness.hidden : latteView.effects.rect.height; - tempLength = latteView.effects.rect.width; - } else { - tempThickness = overridesHidden ? metrics.mask.thickness.hidden : latteView.effects.rect.width; - tempLength = latteView.effects.rect.height; - } + latteView.effects.mask = Qt.rect(0, 0, root.width, root.height); } - - - // console.log("Not updating mask..."); - if( maskArea.x !== localX || maskArea.y !== localY - || maskLength !== tempLength || maskThickness !== tempThickness) { - - // console.log("Updating mask..."); - var newMaskArea = Qt.rect(-1,-1,0,0); - newMaskArea.x = localX; - newMaskArea.y = localY; - - if (isHorizontal) { - newMaskArea.width = tempLength; - newMaskArea.height = tempThickness; - } else { - newMaskArea.width = tempThickness; - newMaskArea.height = tempLength; - } - - if (!LatteCore.WindowSystem.compositingActive) { - latteView.effects.mask = newMaskArea; - } else { - if (latteView.behaveAsPlasmaPanel) { - latteView.effects.mask = Qt.rect(0,0,root.width,root.height); - } else { - latteView.effects.mask = newMaskArea; - } - } - } - - var validIconSize = (metrics.iconSize===metrics.maxIconSize || metrics.iconSize === autosize.iconSize); - //console.log("reached updating geometry ::: "+dock.maskArea); if(inPublishingState && !latteView.visibility.isHidden && normalState) { @@ -831,20 +625,16 @@ Item{ latteView.localGeometry = localGeometry; } - //! Input Mask if (LatteCore.WindowSystem.isPlatformX11) { //! This is not needed under wayland environment, mask() can be used instead - var animated = ( animations.needBothAxis.count>0 - || animations.needLength.count>0 - || animations.needThickness.count>0 - || latteView.visibility.isHidden); + var animated = (animations.needBothAxis.count>0); if (!LatteCore.WindowSystem.compositingActive || animated || latteView.behaveAsPlasmaPanel) { latteView.effects.inputMask = Qt.rect(0, 0, -1, -1); } else { - var inputThickness = metrics.mask.screenEdge + metrics.totals.thickness; + var inputThickness = latteView.visibility.isHidden ? metrics.mask.thickness.hidden : metrics.mask.screenEdge + metrics.totals.thickness; var inputGeometry = Qt.rect(0, 0, root.width, root.height); if (plasmoid.location === PlasmaCore.Types.TopEdge) { diff --git a/containment/package/contents/ui/background/MultiLayered.qml b/containment/package/contents/ui/background/MultiLayered.qml index 93537bbbc..2f6056be7 100644 --- a/containment/package/contents/ui/background/MultiLayered.qml +++ b/containment/package/contents/ui/background/MultiLayered.qml @@ -320,10 +320,10 @@ BackgroundProperties{ //! the compositor to provide blurriness and from Mask calculations to provide the View Local Geometry PlasmaCore.FrameSvgItem{ id: solidBackground - anchors.leftMargin: LatteCore.WindowSystem.compositingActive ? shadows.left : 0 - anchors.rightMargin: LatteCore.WindowSystem.compositingActive ? shadows.right : 0 - anchors.topMargin: LatteCore.WindowSystem.compositingActive ? shadows.top : 0 - anchors.bottomMargin: LatteCore.WindowSystem.compositingActive ? shadows.bottom : 0 + anchors.leftMargin: shadows.left + anchors.rightMargin: shadows.right + anchors.topMargin: shadows.top + anchors.bottomMargin: shadows.bottom anchors.fill: shadowsSvgItem imagePath: "widgets/panel-background" diff --git a/containment/package/contents/ui/debugger/DebugWindow.qml b/containment/package/contents/ui/debugger/DebugWindow.qml index f0e305389..c89961099 100644 --- a/containment/package/contents/ui/debugger/DebugWindow.qml +++ b/containment/package/contents/ui/debugger/DebugWindow.qml @@ -175,13 +175,13 @@ Window{ } Text{ - text: "Absolute Geometry"+space + text: "Input "+space } Text{ text: { - if (latteView && latteView.absoluteGeometry) { - return latteView.absoluteGeometry.x + ", " + latteView.absoluteGeometry.y + " " + latteView.absoluteGeometry.width + "x" + latteView.absoluteGeometry.height; + if (latteView && latteView.effects && latteView.effects.inputMask) { + return latteView.effects.inputMask.x +", "+ latteView.effects.inputMask.y+" "+latteView.effects.inputMask.width+"x"+latteView.effects.inputMask.height; } else { return "_,_ _x_"; } @@ -202,6 +202,21 @@ Window{ } } + Text{ + text: "Absolute Geometry"+space + } + + Text{ + text: { + if (latteView && latteView.absoluteGeometry) { + return latteView.absoluteGeometry.x + ", " + latteView.absoluteGeometry.y + " " + latteView.absoluteGeometry.width + "x" + latteView.absoluteGeometry.height; + } else { + return "_,_ _x_"; + } + } + } + + Text{ text: "Draw Effects"+space } diff --git a/containment/package/contents/ui/main.qml b/containment/package/contents/ui/main.qml index da6f782e6..e965bd4d2 100644 --- a/containment/package/contents/ui/main.qml +++ b/containment/package/contents/ui/main.qml @@ -1557,8 +1557,9 @@ Item { sourceComponent: Rectangle{ x: latteView.localGeometry.x y: latteView.localGeometry.y - width: latteView.localGeometry.width - height: latteView.localGeometry.height + //! when view is resized there is a chance that geometry is faulty stacked in old values + width: Math.min(latteView.localGeometry.width, root.width) //! fixes updating + height: Math.min(latteView.localGeometry.height, root.height) //! fixes updating color: "blue" border.width: 2 @@ -1574,14 +1575,15 @@ Item { sourceComponent: Rectangle{ x: latteView.effects.inputMask.x y: latteView.effects.inputMask.y - width: latteView.effects.inputMask.width - height: latteView.effects.inputMask.height + //! when view is resized there is a chance that geometry is faulty stacked in old values + width: Math.min(latteView.effects.inputMask.width, root.width) //! fixes updating + height: Math.min(latteView.effects.inputMask.height, root.height) //! fixes updating color: "purple" - border.width: 2 - border.color: "purple" + border.width: 1 + border.color: "black" - opacity: 0.35 + opacity: 0.20 } } }