diff --git a/.gitignore b/.gitignore index d76b296..534b1ac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /deepin-kwin-0.0.3.2.tar.gz /dde-kwin-0.0.4.tar.gz /dde-kwin-0.1.0.tar.gz +/dde-kwin-5.2.0.2.tar.gz diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..d8e22c6 --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,18 @@ +# See the documentation for more information: +# https://packit.dev/docs/configuration/ + +specfile_path: rpm/deepin-kwin.spec + +# add or remove files that should be synced +synced_files: + - rpm/deepin-kwin.spec + - .packit.yaml + +upstream_ref: 5.2.0.2 +upstream_package_name: dde-kwin +# downstream (Fedora) RPM package name +downstream_package_name: deepin-kwin + +actions: + fix-spec-file: | + bash -c "sed -i -r \"s/Version:(\s*)\S*/Version:\1${PACKIT_PROJECT_VERSION}/\" rpm/deepin-kwin.spec" diff --git a/0001-revert-added-functions-from-their-forked-kwin.patch b/0001-revert-added-functions-from-their-forked-kwin.patch new file mode 100644 index 0000000..1dab573 --- /dev/null +++ b/0001-revert-added-functions-from-their-forked-kwin.patch @@ -0,0 +1,130 @@ +From 35aa6d690eedf3f399e715c76bf90524c1c99e4d Mon Sep 17 00:00:00 2001 +From: Robin Lee +Date: Thu, 12 Nov 2020 19:09:04 +0800 +Subject: [PATCH 1/6] revert added functions from their forked kwin + +--- + deepin-wm-dbus/com.deepin.wm.xml.in | 6 ------ + deepin-wm-dbus/deepinwmfaker.cpp | 10 ---------- + deepin-wm-dbus/deepinwmfaker.h | 2 -- + plugins/platforms/lib/kwinutils.cpp | 18 ------------------ + plugins/platforms/lib/kwinutils.h | 2 -- + .../plugin/org.kde.kwin.KWinUtils.xml | 6 ------ + 6 files changed, 44 deletions(-) + +diff --git a/deepin-wm-dbus/com.deepin.wm.xml.in b/deepin-wm-dbus/com.deepin.wm.xml.in +index a73a88632..279ebca4a 100644 +--- a/deepin-wm-dbus/com.deepin.wm.xml.in ++++ b/deepin-wm-dbus/com.deepin.wm.xml.in +@@ -175,10 +175,4 @@ + + + +- +- +- +- +- +- + +diff --git a/deepin-wm-dbus/deepinwmfaker.cpp b/deepin-wm-dbus/deepinwmfaker.cpp +index 9b87788b5..8f971a26e 100644 +--- a/deepin-wm-dbus/deepinwmfaker.cpp ++++ b/deepin-wm-dbus/deepinwmfaker.cpp +@@ -681,16 +681,6 @@ void DeepinWMFaker::BeginToMoveActiveWindow() + m_kwinUtilsInter->WindowMove(); + } + +-void DeepinWMFaker::TouchToMove(int x, int y) +-{ +- m_kwinUtilsInter->TouchPadToMoveWindow(x,y); +-} +- +-void DeepinWMFaker::ClearMoveStatus() +-{ +- m_kwinUtilsInter->EndTouchPadToMoveWindow(); +-} +- + void DeepinWMFaker::SwitchApplication(bool backward) + { + if (!m_kwinUtilsInter->isValid()) { +diff --git a/deepin-wm-dbus/deepinwmfaker.h b/deepin-wm-dbus/deepinwmfaker.h +index ee22e6fe7..6b30a14cd 100644 +--- a/deepin-wm-dbus/deepinwmfaker.h ++++ b/deepin-wm-dbus/deepinwmfaker.h +@@ -133,8 +133,6 @@ public Q_SLOTS: + bool GetIsShowDesktop(); + void SetShowDesktop(bool isShowDesktop); + +- void TouchToMove(int x, int y); +- void ClearMoveStatus(); + Q_SIGNALS: + void WorkspaceBackgroundChanged(int index, const QString &newUri); + void WorkspaceBackgroundChangedForMonitor(int index, const QString &strMonitorName, const QString &newUri); +diff --git a/plugins/platforms/lib/kwinutils.cpp b/plugins/platforms/lib/kwinutils.cpp +index b035a67f7..4d3fdc586 100644 +--- a/plugins/platforms/lib/kwinutils.cpp ++++ b/plugins/platforms/lib/kwinutils.cpp +@@ -88,8 +88,6 @@ public Q_SLOTS: + void slotWindowMove(); + void slotWindowMaximize(); + bool compositing() const; +- void slotTouchPadTomoveWindow(int x, int y); +- void slotEndTouchPadToMoveWindow(); + + #if !defined(KWIN_VERSION) || KWIN_VERSION < KWIN_VERSION_CHECK(5, 10, 95, 0) + // kwin < 5.10.95 +@@ -1084,22 +1082,6 @@ void KWinUtils::WindowMove() + } + } + +-void KWinUtils::TouchPadToMoveWindow(int x, int y) +-{ +- KWin::Workspace *ws = static_cast(workspace()); +- if (ws) { +- ws->slotTouchPadTomoveWindow(x,y); +- } +-} +- +-void KWinUtils::EndTouchPadToMoveWindow() +-{ +- KWin::Workspace *ws = static_cast(workspace()); +- if (ws) { +- ws->slotEndTouchPadToMoveWindow(); +- } +-} +- + void KWinUtils::WindowMaximize() + { + KWin::Workspace *ws = static_cast(workspace()); +diff --git a/plugins/platforms/lib/kwinutils.h b/plugins/platforms/lib/kwinutils.h +index 2c758752c..57edb8664 100644 +--- a/plugins/platforms/lib/kwinutils.h ++++ b/plugins/platforms/lib/kwinutils.h +@@ -156,8 +156,6 @@ public Q_SLOTS: + void ShowWindowsView(); + void ResumeCompositor(int type); + void SuspendCompositor(int type); +- void TouchPadToMoveWindow(int x, int y); +- void EndTouchPadToMoveWindow(); + + Q_SIGNALS: + void initialized(); +diff --git a/plugins/platforms/plugin/org.kde.kwin.KWinUtils.xml b/plugins/platforms/plugin/org.kde.kwin.KWinUtils.xml +index 5854ed04f..aa61b6cde 100644 +--- a/plugins/platforms/plugin/org.kde.kwin.KWinUtils.xml ++++ b/plugins/platforms/plugin/org.kde.kwin.KWinUtils.xml +@@ -22,10 +22,4 @@ + + + +- +- +- +- +- +- + +-- +2.26.2 + diff --git a/0002-tabbox-chameleon-rename.patch b/0002-tabbox-chameleon-rename.patch new file mode 100644 index 0000000..163fc38 --- /dev/null +++ b/0002-tabbox-chameleon-rename.patch @@ -0,0 +1,70 @@ +From dda7c5c755a40565c4cd07c779de15327f8cf3d6 Mon Sep 17 00:00:00 2001 +From: Robin Lee +Date: Thu, 12 Nov 2020 19:11:28 +0800 +Subject: [PATCH 2/6] tabbox chameleon rename + +--- + configures/kwinrc | 2 +- + tabbox/CMakeLists.txt | 2 +- + tabbox/{thumbnail_grid => chameleon}/contents/ui/main.qml | 0 + tabbox/{thumbnail_grid => chameleon}/metadata.desktop | 6 +++--- + 4 files changed, 5 insertions(+), 5 deletions(-) + rename tabbox/{thumbnail_grid => chameleon}/contents/ui/main.qml (100%) + rename tabbox/{thumbnail_grid => chameleon}/metadata.desktop (71%) + +diff --git a/configures/kwinrc b/configures/kwinrc +index cfb4f10a6..6849a1ef2 100644 +--- a/configures/kwinrc ++++ b/configures/kwinrc +@@ -40,7 +40,7 @@ ActivitiesMode=1 + ApplicationsMode=0 + DesktopMode=1 + HighlightWindows=true +-LayoutName=thumbnail_grid ++LayoutName=chameleon + MinimizedMode=0 + MultiScreenMode=0 + ShowDesktopMode=1 +diff --git a/tabbox/CMakeLists.txt b/tabbox/CMakeLists.txt +index af1c0d929..d377f3056 100644 +--- a/tabbox/CMakeLists.txt ++++ b/tabbox/CMakeLists.txt +@@ -1,6 +1,6 @@ + install( + DIRECTORY +- thumbnail_grid ++ chameleon + DESTINATION + ${CMAKE_INSTALL_PREFIX}/share/kwin/tabbox + ) +diff --git a/tabbox/thumbnail_grid/contents/ui/main.qml b/tabbox/chameleon/contents/ui/main.qml +similarity index 100% +rename from tabbox/thumbnail_grid/contents/ui/main.qml +rename to tabbox/chameleon/contents/ui/main.qml +diff --git a/tabbox/thumbnail_grid/metadata.desktop b/tabbox/chameleon/metadata.desktop +similarity index 71% +rename from tabbox/thumbnail_grid/metadata.desktop +rename to tabbox/chameleon/metadata.desktop +index 7114afe0b..97ae44aa3 100755 +--- a/tabbox/thumbnail_grid/metadata.desktop ++++ b/tabbox/chameleon/metadata.desktop +@@ -1,5 +1,5 @@ + [Desktop Entry] +-Name=Thumbnail Grid ++Name=Chameleon + Comment= + + Type=Service +@@ -11,7 +11,7 @@ X-Plasma-MainScript=ui/main.qml + Icon=preferences-system-windows-switcher-big-icons + X-KDE-PluginInfo-Author=Chris Holland + X-KDE-PluginInfo-Email=zrenfire@gmail.com +-X-KDE-PluginInfo-Name=thumbnail_grid ++X-KDE-PluginInfo-Name=chameleon + X-KDE-PluginInfo-Version=4 +-X-KDE-PluginInfo-Website=https://github.com/Zren/kwin-tabbox-thumbnail_grid ++X-KDE-PluginInfo-Website=https://github.com/linuxdeepin/dde-kwin + X-KDE-PluginInfo-Depends= +-- +2.26.2 + diff --git a/0003-build-fix.patch b/0003-build-fix.patch new file mode 100644 index 0000000..f285eb8 --- /dev/null +++ b/0003-build-fix.patch @@ -0,0 +1,205 @@ +From 89b7cde3a6585abba6cf1f3efb8f12fae8bd16f2 Mon Sep 17 00:00:00 2001 +From: Robin Lee +Date: Thu, 12 Nov 2020 19:12:30 +0800 +Subject: [PATCH 3/6] build fix + +--- + plugins/kwineffects/blur/blur.cpp | 15 +++++++++------ + plugins/kwineffects/blur/blur.h | 2 +- + plugins/kwineffects/multitasking/data.qrc | 4 ---- + plugins/kwineffects/multitasking/multitasking.cpp | 2 +- + plugins/kwineffects/multitasking/multitasking.h | 2 +- + .../multitasking/translations/multitasking.ts | 11 ----------- + .../translations/multitasking_zh_CN.ts | 11 ----------- + .../kwineffects/scissor-window/scissorwindow.cpp | 7 ++++--- + .../kwineffects/scissor-window/scissorwindow.h | 2 +- + 9 files changed, 17 insertions(+), 39 deletions(-) + delete mode 100644 plugins/kwineffects/multitasking/translations/multitasking.ts + delete mode 100644 plugins/kwineffects/multitasking/translations/multitasking_zh_CN.ts + +diff --git a/plugins/kwineffects/blur/blur.cpp b/plugins/kwineffects/blur/blur.cpp +index 9339a1fab..45b994c14 100644 +--- a/plugins/kwineffects/blur/blur.cpp ++++ b/plugins/kwineffects/blur/blur.cpp +@@ -429,8 +429,8 @@ QRegion BlurEffect::expand(const QRegion ®ion) const + { + QRegion expanded; + +- for (const QRect &rect : region.rects()) { +- expanded += expand(rect); ++ for (auto it = region.begin(); it != region.end(); ++it) { ++ expanded += expand(*it); + } + + return expanded; +@@ -470,7 +470,8 @@ void BlurEffect::uploadRegion(QVector2D *&map, const QRegion ®ion, const int + for (int i = 0; i <= downSampleIterations; i++) { + const int divisionRatio = (1 << i); + +- for (const QRect &r : region.rects()) { ++ for (auto it = region.begin(); it != region.end(); ++it) { ++ const QRect& r = *it; + const QVector2D topLeft( r.x() / divisionRatio, r.y() / divisionRatio); + const QVector2D topRight( (r.x() + r.width()) / divisionRatio, r.y() / divisionRatio); + const QVector2D bottomLeft( r.x() / divisionRatio, (r.y() + r.height()) / divisionRatio); +@@ -536,7 +537,8 @@ void BlurEffect::prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int t + // to blur an area partially we have to shrink the opaque area of a window + QRegion newClip; + const QRegion oldClip = data.clip; +- for (const QRect &rect : data.clip.rects()) { ++ for (auto it = data.clip.begin(); it != data.clip.end(); ++it) { ++ const QRect &rect = *it; + newClip |= rect.adjusted(m_expandSize, m_expandSize, -m_expandSize, -m_expandSize); + } + data.clip = newClip; +@@ -623,7 +625,8 @@ void BlurEffect::paintWindow(EffectWindow *w, int mask, QRegion region, WindowPa + if (scaled) { + QPoint pt = shape.boundingRect().topLeft(); + QRegion scaledShape; +- for (QRect r : shape.rects()) { ++ for (auto it = shape.cbegin(); it != shape.cend(); ++it) { ++ QRect r = *it; + r.moveTo(pt.x() + (r.x() - pt.x()) * data.xScale() + data.xTranslation(), + pt.y() + (r.y() - pt.y()) * data.yScale() + data.yTranslation()); + r.setWidth(r.width() * data.xScale()); +@@ -647,7 +650,7 @@ void BlurEffect::paintWindow(EffectWindow *w, int mask, QRegion region, WindowPa + effects->drawWindow(w, mask, region, data); + } + +-void BlurEffect::paintEffectFrame(EffectFrame *frame, QRegion region, double opacity, double frameOpacity) ++void BlurEffect::paintEffectFrame(EffectFrame* frame, const QRegion ®ion, double opacity, double frameOpacity) + { + const QRect screen = effects->virtualScreenGeometry(); + bool valid = m_renderTargetsValid && m_shader && m_shader->isValid(); +diff --git a/plugins/kwineffects/blur/blur.h b/plugins/kwineffects/blur/blur.h +index 7c76a8244..58889bc8a 100644 +--- a/plugins/kwineffects/blur/blur.h ++++ b/plugins/kwineffects/blur/blur.h +@@ -58,7 +58,7 @@ public: + void prePaintScreen(ScreenPrePaintData &data, int time) override; + void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time) override; + void paintWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data) override; +- void paintEffectFrame(EffectFrame *frame, QRegion region, double opacity, double frameOpacity) override; ++ void paintEffectFrame(EffectFrame* frame, const QRegion ®ion, double opacity, double frameOpacity) override; + + bool provides(Feature feature) override; + +diff --git a/plugins/kwineffects/multitasking/data.qrc b/plugins/kwineffects/multitasking/data.qrc +index 15f9d8029..d7572793d 100644 +--- a/plugins/kwineffects/multitasking/data.qrc ++++ b/plugins/kwineffects/multitasking/data.qrc +@@ -21,8 +21,4 @@ + data/unsticked_normal.svg + data/unsticked_press.svg + +- +- translations/multitasking_zh_CN.qm +- translations/multitasking.qm +- + +diff --git a/plugins/kwineffects/multitasking/multitasking.cpp b/plugins/kwineffects/multitasking/multitasking.cpp +index 934f83dce..5580c291d 100644 +--- a/plugins/kwineffects/multitasking/multitasking.cpp ++++ b/plugins/kwineffects/multitasking/multitasking.cpp +@@ -575,7 +575,7 @@ void MultitaskingEffect::prePaintScreen(ScreenPrePaintData &data, int time) + effects->prePaintScreen(data, time); + } + +-void MultitaskingEffect::paintScreen(int mask, QRegion region, ScreenPaintData &data) ++void MultitaskingEffect::paintScreen(int mask, const QRegion& region, ScreenPaintData &data) + { + effects->paintScreen(mask, region, data); + } +diff --git a/plugins/kwineffects/multitasking/multitasking.h b/plugins/kwineffects/multitasking/multitasking.h +index 5874abdcb..8ae78fc02 100644 +--- a/plugins/kwineffects/multitasking/multitasking.h ++++ b/plugins/kwineffects/multitasking/multitasking.h +@@ -256,7 +256,7 @@ public: + + // Screen painting + virtual void prePaintScreen(ScreenPrePaintData &data, int time) override; +- virtual void paintScreen(int mask, QRegion region, ScreenPaintData &data) override; ++ virtual void paintScreen(int mask, const QRegion& region, ScreenPaintData &data) override; + virtual void postPaintScreen() override; + + // Window painting +diff --git a/plugins/kwineffects/multitasking/translations/multitasking.ts b/plugins/kwineffects/multitasking/translations/multitasking.ts +deleted file mode 100644 +index 40826e464..000000000 +--- a/plugins/kwineffects/multitasking/translations/multitasking.ts ++++ /dev/null +@@ -1,11 +0,0 @@ +- +- +- +- +- thumbmanager +- +- Drag upwards to remove +- +- +- +- +diff --git a/plugins/kwineffects/multitasking/translations/multitasking_zh_CN.ts b/plugins/kwineffects/multitasking/translations/multitasking_zh_CN.ts +deleted file mode 100644 +index ffa9950f3..000000000 +--- a/plugins/kwineffects/multitasking/translations/multitasking_zh_CN.ts ++++ /dev/null +@@ -1,11 +0,0 @@ +- +- +- +- +- thumbmanager +- +- Drag upwards to remove +- 向上拖拽删除 +- +- +- +diff --git a/plugins/kwineffects/scissor-window/scissorwindow.cpp b/plugins/kwineffects/scissor-window/scissorwindow.cpp +index c366a94f5..9205ff4db 100644 +--- a/plugins/kwineffects/scissor-window/scissorwindow.cpp ++++ b/plugins/kwineffects/scissor-window/scissorwindow.cpp +@@ -189,21 +189,22 @@ ScissorWindow::ScissorWindow(QObject *, const QVariantList &) + } + } + +-void ScissorWindow::drawWindow(KWin::EffectWindow *w, int mask, QRegion region, KWin::WindowPaintData &data) ++void ScissorWindow::drawWindow(KWin::EffectWindow *w, int mask, const QRegion& orig_region, KWin::WindowPaintData &data) + { + // 工作区特效会使用PAINT_WINDOW_LANCZOS绘制,此时不支持多次调用Effect::drawWindow, + // 否则只会显示第一次调用绘制的内容, 因此在这种模式下禁用掉窗口裁剪特效 + if (!w->isPaintingEnabled() || (mask & PAINT_WINDOW_LANCZOS)) { +- return Effect::drawWindow(w, mask, region, data); ++ return Effect::drawWindow(w, mask, orig_region, data); + } + + MaskCache::TextureData mask_texture = MaskCache::instance()->getTextureByWindow(w); + + if (!mask_texture) { +- return Effect::drawWindow(w, mask, region, data); ++ return Effect::drawWindow(w, mask, orig_region, data); + } + + QRegion corner_region; ++ QRegion region = orig_region; + + if (!mask_texture->customMask) { + const QRect window_rect = w->geometry(); +diff --git a/plugins/kwineffects/scissor-window/scissorwindow.h b/plugins/kwineffects/scissor-window/scissorwindow.h +index f4e18f739..75a270a37 100644 +--- a/plugins/kwineffects/scissor-window/scissorwindow.h ++++ b/plugins/kwineffects/scissor-window/scissorwindow.h +@@ -39,7 +39,7 @@ public: + + explicit ScissorWindow(QObject *parent = nullptr, const QVariantList &args = QVariantList()); + +- void drawWindow(KWin::EffectWindow* w, int mask, QRegion region, KWin::WindowPaintData& data) override; ++ void drawWindow(KWin::EffectWindow* w, int mask, const QRegion& orig_region, KWin::WindowPaintData& data) override; + + private: + KWin::GLShader *m_shader = nullptr; +-- +2.26.2 + diff --git a/0004-unload-blur.patch b/0004-unload-blur.patch new file mode 100644 index 0000000..426c96c --- /dev/null +++ b/0004-unload-blur.patch @@ -0,0 +1,69 @@ +From 23f45b67805dc00878eae5ff4d1eae71a96d2bc0 Mon Sep 17 00:00:00 2001 +From: Robin Lee +Date: Thu, 12 Nov 2020 19:13:48 +0800 +Subject: [PATCH 4/6] unload blur + +--- + plugins/kwineffects/blur/blur.cpp | 24 ++++++++++++++---------- + plugins/kwineffects/blur/blur.h | 1 + + 2 files changed, 15 insertions(+), 10 deletions(-) + +diff --git a/plugins/kwineffects/blur/blur.cpp b/plugins/kwineffects/blur/blur.cpp +index 45b994c14..470bef12f 100644 +--- a/plugins/kwineffects/blur/blur.cpp ++++ b/plugins/kwineffects/blur/blur.cpp +@@ -41,16 +41,7 @@ static const QByteArray s_blurAtomName = QByteArrayLiteral("_KDE_NET_WM_BLUR_BEH + + BlurEffect::BlurEffect(QObject *, const QVariantList &) + { +- // 禁用kwin自己的模糊特效,防止两个特效之间出现冲突 +- { +- bool blur_loaded = false; +- QMetaObject::invokeMethod(effects, "isEffectLoaded", Qt::DirectConnection, Q_RETURN_ARG(bool, blur_loaded), Q_ARG(QString, "blur")); +- +- if (blur_loaded) { +- // qWarning() << "will try unload builtIn blur effect of kwin"; +- QMetaObject::invokeMethod(effects, "unloadEffect", Qt::DirectConnection, Q_ARG(QString, "blur")); +- } +- } ++ unloadBuiltinBlur(); + + m_shader = new BlurShader(this); + +@@ -690,8 +681,21 @@ void BlurEffect::generateNoiseTexture() + m_noiseTexture.setWrapMode(GL_REPEAT); + } + ++void BlurEffect::unloadBuiltinBlur() ++// 禁用kwin自己的模糊特效,防止两个特效之间出现冲突 ++{ ++ bool blur_loaded = false; ++ QMetaObject::invokeMethod(effects, "isEffectLoaded", Qt::DirectConnection, Q_RETURN_ARG(bool, blur_loaded), Q_ARG(QString, "blur")); ++ ++ if (blur_loaded) { ++ qWarning() << "will try unload builtIn blur effect of kwin"; ++ QMetaObject::invokeMethod(effects, "unloadEffect", Qt::DirectConnection, Q_ARG(QString, "blur")); ++ } ++} ++ + void BlurEffect::doBlur(const QRegion& shape, const QRect& screen, const float opacity, const QMatrix4x4 &screenProjection, bool isDock, QRect windowRect) + { ++ unloadBuiltinBlur(); + // Blur would not render correctly on a secondary monitor because of wrong coordinates + // BUG: 393723 + const int xTranslate = -screen.x(); +diff --git a/plugins/kwineffects/blur/blur.h b/plugins/kwineffects/blur/blur.h +index 58889bc8a..441441c85 100644 +--- a/plugins/kwineffects/blur/blur.h ++++ b/plugins/kwineffects/blur/blur.h +@@ -88,6 +88,7 @@ private: + void uploadRegion(QVector2D *&map, const QRegion ®ion, const int downSampleIterations); + void uploadGeometry(GLVertexBuffer *vbo, const QRegion &blurRegion, const QRegion &windowRegion); + void generateNoiseTexture(); ++ void unloadBuiltinBlur(); + + void upscaleRenderToScreen(GLVertexBuffer *vbo, int vboStart, int blurRectCount, QMatrix4x4 screenProjection, QPoint windowPosition); + void downSampleTexture(GLVertexBuffer *vbo, int blurRectCount); +-- +2.26.2 + diff --git a/0005-qt5.15-fix.patch b/0005-qt5.15-fix.patch new file mode 100644 index 0000000..646955a --- /dev/null +++ b/0005-qt5.15-fix.patch @@ -0,0 +1,37 @@ +From f759309be1148519d39dc4eaf0274dd6e4ee9765 Mon Sep 17 00:00:00 2001 +From: Robin Lee +Date: Thu, 12 Nov 2020 19:14:32 +0800 +Subject: [PATCH 5/6] qt5.15 fix + +--- + plugins/kdecoration/chameleon.h | 1 + + plugins/kwineffects/scissor-window/scissorwindow.cpp | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/plugins/kdecoration/chameleon.h b/plugins/kdecoration/chameleon.h +index 3d164cac2..a716a7a31 100644 +--- a/plugins/kdecoration/chameleon.h ++++ b/plugins/kdecoration/chameleon.h +@@ -32,6 +32,7 @@ + #include + #include + #include ++#include + + class Settings; + class ChameleonWindowTheme; +diff --git a/plugins/kwineffects/scissor-window/scissorwindow.cpp b/plugins/kwineffects/scissor-window/scissorwindow.cpp +index 9205ff4db..2200fba5c 100644 +--- a/plugins/kwineffects/scissor-window/scissorwindow.cpp ++++ b/plugins/kwineffects/scissor-window/scissorwindow.cpp +@@ -28,6 +28,7 @@ + #include + + #include ++#include + #include + #include + +-- +2.26.2 + diff --git a/0006-kwin-5.19.patch b/0006-kwin-5.19.patch new file mode 100644 index 0000000..2205295 --- /dev/null +++ b/0006-kwin-5.19.patch @@ -0,0 +1,132 @@ +From bdb2d182171af2cac0879668abc8cf139e78160a Mon Sep 17 00:00:00 2001 +From: Robin Lee +Date: Thu, 12 Nov 2020 19:15:20 +0800 +Subject: [PATCH 6/6] kwin 5.19 + +--- + plugins/kwineffects/blur/blur.cpp | 23 +++++++++++------------ + plugins/kwineffects/blur/blur.h | 7 ++----- + plugins/platforms/lib/kwinutils.cpp | 2 +- + 3 files changed, 14 insertions(+), 18 deletions(-) + +diff --git a/plugins/kwineffects/blur/blur.cpp b/plugins/kwineffects/blur/blur.cpp +index 470bef12f..144ed977b 100644 +--- a/plugins/kwineffects/blur/blur.cpp ++++ b/plugins/kwineffects/blur/blur.cpp +@@ -32,10 +32,10 @@ + #include // for ceil() + #include + +-#include +-#include +-#include +-#include ++#include ++#include ++#include ++#include + + static const QByteArray s_blurAtomName = QByteArrayLiteral("_KDE_NET_WM_BLUR_BEHIND_REGION"); + +@@ -52,10 +52,9 @@ BlurEffect::BlurEffect(QObject *, const QVariantList &) + // Should be included in _NET_SUPPORTED instead. + if (m_shader && m_shader->isValid() && m_renderTargetsValid) { + net_wm_blur_region = effects->announceSupportProperty(s_blurAtomName, this); +- KWayland::Server::Display *display = effects->waylandDisplay(); ++ KWaylandServer::Display *display = effects->waylandDisplay(); + if (display) { + m_blurManager = display->createBlurManager(this); +- m_blurManager->create(); + } + } else { + net_wm_blur_region = 0; +@@ -301,7 +300,7 @@ void BlurEffect::updateBlurRegion(EffectWindow *w) const + } + } + +- KWayland::Server::SurfaceInterface *surf = w->surface(); ++ KWaylandServer::SurfaceInterface *surf = w->surface(); + + if (surf && surf->blur()) { + region = surf->blur()->region(); +@@ -329,10 +328,10 @@ void BlurEffect::updateBlurRegion(EffectWindow *w) const + + void BlurEffect::slotWindowAdded(EffectWindow *w) + { +- KWayland::Server::SurfaceInterface *surf = w->surface(); ++ KWaylandServer::SurfaceInterface *surf = w->surface(); + + if (surf) { +- windowBlurChangedConnections[w] = connect(surf, &KWayland::Server::SurfaceInterface::blurChanged, this, [this, w] () { ++ windowBlurChangedConnections[w] = connect(surf, &KWaylandServer::SurfaceInterface::blurChanged, this, [this, w] () { + if (w) { + updateBlurRegion(w); + } +@@ -436,7 +435,7 @@ QRegion BlurEffect::blurRegion(const EffectWindow *w) const + const QRegion appRegion = qvariant_cast(value); + if (!appRegion.isEmpty()) { + if (w->decorationHasAlpha() && effects->decorationSupportsBlurBehind()) { +- region = w->shape(); ++ region = w->shape() & w->rect(); + region -= w->decorationInnerRect(); + } + region |= appRegion.translated(w->contentsRect().topLeft()) & +@@ -444,12 +443,12 @@ QRegion BlurEffect::blurRegion(const EffectWindow *w) const + } else { + // An empty region means that the blur effect should be enabled + // for the whole window. +- region = w->shape(); ++ region = w->shape() & w->rect(); + } + } else if (w->decorationHasAlpha() && effects->decorationSupportsBlurBehind()) { + // If the client hasn't specified a blur region, we'll only enable + // the effect behind the decoration. +- region = w->shape(); ++ region = w->shape() & w->rect(); + region -= w->decorationInnerRect(); + } + +diff --git a/plugins/kwineffects/blur/blur.h b/plugins/kwineffects/blur/blur.h +index 441441c85..c7432e39b 100644 +--- a/plugins/kwineffects/blur/blur.h ++++ b/plugins/kwineffects/blur/blur.h +@@ -31,13 +31,10 @@ + + using namespace KWin; + +-namespace KWayland +-{ +-namespace Server ++namespace KWaylandServer + { + class BlurManagerInterface; + } +-} + + static const int borderSize = 5; + +@@ -132,7 +129,7 @@ private: + QVector blurStrengthValues; + + QMap windowBlurChangedConnections; +- KWayland::Server::BlurManagerInterface *m_blurManager = nullptr; ++ KWaylandServer::BlurManagerInterface *m_blurManager = nullptr; + }; + + inline +diff --git a/plugins/platforms/lib/kwinutils.cpp b/plugins/platforms/lib/kwinutils.cpp +index 4d3fdc586..ebab090b9 100644 +--- a/plugins/platforms/lib/kwinutils.cpp ++++ b/plugins/platforms/lib/kwinutils.cpp +@@ -604,7 +604,7 @@ QObject *KWinUtils::tabBox() + + QObject *KWinUtils::cursor() + { +- return KWin::Cursor::s_self; ++ return nullptr; //KWin::Cursor; + } + + QObject *KWinUtils::virtualDesktop() +-- +2.26.2 + diff --git a/106.patch b/106.patch deleted file mode 100644 index 4097ba7..0000000 --- a/106.patch +++ /dev/null @@ -1,68 +0,0 @@ -From b657edaa59378b4f345fec916059213336d6bc05 Mon Sep 17 00:00:00 2001 -From: Felix Yan -Date: Wed, 26 Feb 2020 18:36:20 +0800 -Subject: [PATCH] Rename thumbnail_grid to avoid conflict with new - kdeplasma-addons - ---- - configures/kwinrc | 2 +- - tabbox/CMakeLists.txt | 2 +- - tabbox/{thumbnail_grid => chameleon}/contents/ui/main.qml | 0 - tabbox/{thumbnail_grid => chameleon}/metadata.desktop | 6 +++--- - 4 files changed, 5 insertions(+), 5 deletions(-) - rename tabbox/{thumbnail_grid => chameleon}/contents/ui/main.qml (100%) - rename tabbox/{thumbnail_grid => chameleon}/metadata.desktop (71%) - -diff --git a/configures/kwinrc b/configures/kwinrc -index 3134b0a..66a771d 100644 ---- a/configures/kwinrc -+++ b/configures/kwinrc -@@ -40,7 +40,7 @@ ActivitiesMode=1 - ApplicationsMode=0 - DesktopMode=1 - HighlightWindows=true --LayoutName=thumbnail_grid -+LayoutName=chameleon - MinimizedMode=0 - MultiScreenMode=0 - ShowDesktopMode=0 -diff --git a/tabbox/CMakeLists.txt b/tabbox/CMakeLists.txt -index af1c0d9..d377f30 100644 ---- a/tabbox/CMakeLists.txt -+++ b/tabbox/CMakeLists.txt -@@ -1,6 +1,6 @@ - install( - DIRECTORY -- thumbnail_grid -+ chameleon - DESTINATION - ${CMAKE_INSTALL_PREFIX}/share/kwin/tabbox - ) -diff --git a/tabbox/thumbnail_grid/contents/ui/main.qml b/tabbox/chameleon/contents/ui/main.qml -similarity index 100% -rename from tabbox/thumbnail_grid/contents/ui/main.qml -rename to tabbox/chameleon/contents/ui/main.qml -diff --git a/tabbox/thumbnail_grid/metadata.desktop b/tabbox/chameleon/metadata.desktop -similarity index 71% -rename from tabbox/thumbnail_grid/metadata.desktop -rename to tabbox/chameleon/metadata.desktop -index 7114afe..97ae44a 100755 ---- a/tabbox/thumbnail_grid/metadata.desktop -+++ b/tabbox/chameleon/metadata.desktop -@@ -1,5 +1,5 @@ - [Desktop Entry] --Name=Thumbnail Grid -+Name=Chameleon - Comment= - - Type=Service -@@ -11,7 +11,7 @@ X-Plasma-MainScript=ui/main.qml - Icon=preferences-system-windows-switcher-big-icons - X-KDE-PluginInfo-Author=Chris Holland - X-KDE-PluginInfo-Email=zrenfire@gmail.com --X-KDE-PluginInfo-Name=thumbnail_grid -+X-KDE-PluginInfo-Name=chameleon - X-KDE-PluginInfo-Version=4 --X-KDE-PluginInfo-Website=https://github.com/Zren/kwin-tabbox-thumbnail_grid -+X-KDE-PluginInfo-Website=https://github.com/linuxdeepin/dde-kwin - X-KDE-PluginInfo-Depends= diff --git a/README.packit b/README.packit new file mode 100644 index 0000000..cd7d6b0 --- /dev/null +++ b/README.packit @@ -0,0 +1,3 @@ +This repository is maintained by packit. +https://packit.dev/ +The file was generated using packit 0.19.0. diff --git a/deepin-kwin-fix-build-qt-5.15.patch b/deepin-kwin-fix-build-qt-5.15.patch deleted file mode 100644 index 13dc51e..0000000 --- a/deepin-kwin-fix-build-qt-5.15.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/plugins/kdecoration/chameleon.h b/plugins/kdecoration/chameleon.h -index 38ac7a7..4e61238 100644 ---- a/plugins/kdecoration/chameleon.h -+++ b/plugins/kdecoration/chameleon.h -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - - class Settings; - class Chameleon : public KDecoration2::Decoration diff --git a/deepin-kwin.spec b/deepin-kwin.spec index 60bb7e4..b81eb4b 100644 --- a/deepin-kwin.spec +++ b/deepin-kwin.spec @@ -1,28 +1,55 @@ %global repo dde-kwin +%global __provides_exclude_from ^%{_qt5_plugindir}.*\.so$ Name: deepin-kwin -Version: 0.1.0 -Release: 10%{?dist} +Version: 5.2.0.2 +Release: 1%{?dist} Summary: KWin configuration for Deepin Desktop Environment License: GPLv3+ URL: https://github.com/linuxdeepin/%{repo} Source0: %{url}/archive/%{version}/%{repo}-%{version}.tar.gz -# https://git.archlinux.org/svntogit/community.git/commit/trunk?h=packages/deepin-kwin&id=aac44be15651bbaa2d4f7d100ecd9dbc4a79236a -# Fix runtime issue with kwin 5.17 -Patch0: kwin-5.17.patch -Patch1: https://github.com/linuxdeepin/dde-kwin/pull/106.patch -Patch2: deepin-kwin-fix-build-qt-5.15.patch + +# PATCHES FROM SOURCE GIT: + +# revert added functions from their forked kwin +# Author: Robin Lee +Patch0001: 0001-revert-added-functions-from-their-forked-kwin.patch + +# tabbox chameleon rename +# Author: Robin Lee +Patch0002: 0002-tabbox-chameleon-rename.patch + +# build fix +# Author: Robin Lee +Patch0003: 0003-build-fix.patch + +# unload blur +# Author: Robin Lee +Patch0004: 0004-unload-blur.patch + +# qt5.15 fix +# Author: Robin Lee +Patch0005: 0005-qt5.15-fix.patch + +# kwin 5.19 +# Author: Robin Lee +Patch0006: 0006-kwin-5.19.patch + BuildRequires: gcc-c++ BuildRequires: cmake +BuildRequires: extra-cmake-modules >= 5.54 BuildRequires: kwin-devel +BuildRequires: kwayland-server-devel BuildRequires: pkgconfig(Qt5X11Extras) +BuildRequires: pkgconfig(Qt5Qml) BuildRequires: gsettings-qt-devel BuildRequires: libepoxy-devel -BuildRequires: dtkcore-devel +BuildRequires: dtkgui-devel BuildRequires: kf5-kwayland-devel BuildRequires: kf5-kglobalaccel-devel BuildRequires: cmake(KDecoration2) +BuildRequires: cmake(KF5I18n) BuildRequires: qt5-linguist # for libQt5EdidSupport.a BuildRequires: qt5-qtbase-static @@ -56,43 +83,42 @@ Requires: kf5-kglobalaccel-devel%{?_isa} Header files and libraries for %{name}. %prep -%setup -q -n %{repo}-%{version} -%patch0 -p2 -%patch1 -p1 -%patch2 -p1 +%autosetup -p1 -n %{repo}-%{version} -sed -i 's:/lib:/%{_lib}:' plugins/kwin-xcb/lib/CMakeLists.txt -sed -i 's:/usr/lib:%{_libdir}:' plugins/kwin-xcb/plugin/main.cpp +sed -i 's:/lib/:%{_libdir}/:' plugins/platforms/lib/CMakeLists.txt +sed -i 's:/lib/:/%{_lib}/:' plugins/platforms/plugin/main.cpp \ + plugins/platforms/plugin/main_wayland.cpp sed -i 's:/usr/lib:%{_libexecdir}:' deepin-wm-dbus/deepinwmfaker.cpp %build # help find (and prefer) qt5 utilities, e.g. qmake, lrelease export PATH=%{_qt5_bindir}:$PATH -%cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} -DCMAKE_BUILD_TYPE=Release -DKWIN_VERSION=$(rpm -q --qf '%%{version}' kwin-devel) +%cmake -DCMAKE_INSTALL_PREFIX=%{_prefix} -DCMAKE_INSTALL_LIBDIR=%{_libdir} \ + -DCMAKE_BUILD_TYPE=Release \ + -DKWIN_VERSION=$(rpm -q --qf '%%{version}' kwin-devel) %cmake_build %install %cmake_install chmod 755 %{buildroot}%{_bindir}/kwin_no_scale -%ldconfig_scriptlets - %files %doc CHANGELOG.md %license LICENSE %{_sysconfdir}/xdg/* %{_bindir}/deepin-wm-dbus %{_bindir}/kwin_no_scale -%{_libdir}/libkwin-xcb.so.* %{_qt5_plugindir}/org.kde.kdecoration2/libdeepin-chameleon.so %{_qt5_plugindir}/platforms/lib%{repo}-xcb.so -#{_qt5_plugindir}/kwin/effects/plugins/ +%{_qt5_plugindir}/platforms/lib%{repo}-wayland.so +%{_qt5_plugindir}/kwin/effects/plugins/ %{_datadir}/dde-kwin-xcb/ -%{_datadir}/applications/kwin-wm-multitaskingview.desktop %{_datadir}/dbus-1/services/*.service %{_datadir}/dbus-1/interfaces/*.xml %{_datadir}/kwin/scripts/* %{_datadir}/kwin/tabbox/* +%{_libdir}/libkwin-xcb.so.0 +%{_libdir}/libkwin-xcb.so.0.* %files devel %{_libdir}/libkwin-xcb.so @@ -100,6 +126,9 @@ chmod 755 %{buildroot}%{_bindir}/kwin_no_scale %{_includedir}/%{repo} %changelog +* Thu Nov 12 2020 Robin Lee - 5.2.0.2-1 +- new upstream release: 5.2.0.2 + * Fri Sep 11 2020 Jan Grulich - 0.1.0-10 - rebuild (qt5) diff --git a/kwin-5.17.patch b/kwin-5.17.patch deleted file mode 100644 index da03b8d..0000000 --- a/kwin-5.17.patch +++ /dev/null @@ -1,64 +0,0 @@ -diff --git a/dde-kwin-0.1.0/plugins/kwin-xcb/lib/kwinutils.cpp.orig b/dde-kwin-0.1.0/plugins/kwin-xcb/lib/kwinutils.cpp -index 999f23b..b618c54 100644 ---- a/dde-kwin-0.1.0/plugins/kwin-xcb/lib/kwinutils.cpp.orig -+++ b/dde-kwin-0.1.0/plugins/kwin-xcb/lib/kwinutils.cpp -@@ -129,10 +129,6 @@ class Compositor : public QObject - public: - enum SuspendReason { NoReasonSuspend = 0, UserSuspend = 1<<0, BlockRuleSuspend = 1<<1, ScriptSuspend = 1<<2, AllReasonSuspend = 0xff }; - static Compositor *s_compositor; -- --public Q_SLOTS: -- void suspend(Compositor::SuspendReason reason); -- void resume(Compositor::SuspendReason reason); - }; - - // 光标管理 -@@ -222,6 +218,7 @@ class KWinInterface - typedef xcb_cursor_t (*X11CursorGetCursor)(Qt::CursorShape); - typedef KWin::Options::WindowOperation (*OptionsWindowOperation)(const QString &, bool); - typedef QObject *(*WorkspaceFindClient)(KWinUtils::Predicate, xcb_window_t); -+ typedef void (*CompositorToggle)(void *, KWin::Compositor::SuspendReason); - public: - KWinInterface() - { -@@ -232,6 +229,8 @@ public: - x11CursorGetCursor = (X11CursorGetCursor)KWinUtils::resolve("_ZN4KWin6Cursor12getX11CursorEN2Qt11CursorShapeE"); - optionsWindowOperation = (OptionsWindowOperation)KWinUtils::resolve("_ZN4KWin7Options15windowOperationERK7QStringb"); - findClient = (WorkspaceFindClient)KWinUtils::resolve("_ZNK4KWin9Workspace10findClientENS_9PredicateEj"); -+ compositorSuspend = (CompositorToggle)KWinUtils::resolve("_ZN4KWin13X11Compositor7suspendENS0_13SuspendReasonE"); -+ compositorResume = (CompositorToggle)KWinUtils::resolve("_ZN4KWin13X11Compositor6resumeENS0_13SuspendReasonE"); - } - - ClientMaximizeMode clientMaximizeMode; -@@ -241,6 +240,8 @@ public: - X11CursorGetCursor x11CursorGetCursor; - OptionsWindowOperation optionsWindowOperation; - WorkspaceFindClient findClient; -+ CompositorToggle compositorSuspend; -+ CompositorToggle compositorResume; - }; - - Q_GLOBAL_STATIC(KWinInterface, interface) -@@ -609,18 +610,18 @@ void KWinUtils::ShowWorkspacesView() - - void KWinUtils::ResumeCompositor(int type) - { -- if (!KWin::Compositor::s_compositor) -+ if (!KWin::Compositor::s_compositor || !interface->compositorResume) - return; - -- KWin::Compositor::s_compositor->resume(static_cast(type)); -+ interface->compositorResume(KWin::Compositor::s_compositor, static_cast(type)); - } - - void KWinUtils::SuspendCompositor(int type) - { -- if (!KWin::Compositor::s_compositor) -+ if (!KWin::Compositor::s_compositor || !interface->compositorSuspend) - return; - -- KWin::Compositor::s_compositor->suspend(static_cast(type)); -+ interface->compositorSuspend(KWin::Compositor::s_compositor, static_cast(type)); - } - - void KWinUtils::ShowAllWindowsView() diff --git a/sources b/sources index 55b1558..9cf96b8 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (dde-kwin-0.1.0.tar.gz) = ae670e9f7763df5d614b39e6e0752e04a8ff56cfedaac06272a3a626fe61b3be11cc68d17fb6e2758d50b55a8895e9932d4a70720fcecd8c0e26737aa35a6061 +SHA512 (dde-kwin-5.2.0.2.tar.gz) = 1d8243a4140f87f73b8bbf9a8b448a8d4bde9653d214382515493c306f47f2866a92b0fed049b26313a96898b18bd0e05a3e1c17eca53a68e82e7669a535ef7b