From c698d1ea1e19d292df4669d8190e340bb0968685 Mon Sep 17 00:00:00 2001 From: taj-ny <79316397+taj-ny@users.noreply.github.com> Date: Thu, 5 Dec 2024 18:57:35 +0100 Subject: [PATCH] add support for KDecoration3 --- CMakeLists.txt | 10 +++++++++- src/CMakeLists.txt | 7 +++++-- src/blur.cpp | 20 ++++++++++++++++++-- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b86759d43..7e155d254 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -73,7 +73,15 @@ if(${KWin_VERSION} VERSION_GREATER_EQUAL 6.1.90) add_compile_definitions(KWIN_6_2_OR_GREATER) endif() -find_package(KDecoration2 REQUIRED) +find_package(KDecoration2) +find_package(KDecoration3) +if (${KDecoration3_FOUND}) + add_compile_definitions(KDECORATION3) +endif() +if(NOT ${KDecoration3_FOUND} AND NOT ${KDecoration2_FOUND}) + message(fatal_error "Could not find KDecoration2 or KDecoration3.") +endif() + find_package(KWinDBusInterface CONFIG REQUIRED) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2ce5f865c..e659aa2a5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,8 +28,11 @@ target_link_libraries(forceblur PRIVATE KWin::kwin KF6::ConfigGui - - KDecoration2::KDecoration ) +if (${KDecoration3_FOUND}) + target_link_libraries(forceblur PRIVATE KDecoration3::KDecoration) +else() + target_link_libraries(forceblur PRIVATE KDecoration2::KDecoration) +endif() install(TARGETS forceblur DESTINATION ${KDE_INSTALL_PLUGINDIR}/kwin/effects/plugins) diff --git a/src/blur.cpp b/src/blur.cpp index 72f435167..6bf17335e 100644 --- a/src/blur.cpp +++ b/src/blur.cpp @@ -41,7 +41,12 @@ #include #include +#ifdef KDECORATION3 +#include +#else #include +#endif + #include Q_LOGGING_CATEGORY(KWIN_BLUR, "kwin_better_blur", QtWarningMsg) @@ -420,7 +425,13 @@ void BlurEffect::setupDecorationConnections(EffectWindow *w) return; } - connect(w->decoration(), &KDecoration2::Decoration::blurRegionChanged, this, [this, w]() { + connect(w->decoration(), +#ifdef KDECORATION3 + &KDecoration3::Decoration::blurRegionChanged +#else + &KDecoration2::Decoration::blurRegionChanged +#endif + , this, [this, w]() { updateBlurRegion(w); }); } @@ -464,7 +475,12 @@ QRegion BlurEffect::decorationBlurRegion(const EffectWindow *w) const return QRegion(); } - QRegion decorationRegion = QRegion(w->decoration()->rect()) - w->contentsRect().toRect(); + QRect decorationRect = w->decoration()->rect() +#ifdef KDECORATION3 + .toAlignedRect() +#endif + ; + QRegion decorationRegion = QRegion(decorationRect) - w->contentsRect().toRect(); //! we return only blurred regions that belong to decoration region return decorationRegion.intersected(w->decoration()->blurRegion()); }