| panelview.cpp | panelview.cpp | |||
|---|---|---|---|---|
| skipping to change at line 1363 | skipping to change at line 1363 | |||
| return QPointF(qBound(containmentRect.left() + m_leftPadding, point.x() , containmentRect.right() - m_rightPadding - 1), | return QPointF(qBound(containmentRect.left() + m_leftPadding, point.x() , containmentRect.right() - m_rightPadding - 1), | |||
| qBound(containmentRect.top() + m_topPadding, point.y(), containmentRect.bottom() - m_bottomPadding - 1)); | qBound(containmentRect.top() + m_topPadding, point.y(), containmentRect.bottom() - m_bottomPadding - 1)); | |||
| } | } | |||
| void PanelView::updateMask() | void PanelView::updateMask() | |||
| { | { | |||
| if (!containment()) { | if (!containment()) { | |||
| return; | return; | |||
| } | } | |||
| // Popups now align to the mask, without it they appear in the wrong po | ||||
| sition | ||||
| // always create it and show blur and contrast when needed | ||||
| QRegion mask; | ||||
| QQuickItem *rootObject = this->rootObject(); | ||||
| QRect screenPanelRect = geometry(); | ||||
| screenPanelRect.moveTo(mapFromGlobal(screenPanelRect.topLeft())); | ||||
| if (rootObject) { | ||||
| QVariant maskProperty = rootObject->property("panelMask"); | ||||
| if (static_cast<QMetaType::Type>(maskProperty.typeId()) == QMetaTyp | ||||
| e::QRegion) { | ||||
| mask = get<QRegion>(std::move(maskProperty)); | ||||
| const QPoint floatingTranslucentItemOffset = rootObject->proper | ||||
| ty("floatingTranslucentItemOffset").toPoint(); | ||||
| mask.translate(floatingTranslucentItemOffset); | ||||
| } | ||||
| } | ||||
| if (mask.isEmpty()) { | ||||
| mask = QRegion(QRect(screenPanelRect)); | ||||
| } | ||||
| if (m_backgroundHints == Plasma::Types::NoBackground) { | if (m_backgroundHints == Plasma::Types::NoBackground) { | |||
| KWindowEffects::enableBlurBehind(this, false); | KWindowEffects::enableBlurBehind(this, false); | |||
| KWindowEffects::enableBackgroundContrast(this, false); | KWindowEffects::enableBackgroundContrast(this, false); | |||
| setMask(QRegion()); | ||||
| } else { | } else { | |||
| QRegion mask; | ||||
| QQuickItem *rootObject = this->rootObject(); | ||||
| QRect screenPanelRect = geometry(); | ||||
| screenPanelRect.moveTo(mapFromGlobal(screenPanelRect.topLeft())); | ||||
| if (rootObject) { | ||||
| QVariant maskProperty = rootObject->property("panelMask"); | ||||
| if (static_cast<QMetaType::Type>(maskProperty.typeId()) == QMet | ||||
| aType::QRegion) { | ||||
| mask = get<QRegion>(std::move(maskProperty)); | ||||
| const QPoint floatingTranslucentItemOffset = rootObject->pr | ||||
| operty("floatingTranslucentItemOffset").toPoint(); | ||||
| mask.translate(floatingTranslucentItemOffset); | ||||
| } | ||||
| } | ||||
| if (mask.isEmpty()) { | ||||
| mask = QRegion(QRect(screenPanelRect)); | ||||
| } | ||||
| // We use mask for graphical effect which tightly covers the panel | // We use mask for graphical effect which tightly covers the panel | |||
| // For the input region (QWindow::mask) screenPanelRect includes ar ea around the floating | // For the input region (QWindow::mask) screenPanelRect includes ar ea around the floating | |||
| // panel in order to respect Fitt's law | // panel in order to respect Fitt's law | |||
| KWindowEffects::enableBlurBehind(this, m_theme.blurBehindEnabled(), mask); | KWindowEffects::enableBlurBehind(this, m_theme.blurBehindEnabled(), mask); | |||
| KWindowEffects::enableBackgroundContrast(this, | KWindowEffects::enableBackgroundContrast(this, | |||
| m_theme.backgroundContrast Enabled(), | m_theme.backgroundContrast Enabled(), | |||
| m_theme.backgroundContrast (), | m_theme.backgroundContrast (), | |||
| m_theme.backgroundIntensit y(), | m_theme.backgroundIntensit y(), | |||
| m_theme.backgroundSaturati on(), | m_theme.backgroundSaturati on(), | |||
| mask); | mask); | |||
| End of changes. 3 change blocks. | ||||
| 18 lines changed or deleted | 22 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||