File indexing completed on 2024-05-12 16:21:16

0001 /*
0002  * SPDX-FileCopyrightText: 2020-2021 Devin Lin <espidev@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #include "blur.h"
0008 
0009 #include <KWindowEffects>
0010 
0011 #include <QQuickWindow>
0012 #include <QQuickItem>
0013 
0014 
0015 Blur::Blur(QObject *parent): QObject(parent)
0016 {
0017 }
0018 
0019 void Blur::setBlur(QQuickItem *item, bool blur)
0020 {
0021     auto setWindows = [item, blur]() {
0022         auto reg = QRect(QPoint(0, 0), item->window()->size());
0023         KWindowEffects::enableBackgroundContrast(item->window(), blur, 1, 1, 1, reg);
0024         KWindowEffects::enableBlurBehind(item->window(), blur, reg);
0025     };
0026 
0027     disconnect(item->window(), &QQuickWindow::heightChanged, this, nullptr);
0028     disconnect(item->window(), &QQuickWindow::widthChanged, this, nullptr);
0029     connect(item->window(), &QQuickWindow::heightChanged, this, setWindows);
0030     connect(item->window(), &QQuickWindow::widthChanged, this, setWindows);
0031     setWindows();
0032 }