33 lines
952 B
C++
33 lines
952 B
C++
/*
|
|
* SPDX-FileCopyrightText: 2020-2021 Devin Lin <[email protected]>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
|
*/
|
|
|
|
#include "blur.h"
|
|
|
|
#include <KWindowEffects>
|
|
|
|
#include <QQuickWindow>
|
|
#include <QQuickItem>
|
|
|
|
|
|
Blur::Blur(QObject *parent): QObject(parent)
|
|
{
|
|
}
|
|
|
|
void Blur::setBlur(QQuickItem *item, bool blur)
|
|
{
|
|
auto setWindows = [item, blur]() {
|
|
auto reg = QRect(QPoint(0, 0), item->window()->size());
|
|
KWindowEffects::enableBackgroundContrast(item->window(), blur, 1, 1, 1, reg);
|
|
KWindowEffects::enableBlurBehind(item->window(), blur, reg);
|
|
};
|
|
|
|
disconnect(item->window(), &QQuickWindow::heightChanged, this, nullptr);
|
|
disconnect(item->window(), &QQuickWindow::widthChanged, this, nullptr);
|
|
connect(item->window(), &QQuickWindow::heightChanged, this, setWindows);
|
|
connect(item->window(), &QQuickWindow::widthChanged, this, setWindows);
|
|
setWindows();
|
|
}
|