summaryrefslogtreecommitdiffstats
path: root/source/kde/kde/patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/kde/kde/patch')
-rw-r--r--source/kde/kde/patch/calligra.patch12
-rw-r--r--source/kde/kde/patch/calligra/calligra-gcc11.patch48
-rw-r--r--source/kde/kde/patch/calligra/calligra-openexr3.patch89
-rw-r--r--source/kde/kde/patch/calligra/calligra.poppler.GfxFont.patch11
-rw-r--r--source/kde/kde/patch/calligra/poppler-22.03.0.patch46
-rw-r--r--source/kde/kde/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch22
-rw-r--r--source/kde/kde/patch/calligra/upstream_Fix-some-more-warnings.patch443
-rw-r--r--source/kde/kde/patch/calligra/upstream_Partial-update-of-Commit-62f51070-to-make-it-compile.patch (renamed from source/kde/kde/patch/calligra/0053-Partial-update-of-Commit-62f51070-to-make-it-compile.patch)6
-rw-r--r--source/kde/kde/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch32
-rw-r--r--source/kde/kde/patch/calligra/upstream_Small-CMake-modernization.patch128
-rw-r--r--source/kde/kde/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch38
-rw-r--r--source/kde/kde/patch/dolphin.patch2
-rw-r--r--source/kde/kde/patch/dolphin/dolphin_revert_noroot.patch23
-rw-r--r--source/kde/kde/patch/drkonqi.patch1
-rw-r--r--source/kde/kde/patch/drkonqi/drkonqi.disable.kuserfeedback.patch46
-rw-r--r--source/kde/kde/patch/falkon.patch2
-rw-r--r--source/kde/kde/patch/falkon/falkon.qt-5.15.diff20
-rw-r--r--source/kde/kde/patch/kapidox.patch4
-rw-r--r--source/kde/kde/patch/kapidox/kapidox.CMakeLists.txt.diff39
-rw-r--r--source/kde/kde/patch/kate.patch3
-rw-r--r--source/kde/kde/patch/kate/kate_runasroot.patch44
-rw-r--r--source/kde/kde/patch/kdeconnect-kde.patch2
-rw-r--r--source/kde/kde/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff12
-rw-r--r--source/kde/kde/patch/kdewebkit.patch2
-rw-r--r--source/kde/kde/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch9
-rw-r--r--source/kde/kde/patch/kid3.patch1
-rw-r--r--source/kde/kde/patch/kid3/build-with-qt5.patch15
-rw-r--r--source/kde/kde/patch/kinfocenter.patch2
-rw-r--r--source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch17
-rw-r--r--source/kde/kde/patch/kmymoney.patch2
-rw-r--r--source/kde/kde/patch/kmymoney/kmymoney.akonadi.patch34
-rw-r--r--source/kde/kde/patch/konsole.patch1
-rw-r--r--source/kde/kde/patch/krename.patch1
-rw-r--r--source/kde/kde/patch/krename/krename.exiv2-0.28.diff11
-rw-r--r--source/kde/kde/patch/krita.patch1
-rw-r--r--source/kde/kde/patch/krita/sip-6.8.patch13
-rw-r--r--source/kde/kde/patch/kross-interpreters.patch1
-rw-r--r--source/kde/kde/patch/kross-interpreters/dump-python2.patch42
-rw-r--r--source/kde/kde/patch/kscreen.patch1
-rw-r--r--source/kde/kde/patch/kscreen/57.patch189
-rw-r--r--source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch654
-rw-r--r--source/kde/kde/patch/kwave.patch1
-rw-r--r--source/kde/kde/patch/kwave/kwave.gcc11.limits.patch10
-rw-r--r--source/kde/kde/patch/kwayland-server.patch1
-rw-r--r--source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch29
-rw-r--r--source/kde/kde/patch/kwin.patch1
-rw-r--r--source/kde/kde/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch26
-rw-r--r--source/kde/kde/patch/libkscreen.patch2
-rw-r--r--source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch240
-rw-r--r--source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch219
-rw-r--r--source/kde/kde/patch/plasma-nm.patch1
-rw-r--r--source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch82
-rw-r--r--source/kde/kde/patch/plasma-sdk.patch2
-rw-r--r--source/kde/kde/patch/plasma-workspace.patch4
-rw-r--r--source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch30
-rw-r--r--source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch38
-rw-r--r--source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch86
-rw-r--r--source/kde/kde/patch/plasma-workspace/70d23b89.patch52
-rw-r--r--source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch38
-rw-r--r--source/kde/kde/patch/sddm.patch14
-rw-r--r--source/kde/kde/patch/sddm/sddm.do.not.source.HOME.xsession.diff18
-rw-r--r--source/kde/kde/patch/sddm/sddm.fix.build.diff11
-rw-r--r--source/kde/kde/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff12
-rw-r--r--source/kde/kde/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch183
-rw-r--r--source/kde/kde/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch88
65 files changed, 1352 insertions, 1905 deletions
diff --git a/source/kde/kde/patch/calligra.patch b/source/kde/kde/patch/calligra.patch
index 380aaa942..a5a9d2047 100644
--- a/source/kde/kde/patch/calligra.patch
+++ b/source/kde/kde/patch/calligra.patch
@@ -1,4 +1,10 @@
-# Fix blank page in calligragemini
cat $CWD/patch/calligra/calligragemini_fix_blank_page_without_libgit2.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/calligra/0053-Partial-update-of-Commit-62f51070-to-make-it-compile.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/calligra/calligra-gcc11.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/calligra-openexr3.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/poppler-22.03.0.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/calligra.poppler.GfxFont.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/upstream_Partial-update-of-Commit-62f51070-to-make-it-compile.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/upstream_Fix-some-more-warnings.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/upstream_Small-CMake-modernization.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/calligra/calligra-gcc11.patch b/source/kde/kde/patch/calligra/calligra-gcc11.patch
deleted file mode 100644
index c47895822..000000000
--- a/source/kde/kde/patch/calligra/calligra-gcc11.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff --git a/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp b/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp
-index feac1c6..5739328 100644
---- a/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp
-+++ b/filters/sheets/excel/sidewinder/chartsubstreamhandler.cpp
-@@ -19,6 +19,7 @@
- Boston, MA 02110-1301, USA
- */
-
-+#include <limits>
- #include "chartsubstreamhandler.h"
- #include "globalssubstreamhandler.h"
- #include "worksheetsubstreamhandler.h"
-diff --git a/filters/sheets/excel/sidewinder/objects.cpp b/filters/sheets/excel/sidewinder/objects.cpp
-index 7531dd7..6cbca37 100644
---- a/filters/sheets/excel/sidewinder/objects.cpp
-+++ b/filters/sheets/excel/sidewinder/objects.cpp
-@@ -17,6 +17,7 @@
- Boston, MA 02110-1301, USA
- */
-
-+#include <limits>
- #include "objects.h"
-
- #include "generated/simpleParser.h"
-diff --git a/filters/sheets/excel/sidewinder/utils.h b/filters/sheets/excel/sidewinder/utils.h
-index 6e012b2..61d7624 100644
---- a/filters/sheets/excel/sidewinder/utils.h
-+++ b/filters/sheets/excel/sidewinder/utils.h
-@@ -23,6 +23,7 @@
-
- #include "value.h"
- #include <map>
-+#include <limits>
-
- #include <QString>
- #include <QUuid>
-diff --git a/filters/sheets/excel/sidewinder/value.cpp b/filters/sheets/excel/sidewinder/value.cpp
-index bfa3351..3007058 100644
---- a/filters/sheets/excel/sidewinder/value.cpp
-+++ b/filters/sheets/excel/sidewinder/value.cpp
-@@ -17,6 +17,7 @@
- * Boston, MA 02110-1301, USA
- */
-
-+#include <limits>
- #include "value.h"
- #include "utils.h"
-
diff --git a/source/kde/kde/patch/calligra/calligra-openexr3.patch b/source/kde/kde/patch/calligra/calligra-openexr3.patch
new file mode 100644
index 000000000..98d8bf7fa
--- /dev/null
+++ b/source/kde/kde/patch/calligra/calligra-openexr3.patch
@@ -0,0 +1,89 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8955357ff97..ea56c84bb11 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -363,8 +363,13 @@ endif ()
+ ## Check for OpenEXR
+ ##
+
+-macro_optional_find_package(OpenEXR)
+-macro_bool_to_01(OPENEXR_FOUND HAVE_OPENEXR)
++macro_optional_find_package(Imath 3.0 CONFIG QUIET)
++if(TARGET Imath::Imath)
++ set(OPENEXR_LIBRARIES Imath::Imath)
++else()
++ macro_optional_find_package(OpenEXR)
++endif()
++macro_bool_to_01(OpenEXR_FOUND HAVE_OPENEXR)
+
+ ##
+ ## Test for GNU Scientific Library
+diff --git a/libs/pigment/CMakeLists.txt b/libs/pigment/CMakeLists.txt
+index a039251e2ad..6eb6a8e70b6 100644
+--- a/libs/pigment/CMakeLists.txt
++++ b/libs/pigment/CMakeLists.txt
+@@ -12,7 +12,7 @@ include_directories( ${PIGMENT_INCLUDES} ${Boost_INCLUDE_DIR})
+
+ set(FILE_OPENEXR_SOURCES)
+ set(LINK_OPENEXR_LIB)
+-if(OPENEXR_FOUND)
++if(OpenEXR_FOUND)
+ include_directories(${OPENEXR_INCLUDE_DIR})
+ set(LINK_OPENEXR_LIB ${OPENEXR_LIBRARIES})
+ add_definitions(${OPENEXR_DEFINITIONS})
+diff --git a/plugins/colorengines/lcms2/CMakeLists.txt b/plugins/colorengines/lcms2/CMakeLists.txt
+index 77807ff9702..920adbeaf87 100644
+--- a/plugins/colorengines/lcms2/CMakeLists.txt
++++ b/plugins/colorengines/lcms2/CMakeLists.txt
+@@ -31,7 +31,7 @@ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}/colorprofiles
+ )
+
+-if (HAVE_LCMS24 AND OPENEXR_FOUND)
++if (HAVE_LCMS24 AND OpenEXR_FOUND)
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}/colorspaces/gray_f16
+ ${CMAKE_CURRENT_SOURCE_DIR}/colorspaces/rgb_f16
+@@ -41,7 +41,7 @@ endif ()
+
+ set(FILE_OPENEXR_SOURCES)
+ set(LINK_OPENEXR_LIB)
+-if(OPENEXR_FOUND)
++if(OpenEXR_FOUND)
+ include_directories(${OPENEXR_INCLUDE_DIR})
+ set(LINK_OPENEXR_LIB ${OPENEXR_LIBRARIES})
+ add_definitions(${OPENEXR_DEFINITIONS})
+@@ -80,7 +80,7 @@ set ( lcmsengine_SRCS
+ LcmsEnginePlugin.cpp
+ )
+
+-if (HAVE_LCMS24 AND OPENEXR_FOUND)
++if (HAVE_LCMS24 AND OpenEXR_FOUND)
+ set ( lcmsengine_SRCS
+ ${lcmsengine_SRCS}
+ colorspaces/gray_f16/GrayF16ColorSpace.cpp
+diff --git a/plugins/colorengines/lcms2/tests/CMakeLists.txt b/plugins/colorengines/lcms2/tests/CMakeLists.txt
+index 2540acc834c..77bd0b3fe4a 100644
+--- a/plugins/colorengines/lcms2/tests/CMakeLists.txt
++++ b/plugins/colorengines/lcms2/tests/CMakeLists.txt
+@@ -12,7 +12,7 @@ include_directories( ../colorspaces/cmyk_u16
+ ../colorprofiles
+ ..
+ )
+-if(OPENEXR_FOUND)
++if(OpenEXR_FOUND)
+ include_directories(${OPENEXR_INCLUDE_DIR})
+ endif()
+ include_directories( ${PIGMENT_INCLUDES} ${LCMS2_INCLUDE_DIR} )
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4a77c4be50b..89636205c2b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -341,6 +341,7 @@ endif ()
+ macro_optional_find_package(Imath 3.0 CONFIG QUIET)
+ if(TARGET Imath::Imath)
+ set(OPENEXR_LIBRARIES Imath::Imath)
++ set(OpenEXR_FOUND TRUE)
+ else()
+ macro_optional_find_package(OpenEXR)
+ endif()
diff --git a/source/kde/kde/patch/calligra/calligra.poppler.GfxFont.patch b/source/kde/kde/patch/calligra/calligra.poppler.GfxFont.patch
new file mode 100644
index 000000000..071f6f6c8
--- /dev/null
+++ b/source/kde/kde/patch/calligra/calligra.poppler.GfxFont.patch
@@ -0,0 +1,11 @@
+--- ./filters/karbon/pdf/SvgOutputDev.cpp.orig 2020-05-14 01:51:30.000000000 -0500
++++ ./filters/karbon/pdf/SvgOutputDev.cpp 2022-05-02 01:24:57.902177123 -0500
+@@ -410,7 +410,7 @@
+ if (s->getLength() == 0)
+ return;
+
+- GfxFont * font = state->getFont();
++ std::shared_ptr<GfxFont> font = state->getFont();
+
+ QString str;
+
diff --git a/source/kde/kde/patch/calligra/poppler-22.03.0.patch b/source/kde/kde/patch/calligra/poppler-22.03.0.patch
new file mode 100644
index 000000000..a20747df5
--- /dev/null
+++ b/source/kde/kde/patch/calligra/poppler-22.03.0.patch
@@ -0,0 +1,46 @@
+diff -uprw calligra-3.2.1.orig/filters/karbon/pdf/CMakeLists.txt calligra-3.2.1/filters/karbon/pdf/CMakeLists.txt
+--- calligra-3.2.1.orig/filters/karbon/pdf/CMakeLists.txt 2020-05-14 09:51:30.000000000 +0300
++++ calligra-3.2.1/filters/karbon/pdf/CMakeLists.txt 2022-03-02 12:19:08.039939530 +0200
+@@ -14,6 +14,10 @@ if(Poppler_VERSION VERSION_LESS "0.83.0"
+ add_definitions("-DHAVE_POPPLER_PRE_0_83")
+ endif()
+
++if(Poppler_VERSION VERSION_LESS "22.3.0")
++ add_definitions("-DHAVE_POPPLER_PRE_22_3")
++endif()
++
+ set(pdf2svg_PART_SRCS PdfImportDebug.cpp PdfImport.cpp SvgOutputDev.cpp )
+
+ add_library(calligra_filter_pdf2svg MODULE ${pdf2svg_PART_SRCS})
+diff -uprw calligra-3.2.1.orig/filters/karbon/pdf/Pdf2OdgImport.cpp calligra-3.2.1/filters/karbon/pdf/Pdf2OdgImport.cpp
+--- calligra-3.2.1.orig/filters/karbon/pdf/Pdf2OdgImport.cpp 2020-05-14 09:51:30.000000000 +0300
++++ calligra-3.2.1/filters/karbon/pdf/Pdf2OdgImport.cpp 2022-03-02 12:20:35.125605950 +0200
+@@ -86,8 +86,12 @@ KoFilter::ConversionStatus Pdf2OdgImport
+ if (! globalParams)
+ return KoFilter::NotImplemented;
+
++#ifdef HAVE_POPPLER_PRE_22_3
+ GooString * fname = new GooString(QFile::encodeName(m_chain->inputFile()).data());
+ PDFDoc * pdfDoc = new PDFDoc(fname, 0, 0, 0);
++#else
++ PDFDoc * pdfDoc = new PDFDoc(std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data()));
++#endif
+ if (! pdfDoc) {
+ #ifdef HAVE_POPPLER_PRE_0_83
+ delete globalParams;
+diff -uprw calligra-3.2.1.orig/filters/karbon/pdf/PdfImport.cpp calligra-3.2.1/filters/karbon/pdf/PdfImport.cpp
+--- calligra-3.2.1.orig/filters/karbon/pdf/PdfImport.cpp 2020-05-14 09:51:30.000000000 +0300
++++ calligra-3.2.1/filters/karbon/pdf/PdfImport.cpp 2022-03-02 12:21:46.197510028 +0200
+@@ -73,8 +73,12 @@ KoFilter::ConversionStatus PdfImport::co
+ if (! globalParams)
+ return KoFilter::NotImplemented;
+
++#ifdef HAVE_POPPLER_PRE_22_3
+ GooString * fname = new GooString(QFile::encodeName(m_chain->inputFile()).data());
+ PDFDoc * pdfDoc = new PDFDoc(fname, 0, 0, 0);
++#else
++ PDFDoc * pdfDoc = new PDFDoc(std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data()));
++#endif
+ if (! pdfDoc) {
+ #ifdef HAVE_POPPLER_PRE_0_83
+ delete globalParams;
diff --git a/source/kde/kde/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch b/source/kde/kde/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch
new file mode 100644
index 000000000..7074bfcd1
--- /dev/null
+++ b/source/kde/kde/patch/calligra/upstream_Fix-compile-with-newer-versions-of-poppler.patch
@@ -0,0 +1,22 @@
+From 2f220c6d1418ce7fa509e0dc598a67e66908cbd3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=96mer=20Fad=C4=B1l=20Usta?= <omerusta@gmail.com>
+Date: Fri, 25 Feb 2022 15:52:31 +0000
+Subject: [PATCH] Fix compile with newer versions of poppler
+
+---
+ CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -149,6 +149,10 @@ calligra_set_productset(${PRODUCTSET})
+ set(REQUIRED_KF5_VERSION "5.7.0")
+ set(REQUIRED_QT_VERSION "5.3.0")
+
++set(CMAKE_CXX_STANDARD 17)
++set(CMAKE_CXX_STANDARD_REQUIRED ON)
++set(CMAKE_CXX_EXTENSIONS OFF)
++
+ find_package(ECM 5.19 REQUIRED NO_MODULE)
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
+
diff --git a/source/kde/kde/patch/calligra/upstream_Fix-some-more-warnings.patch b/source/kde/kde/patch/calligra/upstream_Fix-some-more-warnings.patch
new file mode 100644
index 000000000..0b878b3bd
--- /dev/null
+++ b/source/kde/kde/patch/calligra/upstream_Fix-some-more-warnings.patch
@@ -0,0 +1,443 @@
+From 068cd9aec11052733e393976142516d2190e4564 Mon Sep 17 00:00:00 2001
+From: Pierre Ducroquet <pinaraf@pinaraf.info>
+Date: Sun, 28 Feb 2021 23:23:02 +0100
+Subject: [PATCH] Fix some more warnings
+
+---
+ filters/libmsooxml/MsooXmlDiagramReader_p.cpp | 1 +
+ filters/sheets/csv/csvimport.cc | 2 +-
+ filters/sheets/excel/sidewinder/excel.cpp | 1 +
+ filters/sheets/excel/sidewinder/formulas.cpp | 2 +-
+ filters/sheets/gnumeric/gnumericexport.cc | 5 ++---
+ filters/sheets/html/htmlexport.cc | 2 --
+ filters/sheets/latex/export/latexexport.cc | 1 -
+ filters/sheets/latex/export/table.cc | 1 +
+ filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp | 1 -
+ filters/stage/pptx/PptxXmlDocumentReader.cpp | 2 +-
+ filters/words/msword-odf/texthandler.cpp | 2 ++
+ filters/words/msword-odf/wv2/src/parser9x.cpp | 4 +++-
+ filters/words/msword-odf/wv2/src/styles.cpp | 4 +---
+ filters/words/msword-odf/wv2/src/styles.h | 11 ++++++++---
+ gemini/lib/GeminiMainWindow.cpp | 2 ++
+ libs/pageapp/KoPAOdfPageSaveHelper.cpp | 2 +-
+ plugins/spacenavigator/SpaceNavigatorDevice.h | 6 ++----
+ plugins/spacenavigator/SpaceNavigatorEvent.h | 2 +-
+ plugins/spacenavigator/SpaceNavigatorPollingThread.h | 3 +--
+ plugins/vectorshape/VectorShape.cpp | 1 +
+ sheets/functions/datetime.cpp | 1 +
+ sheets/part/Digest.cpp | 8 ++++----
+ sheets/shape/TableToolFactory.h | 2 +-
+ sheets/tests/TestSort.cpp | 4 ++--
+ 24 files changed, 38 insertions(+), 32 deletions(-)
+
+diff --git a/filters/libmsooxml/MsooXmlDiagramReader_p.cpp b/filters/libmsooxml/MsooXmlDiagramReader_p.cpp
+index 14b08531262..14fc6ab9a71 100644
+--- a/filters/libmsooxml/MsooXmlDiagramReader_p.cpp
++++ b/filters/libmsooxml/MsooXmlDiagramReader_p.cpp
+@@ -872,6 +872,7 @@ void LayoutNodeAtom::finishBuild(Context* context) {
+ case AlgorithmAtom::UnknownAlg:
+ warnMsooXml << "Layout with name=" << m_name << "defines an unknown algorithm.";
+ // fall through and use the composite-algorithm
++ // fall through
+ case AlgorithmAtom::CompositeAlg: m_algorithmImpl = new CompositeAlgorithm; break;
+ case AlgorithmAtom::ConnectorAlg: m_algorithmImpl = new ConnectorAlgorithm; break;
+ case AlgorithmAtom::CycleAlg: m_algorithmImpl = new CycleAlgorithm; break;
+diff --git a/filters/sheets/csv/csvimport.cc b/filters/sheets/csv/csvimport.cc
+index 89fb7162e00..1008d186f18 100644
+--- a/filters/sheets/csv/csvimport.cc
++++ b/filters/sheets/csv/csvimport.cc
+@@ -97,8 +97,8 @@ KoFilter::ConversionStatus CSVFilter::convert(const QByteArray& from, const QByt
+ return KoFilter::FileNotFound;
+ }
+
+- QString csv_delimiter;
+ // ###### FIXME: disabled for now
++ //QString csv_delimiter;
+ //if (!config.isNull())
+ // csv_delimiter = config[0];
+
+diff --git a/filters/sheets/excel/sidewinder/excel.cpp b/filters/sheets/excel/sidewinder/excel.cpp
+index ab592225ca6..7fa5633d433 100644
+--- a/filters/sheets/excel/sidewinder/excel.cpp
++++ b/filters/sheets/excel/sidewinder/excel.cpp
+@@ -2449,6 +2449,7 @@ bool ExcelReader::load(Workbook* workbook, const char* filename)
+ } else {
+ bytes_read = combObjStream->read( buffer, markerOrLength );
+ QString ansiString = readByteString(buffer, markerOrLength);
++ Q_UNUSED(ansiString);
+ //TODO...
+ //printf( "markerOrLength=%i ansiString=%s\n",markerOrLength,ansiString.ascii() );
+ }
+diff --git a/filters/sheets/excel/sidewinder/formulas.cpp b/filters/sheets/excel/sidewinder/formulas.cpp
+index 62747469a49..0132d39e024 100644
+--- a/filters/sheets/excel/sidewinder/formulas.cpp
++++ b/filters/sheets/excel/sidewinder/formulas.cpp
+@@ -1513,7 +1513,7 @@ static void mergeTokens(UStringStack* stack, unsigned count, const QString &merg
+ if (!stack) return;
+ if (stack->size() < count) return;
+
+- QString s1, s2;
++ QString s1;
+
+ while (count) {
+ count--;
+diff --git a/filters/sheets/gnumeric/gnumericexport.cc b/filters/sheets/gnumeric/gnumericexport.cc
+index 1256c68bc74..2468548edb3 100644
+--- a/filters/sheets/gnumeric/gnumericexport.cc
++++ b/filters/sheets/gnumeric/gnumericexport.cc
+@@ -1293,15 +1293,13 @@ KoFilter::ConversionStatus GNUMERICExport::convert(const QByteArray& from, const
+ i = 0;
+ }
+
+- QString line;
+ for (int currentcolumn = 1; currentcolumn <= iMaxColumn; currentcolumn++) {
+ QDomElement cell_contents;
+ Cell cell(table, currentcolumn, currentrow);
+
+- QString text, style;
++ QString text;
+ QDomDocument domLink;
+ QDomElement domRoot;
+- QDomNode domNode;
+ QDomNodeList childNodes;
+
+ if (!cell.isDefault() && !cell.isEmpty()) {
+@@ -1342,6 +1340,7 @@ KoFilter::ConversionStatus GNUMERICExport::convert(const QByteArray& from, const
+ text = domNode.toElement().text();
+
+ while (!domNode.isNull()) {
++ QString style;
+ style = domNode.toElement().tagName();
+
+ if (style == "b")
+diff --git a/filters/sheets/html/htmlexport.cc b/filters/sheets/html/htmlexport.cc
+index 2d116e0608c..bf41a6f743e 100644
+--- a/filters/sheets/html/htmlexport.cc
++++ b/filters/sheets/html/htmlexport.cc
+@@ -242,7 +242,6 @@ void HTMLExport::convertSheet(Sheet *sheet, QString &str, int iMaxUsedRow, int i
+ i = 0;
+ }
+
+- QString separators;
+ QString line;
+ unsigned int nonempty_cells = 0;
+
+@@ -435,7 +434,6 @@ void HTMLExport::detectFilledCells(Sheet *sheet, int &rows, int &columns)
+ int iUsedColumn = 0;
+ for (int currentcolumn = 1 ; currentcolumn <= iMaxColumn ; currentcolumn++) {
+ cell = Cell(sheet, currentcolumn, currentrow);
+- QString text;
+ if (!cell.isDefault() && !cell.isEmpty()) {
+ iUsedColumn = currentcolumn;
+ }
+diff --git a/filters/sheets/latex/export/latexexport.cc b/filters/sheets/latex/export/latexexport.cc
+index 8d0698a3420..4f8caf235d9 100644
+--- a/filters/sheets/latex/export/latexexport.cc
++++ b/filters/sheets/latex/export/latexexport.cc
+@@ -38,7 +38,6 @@ LATEXExport::LATEXExport(QObject* parent, const QVariantList&) :
+
+ KoFilter::ConversionStatus LATEXExport::convert(const QByteArray& from, const QByteArray& to)
+ {
+- QString config;
+
+ if (to != "text/x-tex" || from != "application/x-kspread")
+ return KoFilter::NotImplemented;
+diff --git a/filters/sheets/latex/export/table.cc b/filters/sheets/latex/export/table.cc
+index 8d8b6701a39..e58827dfbc7 100644
+--- a/filters/sheets/latex/export/table.cc
++++ b/filters/sheets/latex/export/table.cc
+@@ -118,6 +118,7 @@ void Table::analyzePaper(const QDomNode node)
+
+ /* borders */
+ QDomNode border = getChild(node, "borders");
++ Q_UNUSED(border);
+ setBorderRight(getAttr(node, "right").toLong());
+ setBorderLeft(getAttr(node, "left").toLong());
+ setBorderBottom(getAttr(node, "bottom").toLong());
+diff --git a/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp b/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp
+index 782a5914729..eda8ffc6b47 100644
+--- a/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp
++++ b/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp
+@@ -872,7 +872,6 @@ KoFilter::ConversionStatus XlsxXmlWorksheetReader::read_conditionalFormatting()
+ while (index < m_conditionalIndices.size()) {
+ QString conditionalArea;
+ Condition examinedCondition = m_conditionalIndices.at(index);
+- QString sqrefOriginal = sqref;
+ int areaIndex = 0;
+ Condition previousCond;
+
+diff --git a/filters/stage/pptx/PptxXmlDocumentReader.cpp b/filters/stage/pptx/PptxXmlDocumentReader.cpp
+index 4cf86aea8c8..11b5ad266b9 100644
+--- a/filters/stage/pptx/PptxXmlDocumentReader.cpp
++++ b/filters/stage/pptx/PptxXmlDocumentReader.cpp
+@@ -316,7 +316,7 @@ KoFilter::ConversionStatus PptxXmlDocumentReader::read_sldId()
+
+ QString slideMasterPath, slideMasterFile;
+ MSOOXML::Utils::splitPathAndFile(m_context->relationships->targetForType(slidePath, slideFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideLayout"), &slideMasterPath, &slideMasterFile);
+- const QString slideMasterPathAndFile = m_context->relationships->targetForType(slideMasterPath, slideMasterFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideMaster");
++ // const QString slideMasterPathAndFile = m_context->relationships->targetForType(slideMasterPath, slideMasterFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideMaster");
+
+ // Delay the reading of a tableStyle until we find a table as we need the
+ // clrMap from the master slide
+diff --git a/filters/words/msword-odf/texthandler.cpp b/filters/words/msword-odf/texthandler.cpp
+index e167d86e028..89ef678961a 100644
+--- a/filters/words/msword-odf/texthandler.cpp
++++ b/filters/words/msword-odf/texthandler.cpp
+@@ -408,6 +408,7 @@ void WordsTextHandler::footnoteFound(wvWare::FootnoteData data,
+ }
+ case msonfcUCLetter:
+ letter = 'A';
++ // fall through
+ case msonfcLCLetter:
+ {
+ while (noteNumber / 25 > 0) {
+@@ -1064,6 +1065,7 @@ void WordsTextHandler::fieldStart(const wvWare::FLD* fld, wvWare::SharedPtr<cons
+ break;
+ case UNSUPPORTED:
+ warnMsDoc << "Warning: Fld data missing, ignoring!";
++ // fall through
+ default:
+ warnMsDoc << "Warning: unrecognized field type, ignoring!";
+ m_fld->m_type = UNSUPPORTED;
+diff --git a/filters/words/msword-odf/wv2/src/parser9x.cpp b/filters/words/msword-odf/wv2/src/parser9x.cpp
+index 9a6d1606ce9..e5d7d14691c 100644
+--- a/filters/words/msword-odf/wv2/src/parser9x.cpp
++++ b/filters/words/msword-odf/wv2/src/parser9x.cpp
+@@ -581,7 +581,8 @@ void Parser9x::processPiece( String* string, U32 fc, U32 limit, const Position&
+ // same ASCII code as TTP_MARK (0x0007), NOTE: table depth == 1
+ case CELL_MARK:
+ m_cellMarkFound = true;
+- // Fall-through intended. A row/cell end is also a paragraph end.
++ // A row/cell end is also a paragraph end.
++ // fall through
+ case PARAGRAPH_MARK:
+ {
+ // No "index - start + 1" here, as we don't want to copy the
+@@ -1064,6 +1065,7 @@ void Parser9x::emitSpecialCharacter( UChar character, U32 globalCP, SharedPtr<co
+ if (m_subDocument == Main) {
+ emitAnnotation( UString(character), globalCP, chp );
+ }
++ break;
+ }
+ case TextHandler::FieldEscapeChar:
+ wvlog << "Found an escape character ++++++++++++++++++++?" << endl;
+diff --git a/filters/words/msword-odf/wv2/src/styles.cpp b/filters/words/msword-odf/wv2/src/styles.cpp
+index f47c3dd8d51..d2c96e3d92b 100644
+--- a/filters/words/msword-odf/wv2/src/styles.cpp
++++ b/filters/words/msword-odf/wv2/src/styles.cpp
+@@ -42,7 +42,6 @@ STD::STD()
+ }
+
+ STD::STD( U16 baseSize, U16 totalSize, OLEStreamReader* stream, bool preservePos )
+-throw(InvalidFormatException)
+ {
+ clearInternal();
+ if (!read( baseSize, totalSize, stream, preservePos )) {
+@@ -112,7 +111,6 @@ STD& STD::operator=( const STD& rhs )
+ }
+
+ bool STD::read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos )
+-throw(InvalidFormatException)
+ {
+ U16 shifterU16;
+ S32 startOffset=stream->tell(); // address where the STD starts
+@@ -938,7 +936,7 @@ void Style::mergeUpechpx( const Style* parentStyle, WordVersion version )
+ }
+
+
+-StyleSheet::StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf ) throw(InvalidFormatException)
++StyleSheet::StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf )
+ : m_udsNum(0)
+ {
+ WordVersion version = Word8;
+diff --git a/filters/words/msword-odf/wv2/src/styles.h b/filters/words/msword-odf/wv2/src/styles.h
+index ba02def6845..41c8278dd21 100644
+--- a/filters/words/msword-odf/wv2/src/styles.h
++++ b/filters/words/msword-odf/wv2/src/styles.h
+@@ -58,8 +58,9 @@ struct STD
+ STD();
+ /**
+ * Simply calls read(...)
++ * @throw InvalidFormatException
+ */
+- STD( U16 stdfSize, U16 totalSize, OLEStreamReader* stream, bool preservePos = false ) throw(InvalidFormatException);
++ STD( U16 stdfSize, U16 totalSize, OLEStreamReader* stream, bool preservePos = false );
+ /**
+ * Attention: This struct allocates memory on the heap
+ */
+@@ -74,8 +75,9 @@ struct STD
+ * false the state of stream will be changed!
+ *
+ * @return true - success, false - failed
++ * @throw InvalidFormatException
+ */
+- bool read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos = false ) throw(InvalidFormatException);
++ bool read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos = false );
+
+ /**
+ * Same as reading :)
+@@ -365,7 +367,10 @@ private:
+ class WV2_EXPORT StyleSheet
+ {
+ public:
+- StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf ) throw(InvalidFormatException);
++ /**
++ * @throw InvalidFormatException
++ */
++ StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf );
+ ~StyleSheet();
+
+ /**
+diff --git a/gemini/lib/GeminiMainWindow.cpp b/gemini/lib/GeminiMainWindow.cpp
+index 3d05f6461e0..eb5f120c0f7 100644
+--- a/gemini/lib/GeminiMainWindow.cpp
++++ b/gemini/lib/GeminiMainWindow.cpp
+@@ -136,8 +136,10 @@ void GeminiMainWindow::setFullScreen(bool newState)
+ }
+
+
++
+ void GeminiMainWindow::changeState(GeminiMainWindow::GeminiState newState, bool lockNewState)
+ {
++ Q_UNUSED(lockNewState);
+ d->syncObject = new GeminiModeSynchronisationObject;
+
+ if(centralWidget()) {
+diff --git a/libs/pageapp/KoPAOdfPageSaveHelper.cpp b/libs/pageapp/KoPAOdfPageSaveHelper.cpp
+index 92c6dfd4cb4..068501c8af1 100644
+--- a/libs/pageapp/KoPAOdfPageSaveHelper.cpp
++++ b/libs/pageapp/KoPAOdfPageSaveHelper.cpp
+@@ -49,7 +49,7 @@ KoPAOdfPageSaveHelper::KoPAOdfPageSaveHelper( KoPADocument * doc, QList<KoPAPage
+ KoPAPage * p = static_cast<KoPAPage *>( page );
+ masterPages.insert( p->masterPage() );
+ }
+- m_masterPages = masterPages.toList();
++ m_masterPages = masterPages.values();
+ }
+ }
+
+diff --git a/plugins/spacenavigator/SpaceNavigatorDevice.h b/plugins/spacenavigator/SpaceNavigatorDevice.h
+index b9056ac98c1..ecd696e415f 100644
+--- a/plugins/spacenavigator/SpaceNavigatorDevice.h
++++ b/plugins/spacenavigator/SpaceNavigatorDevice.h
+@@ -31,10 +31,8 @@ public:
+ explicit SpaceNavigatorDevice(QObject *parent);
+ virtual ~SpaceNavigatorDevice();
+
+- /// reimplemented from KoInputDeviceHandler
+- virtual bool start();
+- /// reimplemented from KoInputDeviceHandler
+- virtual bool stop();
++ virtual bool start() override;
++ virtual bool stop() override;
+ private Q_SLOTS:
+ void slotMoveEvent( int x, int y, int z, int rx, int ry, int rz, Qt::MouseButtons );
+ void slotButtonEvent( int x, int y, int z, int rx, int ry, int rz, Qt::MouseButtons, Qt::MouseButton, int type );
+diff --git a/plugins/spacenavigator/SpaceNavigatorEvent.h b/plugins/spacenavigator/SpaceNavigatorEvent.h
+index 73751ec88ff..76ee8e2f880 100644
+--- a/plugins/spacenavigator/SpaceNavigatorEvent.h
++++ b/plugins/spacenavigator/SpaceNavigatorEvent.h
+@@ -33,7 +33,7 @@ public:
+ void setPosition( int x, int y, int z );
+ void setRotation( int rx, int ry, int rz );
+
+- virtual KoPointerEvent * pointerEvent();
++ virtual KoPointerEvent * pointerEvent() override;
+
+ private:
+ int m_x, m_y, m_z;
+diff --git a/plugins/spacenavigator/SpaceNavigatorPollingThread.h b/plugins/spacenavigator/SpaceNavigatorPollingThread.h
+index 62c4de8ab73..67d59177021 100644
+--- a/plugins/spacenavigator/SpaceNavigatorPollingThread.h
++++ b/plugins/spacenavigator/SpaceNavigatorPollingThread.h
+@@ -39,8 +39,7 @@ Q_SIGNALS:
+
+ protected:
+
+- /// reimplemented from QThread
+- virtual void run();
++ virtual void run() override;
+
+ private:
+ bool m_stopped;
+diff --git a/plugins/vectorshape/VectorShape.cpp b/plugins/vectorshape/VectorShape.cpp
+index a25ab3fc561..9acbd251c94 100644
+--- a/plugins/vectorshape/VectorShape.cpp
++++ b/plugins/vectorshape/VectorShape.cpp
+@@ -294,6 +294,7 @@ void VectorShape::saveOdf(KoShapeSavingContext & context) const
+ break;
+ case VectorTypeSvg:
+ mimeType = "image/svg+xml";
++ break;
+ default:
+ // FIXME: What here?
+ mimeType = "application/x-what";
+diff --git a/sheets/functions/datetime.cpp b/sheets/functions/datetime.cpp
+index 9f59fe2cf75..6157b0996c1 100644
+--- a/sheets/functions/datetime.cpp
++++ b/sheets/functions/datetime.cpp
+@@ -597,6 +597,7 @@ Value func_currentDate(valVector, ValueCalc * calc, FuncExtra *)
+ // Function: CURRENTTIME
+ Value func_currentTime(valVector, ValueCalc * calc, FuncExtra *)
+ {
++ Q_UNUSED(calc);
+ return Value(QTime::currentTime());
+ }
+
+diff --git a/sheets/part/Digest.cpp b/sheets/part/Digest.cpp
+index 8cd972db989..e9246ce6e7d 100644
+--- a/sheets/part/Digest.cpp
++++ b/sheets/part/Digest.cpp
+@@ -596,10 +596,10 @@ static void __rtl_digest_endSHA(DigestContextSHA *ctx)
+ }
+
+ switch (ctx->m_nDatLen & 0x03) {
+- case 0: X[i] = ((sal_uInt32)(*(p++))) << 0L;
+- case 1: X[i] |= ((sal_uInt32)(*(p++))) << 8L;
+- case 2: X[i] |= ((sal_uInt32)(*(p++))) << 16L;
+- case 3: X[i] |= ((sal_uInt32)(*(p++))) << 24L;
++ case 0: X[i] = ((sal_uInt32)(*(p++))) << 0L; /* fall through */
++ case 1: X[i] |= ((sal_uInt32)(*(p++))) << 8L; /* fall through */
++ case 2: X[i] |= ((sal_uInt32)(*(p++))) << 16L; /* fall through */
++ case 3: X[i] |= ((sal_uInt32)(*(p++))) << 24L; /* fall through */
+ }
+
+ __rtl_digest_swapLong(X, i + 1);
+diff --git a/sheets/shape/TableToolFactory.h b/sheets/shape/TableToolFactory.h
+index 679bfe14b8e..9412d8ffdc5 100644
+--- a/sheets/shape/TableToolFactory.h
++++ b/sheets/shape/TableToolFactory.h
+@@ -34,7 +34,7 @@ public:
+ TableToolFactory();
+ ~TableToolFactory();
+
+- KoToolBase* createTool(KoCanvasBase* canvas);
++ KoToolBase* createTool(KoCanvasBase* canvas) override;
+ };
+
+ } // namespace Sheets
+diff --git a/sheets/tests/TestSort.cpp b/sheets/tests/TestSort.cpp
+index b3f1e35169d..6354d79abc5 100644
+--- a/sheets/tests/TestSort.cpp
++++ b/sheets/tests/TestSort.cpp
+@@ -68,7 +68,7 @@ void TestSort::AscendingOrder()
+ command->setSheet(sheet);
+
+ // Parameters.
+- command->setSortRows(Qt::Vertical);
++ command->setSortRows(true);
+ command->setSkipFirst(false);
+ command->setCopyFormat(false);
+
+@@ -121,7 +121,7 @@ void TestSort::DescendingOrder()
+ command->setSheet(sheet);
+
+ // Parameters.
+- command->setSortRows(Qt::Vertical);
++ command->setSortRows(true);
+ command->setSkipFirst(false);
+ command->setCopyFormat(false);
+
+--
+2.35.1
+
diff --git a/source/kde/kde/patch/calligra/0053-Partial-update-of-Commit-62f51070-to-make-it-compile.patch b/source/kde/kde/patch/calligra/upstream_Partial-update-of-Commit-62f51070-to-make-it-compile.patch
index 46f6dd044..3715f3108 100644
--- a/source/kde/kde/patch/calligra/0053-Partial-update-of-Commit-62f51070-to-make-it-compile.patch
+++ b/source/kde/kde/patch/calligra/upstream_Partial-update-of-Commit-62f51070-to-make-it-compile.patch
@@ -1,8 +1,8 @@
From c7636fb343c848000300a9429410b74d17a4d54d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=96mer=20Fad=C4=B1l=20Usta?= <omerusta@gmail.com>
Date: Tue, 8 Jun 2021 05:13:23 +0000
-Subject: [PATCH 53/54] Partial update of Commit 62f51070 to make it
- compileable again
+Subject: [PATCH] Partial update of Commit 62f51070 to make it compileable
+ again
Cmake to 3.16
Fix Fontconfig's FOUND variable
@@ -82,5 +82,5 @@ index 16d7e066fa2..429afe79704 100644
--
-2.31.1
+2.33.0
diff --git a/source/kde/kde/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch b/source/kde/kde/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch
new file mode 100644
index 000000000..3ab8279c3
--- /dev/null
+++ b/source/kde/kde/patch/calligra/upstream_Remove-old-std-c-11-setting-for-Vc.patch
@@ -0,0 +1,32 @@
+From 19584bed9588860047e3bd04e3fd2cf7e36adc3a Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+Date: Sat, 8 Jan 2022 11:28:37 +0000
+Subject: [PATCH] Remove old -std=c++11 setting for Vc
+
+This is set by ECM nowadays, and causes issues when a newer standard is needed (eg. for latest poppler)
+---
+ CMakeLists.txt | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 3a86ec88f7d..9e87b9bda89 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -520,14 +520,6 @@ if (BUILD_VC)
+ set(ADDITIONAL_VC_FLAGS "-Wabi -fabi-version=0 -ffp-contract=fast -fPIC")
+ endif()
+
+- #Handle Vc master
+- if(Vc_COMPILER_IS_GCC OR Vc_COMPILER_IS_CLANG)
+- AddCompilerFlag("-std=c++11" _ok)
+- if(NOT _ok)
+- AddCompilerFlag("-std=c++0x" _ok)
+- endif()
+- endif()
+-
+ macro(ko_compile_for_all_implementations_no_scalar _objs _src)
+ if(PACKAGERS_BUILD)
+ vc_compile_for_all_implementations(${_objs} ${_src} FLAGS ${ADDITIONAL_VC_FLAGS} ONLY SSE2 SSSE3 SSE4_1 AVX AVX2+FMA+BMI2)
+--
+2.35.1
+
diff --git a/source/kde/kde/patch/calligra/upstream_Small-CMake-modernization.patch b/source/kde/kde/patch/calligra/upstream_Small-CMake-modernization.patch
new file mode 100644
index 000000000..c309a99d6
--- /dev/null
+++ b/source/kde/kde/patch/calligra/upstream_Small-CMake-modernization.patch
@@ -0,0 +1,128 @@
+From 2ac46db52c6ad401f67ae5b5fcd859a5872f0311 Mon Sep 17 00:00:00 2001
+From: Pierre Ducroquet <pinaraf@pinaraf.info>
+Date: Sat, 1 May 2021 15:08:57 +0200
+Subject: [PATCH] Small CMake modernization
+
+Since we are now on CMake 3.2+, we can simplify policies.
+And in order to simplify further, remove our use of
+deprecated features in CMake.
+---
+ CMakeLists.txt | 21 +------------------
+ cmake/modules/MacroCalligraAddBenchmark.cmake | 2 +-
+ filters/words/msword-odf/wv2/CMakeLists.txt | 7 +------
+ .../wv2/src/generator/CMakeLists.txt | 7 +------
+ .../rtf/import/3rdparty/rtf-qt/CMakeLists.txt | 7 +------
+ 5 files changed, 5 insertions(+), 39 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fe6502493ed..b237f68fcb6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -4,24 +4,9 @@ project(calligra)
+
+ message(STATUS "Using CMake version: ${CMAKE_VERSION}")
+
+-if (POLICY CMP0002)
+- cmake_policy(SET CMP0002 OLD)
+-endif()
+-if (POLICY CMP0017)
+- cmake_policy(SET CMP0017 NEW)
+-endif ()
+ if (POLICY CMP0022)
+ cmake_policy(SET CMP0022 OLD)
+ endif ()
+-if (POLICY CMP0026)
+- cmake_policy(SET CMP0026 OLD)
+-endif()
+-if (POLICY CMP0046)
+- cmake_policy(SET CMP0046 OLD)
+-endif ()
+-if (POLICY CMP0059)
+- cmake_policy(SET CMP0059 OLD)
+-endif()
+ if (POLICY CMP0063)
+ cmake_policy(SET CMP0063 NEW)
+ endif()
+@@ -105,11 +90,7 @@ endif()
+ message(STATUS "Release build: ${RELEASE_BUILD}")
+
+ # use CPP-11
+-if (CMAKE_VERSION VERSION_LESS "3.1")
+- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+-else ()
+- set (CMAKE_CXX_STANDARD 11)
+-endif ()
++set (CMAKE_CXX_STANDARD 11)
+
+ ############
+ #############
+diff --git a/cmake/modules/MacroCalligraAddBenchmark.cmake b/cmake/modules/MacroCalligraAddBenchmark.cmake
+index bfd1e1dc938..ad428a8459d 100644
+--- a/cmake/modules/MacroCalligraAddBenchmark.cmake
++++ b/cmake/modules/MacroCalligraAddBenchmark.cmake
+@@ -41,7 +41,7 @@ macro (CALLIGRA_ADD_BENCHMARK _test_NAME)
+ endif()
+ endforeach(_filename)
+
+- get_target_property( loc ${_test_NAME} LOCATION )
++ set(loc $<TARGET_FILE:${_test_NAME}>)
+ if(WIN32)
+ if(MSVC_IDE)
+ string(REGEX REPLACE "\\$\\(.*\\)" "\${CTEST_CONFIGURATION_TYPE}" loc "${loc}")
+diff --git a/filters/words/msword-odf/wv2/CMakeLists.txt b/filters/words/msword-odf/wv2/CMakeLists.txt
+index 6f9cddfe018..421c20b60f1 100644
+--- a/filters/words/msword-odf/wv2/CMakeLists.txt
++++ b/filters/words/msword-odf/wv2/CMakeLists.txt
+@@ -1,12 +1,7 @@
+-cmake_minimum_required(VERSION 2.8.0)
++cmake_minimum_required(VERSION 3.2)
+
+ add_definitions(-DUNICODE -D_UNICODE)
+
+-#cmake_policy CMP0017 was introduced in version 2.8.4
+-if(${CMAKE_VERSION} VERSION_GREATER 2.8.3)
+- cmake_policy(SET CMP0017 NEW)
+-endif()
+-
+ # wv2 versioning
+ set( WV2_MAJOR_VERSION 0 )
+ set( WV2_MINOR_VERSION 9 )
+diff --git a/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt b/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt
+index 7d5086a0ebd..10d1c022e9e 100644
+--- a/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt
++++ b/filters/words/msword-odf/wv2/src/generator/CMakeLists.txt
+@@ -1,10 +1,5 @@
+ # Generate parsers for some Word structures.
+-cmake_minimum_required(VERSION 2.8.0)
+-
+-#cmake_policy CMP0017 was introduced in version 2.8.4
+-if(${CMAKE_VERSION} VERSION_GREATER 2.8.3)
+- cmake_policy(SET CMP0017 NEW)
+-endif()
++cmake_minimum_required(VERSION 3.2.0)
+
+ set( scanner_word95
+ ${CMAKE_CURRENT_BINARY_DIR}/word95_generated.h
+diff --git a/filters/words/rtf/import/3rdparty/rtf-qt/CMakeLists.txt b/filters/words/rtf/import/3rdparty/rtf-qt/CMakeLists.txt
+index 41e932d5869..cbd6ad9a83e 100644
+--- a/filters/words/rtf/import/3rdparty/rtf-qt/CMakeLists.txt
++++ b/filters/words/rtf/import/3rdparty/rtf-qt/CMakeLists.txt
+@@ -1,14 +1,9 @@
+ project( RtfReader )
+
+-cmake_minimum_required(VERSION 2.8.12)
++cmake_minimum_required(VERSION 3.2)
+
+ include(GenerateExportHeader)
+
+-#cmake_policy CMP0017 was introduced in version 2.8.4
+-if(${CMAKE_VERSION} VERSION_GREATER 2.8.3)
+- cmake_policy(SET CMP0017 NEW)
+-endif()
+-
+ find_package(Qt5 5.2.0 REQUIRED Gui)
+
+ add_subdirectory( src )
+--
+2.35.1
+
diff --git a/source/kde/kde/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch b/source/kde/kde/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch
new file mode 100644
index 000000000..5f2718875
--- /dev/null
+++ b/source/kde/kde/patch/calligra/upstream_Update-Cmake-and-deps-Fix-Freetype-and-FontConfig-Li.patch
@@ -0,0 +1,38 @@
+From 62f510702ef9c34ac50f8d8601a4290ab558464c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=96mer=20Fad=C4=B1l=20Usta?= <omerusta@gmail.com>
+Date: Sun, 6 Jun 2021 08:41:05 +0000
+Subject: [PATCH] Update Cmake and deps, Fix Freetype and FontConfig Linkage
+
+Cmake to 3.16
+KF to 5.76
+QT to 5.12
+ECM follow KF's version
+Update CALLIGRA_YEAR to 2021
+Fix Fontconfig's FOUND variable
+Fix Fontconfig's include_dirs variable
+Use Correct Target to link FontConfig and Freetype
+---
+ CMakeLists.txt | 20 +++++++-------------
+ libs/text/CMakeLists.txt | 4 ++--
+ 2 files changed, 9 insertions(+), 15 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b237f68fcb6..cdcc02f0236 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -89,9 +89,6 @@ if(NOT DEFINED RELEASE_BUILD)
+ endif()
+ message(STATUS "Release build: ${RELEASE_BUILD}")
+
+-# use CPP-11
+-set (CMAKE_CXX_STANDARD 11)
+-
+ ############
+ #############
+ ## Options ##
+ endif()
+
+
+--
+2.35.1
+
diff --git a/source/kde/kde/patch/dolphin.patch b/source/kde/kde/patch/dolphin.patch
deleted file mode 100644
index 02a7950c8..000000000
--- a/source/kde/kde/patch/dolphin.patch
+++ /dev/null
@@ -1,2 +0,0 @@
-# Let the user decide whether she wants to run Dolphin as root:
-cat $CWD/patch/dolphin/dolphin_revert_noroot.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/dolphin/dolphin_revert_noroot.patch b/source/kde/kde/patch/dolphin/dolphin_revert_noroot.patch
deleted file mode 100644
index 423e17074..000000000
--- a/source/kde/kde/patch/dolphin/dolphin_revert_noroot.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-# Let the user decide whether she wants to run Dolphin as root:
-
-diff -uar dolphin-18.08.0.orig/src/main.cpp dolphin-18.08.0/src/main.cpp
---- dolphin-18.08.0.orig/src/main.cpp 2018-08-06 22:41:40.000000000 +0200
-+++ dolphin-18.08.0/src/main.cpp 2018-08-11 00:32:48.073913157 +0200
-@@ -43,14 +43,12 @@
- extern "C" Q_DECL_EXPORT int kdemain(int argc, char **argv)
- {
- #ifndef Q_OS_WIN
-- // Prohibit using sudo or kdesu (but allow using the root user directly)
-+ // Warn using sudo or kdesu (but allow using the root user directly)
- if (getuid() == 0) {
- if (!qEnvironmentVariableIsEmpty("SUDO_USER")) {
-- std::cout << "Executing Dolphin with sudo is not possible due to unfixable security vulnerabilities." << std::endl;
-- return EXIT_FAILURE;
-+ std::cout << "Executing Dolphin with sudo is UNSAFE due to unfixable security vulnerabilities." << std::endl;
- } else if (!qEnvironmentVariableIsEmpty("KDESU_USER")) {
-- std::cout << "Executing Dolphin with kdesu is not possible due to unfixable security vulnerabilities." << std::endl;
-- return EXIT_FAILURE;
-+ std::cout << "Executing Dolphin with kdesu is UNSAFE due to unfixable security vulnerabilities." << std::endl;
- }
- }
- #endif
diff --git a/source/kde/kde/patch/drkonqi.patch b/source/kde/kde/patch/drkonqi.patch
new file mode 100644
index 000000000..bec49c925
--- /dev/null
+++ b/source/kde/kde/patch/drkonqi.patch
@@ -0,0 +1 @@
+cat $CWD/patch/drkonqi/drkonqi.disable.kuserfeedback.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/drkonqi/drkonqi.disable.kuserfeedback.patch b/source/kde/kde/patch/drkonqi/drkonqi.disable.kuserfeedback.patch
new file mode 100644
index 000000000..fa53e86fd
--- /dev/null
+++ b/source/kde/kde/patch/drkonqi/drkonqi.disable.kuserfeedback.patch
@@ -0,0 +1,46 @@
+--- ./CMakeLists.txt.orig 2023-02-09 05:58:46.000000000 -0600
++++ ./CMakeLists.txt 2023-02-14 16:05:41.083008231 -0600
+@@ -57,9 +57,6 @@
+ SyntaxHighlighting
+ )
+
+-find_package(KUserFeedback)
+-set_package_properties(KUserFeedback PROPERTIES TYPE REQUIRED PURPOSE "Checking whether feedback is enabled or not")
+-
+ ecm_find_qmlmodule(org.kde.kirigami 2.19)
+ ecm_find_qmlmodule(org.kde.kitemmodels 1.0)
+ ecm_find_qmlmodule(org.kde.kcm 1.6)
+--- ./src/CMakeLists.txt.orig 2023-02-14 16:05:41.083008231 -0600
++++ ./src/CMakeLists.txt 2023-02-14 16:05:55.423007438 -0600
+@@ -103,7 +103,6 @@
+ KF5::SyntaxHighlighting # Backtrace Highlighting
+ drkonqi_backtrace_parser
+ qbugzilla
+- KUserFeedbackCore
+ )
+
+ if(Systemd_FOUND)
+--- ./src/bugzillaintegration/reportinterface.cpp.orig 2023-02-09 05:58:46.000000000 -0600
++++ ./src/bugzillaintegration/reportinterface.cpp 2023-02-14 16:05:41.083008231 -0600
+@@ -14,7 +14,6 @@
+
+ #include <KIO/TransferJob>
+ #include <KLocalizedString>
+-#include <KUserFeedback/Provider>
+
+ #include "backtracegenerator.h"
+ #include "bugzillalib.h"
+@@ -58,13 +57,6 @@
+ m_sentryUserFeedbackSent = true;
+ maybeDone();
+ });
+- if (KUserFeedback::Provider provider; provider.isEnabled() && provider.telemetryMode() == KUserFeedback::Provider::DetailedUsageStatistics
+- && !DrKonqi::isTestingBugzilla() && qgetenv("DRKONQI_KDE_BUGZILLA_URL").isEmpty() && !DrKonqi::crashedApplication()->hasDeletedFiles()) {
+- metaObject()->invokeMethod(this, [this] {
+- // Send crash event ASAP, if applicable. Trace quality doesn't matter for it.
+- sendCrashEvent();
+- });
+- }
+ }
+
+ void ReportInterface::setBugAwarenessPageData(bool rememberSituation, Reproducible reproducible, bool actions, bool unusual, bool configuration)
diff --git a/source/kde/kde/patch/falkon.patch b/source/kde/kde/patch/falkon.patch
deleted file mode 100644
index 27a466836..000000000
--- a/source/kde/kde/patch/falkon.patch
+++ /dev/null
@@ -1,2 +0,0 @@
-# Fix build against Qt 5.15:
-cat $CWD/patch/falkon/falkon.qt-5.15.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/falkon/falkon.qt-5.15.diff b/source/kde/kde/patch/falkon/falkon.qt-5.15.diff
deleted file mode 100644
index 60f1699e8..000000000
--- a/source/kde/kde/patch/falkon/falkon.qt-5.15.diff
+++ /dev/null
@@ -1,20 +0,0 @@
---- ./src/lib/tools/qztools.cpp.orig 2019-03-19 13:06:45.000000000 -0500
-+++ ./src/lib/tools/qztools.cpp 2020-07-18 15:00:08.881313780 -0500
-@@ -25,6 +25,7 @@
- #include <QByteArray>
- #include <QPixmap>
- #include <QPainter>
-+#include <QPainterPath>
- #include <QBuffer>
- #include <QFile>
- #include <QDir>
---- ./src/plugins/VerticalTabs/verticaltabsplugin.cpp.orig 2019-03-19 13:06:45.000000000 -0500
-+++ ./src/plugins/VerticalTabs/verticaltabsplugin.cpp 2020-07-18 15:03:16.468303404 -0500
-@@ -31,6 +31,7 @@
- #include "desktopfile.h"
-
- #include <QSettings>
-+#include <QFile>
-
- VerticalTabsPlugin::VerticalTabsPlugin()
- : QObject()
diff --git a/source/kde/kde/patch/kapidox.patch b/source/kde/kde/patch/kapidox.patch
new file mode 100644
index 000000000..d0dc7d79b
--- /dev/null
+++ b/source/kde/kde/patch/kapidox.patch
@@ -0,0 +1,4 @@
+# Clear this first:
+echo > CMakeLists.txt
+
+cat $CWD/patch/kapidox/kapidox.CMakeLists.txt.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kapidox/kapidox.CMakeLists.txt.diff b/source/kde/kde/patch/kapidox/kapidox.CMakeLists.txt.diff
new file mode 100644
index 000000000..592df2eb4
--- /dev/null
+++ b/source/kde/kde/patch/kapidox/kapidox.CMakeLists.txt.diff
@@ -0,0 +1,39 @@
+--- ./CMakeLists.txt.orig 2022-03-13 13:25:35.004123460 -0500
++++ ./CMakeLists.txt 2022-03-13 13:25:28.609123316 -0500
+@@ -0,0 +1,36 @@
++cmake_minimum_required(VERSION 3.16)
++project(KApiDox NONE)
++
++find_package(Python3 COMPONENTS Interpreter)
++
++if(WIN32)
++ # Needs native path and extra escaping of spaces
++ file(TO_NATIVE_PATH "${CMAKE_BINARY_DIR}" BINARY_DIR)
++else()
++ set(BINARY_DIR ${CMAKE_BINARY_DIR})
++endif()
++
++add_custom_target(build ALL
++ COMMAND ${Python3_EXECUTABLE} setup.py build --build-base ${BINARY_DIR}
++ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
++ )
++
++# DESTDIR may be set at install time (eg: `make DESTDIR=/tmp/package install`)
++# so we need to check for it when the install code is run and pass the appropriate
++# argument to distutils.
++#
++# Note that if(\$ENV{DESTDIR}) always fails, regardless of the value of the DESTDIR
++# environment variable, hence the STREQUAL test.
++# See https://public.kitware.com/Bug/view.php?id=14737
++install(CODE
++ "set(_root_arg)
++ if (NOT \$ENV{DESTDIR} STREQUAL \"\")
++ file(TO_NATIVE_PATH \$ENV{DESTDIR} DESTDIR)
++ set(_root_arg --root \"\${DESTDIR}\")
++ endif()
++ file(TO_NATIVE_PATH ${CMAKE_INSTALL_PREFIX} INSTALL_PREFIX)
++ execute_process(
++ COMMAND ${Python3_EXECUTABLE} setup.py install --prefix \"\${INSTALL_PREFIX}\" \${_root_arg}
++ WORKING_DIRECTORY \"${CMAKE_SOURCE_DIR}\"
++ )"
++ )
diff --git a/source/kde/kde/patch/kate.patch b/source/kde/kde/patch/kate.patch
deleted file mode 100644
index 59df062a0..000000000
--- a/source/kde/kde/patch/kate.patch
+++ /dev/null
@@ -1,3 +0,0 @@
-# Allow Kate to be started by the root user; disallowing this is not
-# a decision that a developer should make for the user, it is patronizing:
-cat $CWD/patch/kate/kate_runasroot.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kate/kate_runasroot.patch b/source/kde/kde/patch/kate/kate_runasroot.patch
deleted file mode 100644
index 3cc919faf..000000000
--- a/source/kde/kde/patch/kate/kate_runasroot.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- ./kwrite/main.cpp.orig 2021-08-12 21:30:09.752256555 -0500
-+++ ./kwrite/main.cpp 2021-08-12 21:32:05.046259134 -0500
-@@ -41,17 +41,15 @@
- // Prohibit using sudo or kdesu (but allow using the root user directly)
- if (getuid() == 0) {
- if (!qEnvironmentVariableIsEmpty("SUDO_USER")) {
-- std::cout << "Executing KWrite with sudo is not possible due to unfixable security vulnerabilities. "
-+ std::cout << "Executing KWrite with sudo is UNSAFE due to unfixable security vulnerabilities. "
- "It is also not necessary; simply use KWrite normally, and you will be prompted for "
- "elevated privileges when saving documents if needed."
- << std::endl;
-- return EXIT_FAILURE;
- } else if (!qEnvironmentVariableIsEmpty("KDESU_USER")) {
-- std::cout << "Executing KWrite with kdesu is not possible due to unfixable security vulnerabilities. "
-+ std::cout << "Executing KWrite with kdesu is UNSAFE due to unfixable security vulnerabilities. "
- "It is also not necessary; simply use KWrite normally, and you will be prompted for "
- "elevated privileges when saving documents if needed."
- << std::endl;
-- return EXIT_FAILURE;
- }
- }
- #endif
---- ./kate/main.cpp.orig 2021-08-04 21:13:14.000000000 -0500
-+++ ./kate/main.cpp 2021-08-12 21:30:09.753256555 -0500
-@@ -49,17 +49,15 @@
- // Prohibit using sudo or kdesu (but allow using the root user directly)
- if (getuid() == 0) {
- if (!qEnvironmentVariableIsEmpty("SUDO_USER")) {
-- std::cout << "Executing Kate with sudo is not possible due to unfixable security vulnerabilities. "
-+ std::cout << "Executing Kate with sudo is UNSAFE due to unfixable security vulnerabilities. "
- "It is also not necessary; simply use Kate normally, and you will be prompted for "
- "elevated privileges when saving documents if needed."
- << std::endl;
-- return EXIT_FAILURE;
- } else if (!qEnvironmentVariableIsEmpty("KDESU_USER")) {
-- std::cout << "Executing Kate with kdesu is not possible due to unfixable security vulnerabilities. "
-+ std::cout << "Executing Kate with kdesu is UNSAFE due to unfixable security vulnerabilities. "
- "It is also not necessary; simply use Kate normally, and you will be prompted for "
- "elevated privileges when saving documents if needed."
- << std::endl;
-- return EXIT_FAILURE;
- }
- }
- #endif
diff --git a/source/kde/kde/patch/kdeconnect-kde.patch b/source/kde/kde/patch/kdeconnect-kde.patch
deleted file mode 100644
index 122440d2a..000000000
--- a/source/kde/kde/patch/kdeconnect-kde.patch
+++ /dev/null
@@ -1,2 +0,0 @@
-# Fix remote device browsing with openssh 8.2:
-cat $CWD/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff b/source/kde/kde/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff
deleted file mode 100644
index ff067aa8e..000000000
--- a/source/kde/kde/patch/kdeconnect-kde/kdeconnect-kde_openssh-8.2.diff
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/plugins/sftp/mounter.cpp b/plugins/sftp/mounter.cpp
-index fca9907c..f673c9f7 100644
---- a/plugins/sftp/mounter.cpp
-+++ b/plugins/sftp/mounter.cpp
-@@ -145,6 +145,7 @@ void Mounter::onPackageReceived(const NetworkPacket& np)
- << QStringLiteral("-o") << QStringLiteral("reconnect")
- << QStringLiteral("-o") << QStringLiteral("ServerAliveInterval=30")
- << QStringLiteral("-o") << QStringLiteral("password_stdin")
-+ << QStringLiteral("-o") << QStringLiteral("KexAlgorithms=+diffie-hellman-group14-sha1")
- ;
-
- m_proc->setProgram(program, arguments);
diff --git a/source/kde/kde/patch/kdewebkit.patch b/source/kde/kde/patch/kdewebkit.patch
new file mode 100644
index 000000000..52bf69a6f
--- /dev/null
+++ b/source/kde/kde/patch/kdewebkit.patch
@@ -0,0 +1,2 @@
+# Smite the accidental backport:
+cat $CWD/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch b/source/kde/kde/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch
new file mode 100644
index 000000000..13ff8ce89
--- /dev/null
+++ b/source/kde/kde/patch/kdewebkit/kdewebkit.ECMFeatureSummary.patch
@@ -0,0 +1,9 @@
+--- ./CMakeLists.txt.orig 2024-02-03 08:23:17.000000000 -0600
++++ ./CMakeLists.txt 2024-02-10 13:12:28.148883115 -0600
+@@ -76,5 +76,4 @@
+ DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KDEWebKit COMPONENT Devel
+ )
+
+-include(ECMFeatureSummary)
+-ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
++feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
diff --git a/source/kde/kde/patch/kid3.patch b/source/kde/kde/patch/kid3.patch
new file mode 100644
index 000000000..fdb8e61ef
--- /dev/null
+++ b/source/kde/kde/patch/kid3.patch
@@ -0,0 +1 @@
+cat $CWD/patch/kid3/build-with-qt5.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kid3/build-with-qt5.patch b/source/kde/kde/patch/kid3/build-with-qt5.patch
new file mode 100644
index 000000000..5287c4c36
--- /dev/null
+++ b/source/kde/kde/patch/kid3/build-with-qt5.patch
@@ -0,0 +1,15 @@
+--- ./CMakeLists.txt.orig 2024-02-23 16:50:39.000000000 -0000
++++ ./CMakeLists.txt 2024-03-14 20:49:46.015432993 -0000
+@@ -271,11 +271,7 @@
+ endif()
+ endif()
+ endif()
+-if(BUILD_WITH_QT6)
+- find_package(QT NAMES Qt6 COMPONENTS Core REQUIRED)
+-else()
+- find_package(QT NAMES Qt5 Qt6 COMPONENTS Core REQUIRED)
+-endif()
++find_package(QT NAMES Qt5 COMPONENTS Core REQUIRED)
+ if(QT_VERSION_MAJOR EQUAL 6 AND QT_VERSION_MINOR LESS 2)
+ set(WITH_MULTIMEDIA OFF)
+ endif()
diff --git a/source/kde/kde/patch/kinfocenter.patch b/source/kde/kde/patch/kinfocenter.patch
deleted file mode 100644
index b57d434fc..000000000
--- a/source/kde/kde/patch/kinfocenter.patch
+++ /dev/null
@@ -1,2 +0,0 @@
-# Fix linking error :
-cat $CWD/patch/kinfocenter/kinfocenter_libpci.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch b/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch
deleted file mode 100644
index a2bc00796..000000000
--- a/source/kde/kde/patch/kinfocenter/kinfocenter_libpci.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- kinfocenter-5.5.5/cmake/FindPCIUTILS.cmake.orig 2016-03-01 14:32:01.000000000 +0100
-+++ kinfocenter-5.5.5/cmake/FindPCIUTILS.cmake 2016-03-11 13:00:12.412315320 +0100
-@@ -19,6 +19,14 @@
- else(RESOLV_LIBRARY)
- set(PCIUTILS_LIBRARIES ${PCIUTILS_LIBRARY})
- endif(RESOLV_LIBRARY)
-+ FIND_LIBRARY(UDEV_LIBRARY NAMES udev)
-+ if(UDEV_LIBRARY)
-+ set(PCIUTILS_LIBRARIES ${PCIUTILS_LIBRARIES} ${UDEV_LIBRARY})
-+ endif(UDEV_LIBRARY)
-+ FIND_LIBRARY(ZLIB_LIBRARY NAMES z)
-+ if(ZLIB_LIBRARY)
-+ set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
-+ endif(ZLIB_LIBRARY)
- endif(PCIUTILS_LIBRARY)
-
-
diff --git a/source/kde/kde/patch/kmymoney.patch b/source/kde/kde/patch/kmymoney.patch
deleted file mode 100644
index ead3686fe..000000000
--- a/source/kde/kde/patch/kmymoney.patch
+++ /dev/null
@@ -1,2 +0,0 @@
-# Fix build with recent akonadi:
-cat $CWD/patch/kmymoney/kmymoney.akonadi.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kmymoney/kmymoney.akonadi.patch b/source/kde/kde/patch/kmymoney/kmymoney.akonadi.patch
deleted file mode 100644
index 6d062326c..000000000
--- a/source/kde/kde/patch/kmymoney/kmymoney.akonadi.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -aurN kmymoney-5.1.2/kmymoney/mymoney/mymoneycontact.cpp kmymoney-5.1.2-mod/kmymoney/mymoney/mymoneycontact.cpp
---- kmymoney-5.1.2/kmymoney/mymoney/mymoneycontact.cpp 2021-06-23 17:49:12.000000000 +0200
-+++ kmymoney-5.1.2-mod/kmymoney/mymoney/mymoneycontact.cpp 2021-12-12 17:03:38.513691645 +0100
-@@ -8,11 +8,20 @@
- #include "mymoneycontact.h"
-
- #ifdef ENABLE_ADDRESSBOOK
--#include <KIdentityManagement/IdentityManager>
- #include <KIdentityManagement/Identity>
-+#include <KIdentityManagement/IdentityManager>
-+#include <akonadi_version.h>
-+
-+#if AKONADI_VERSION >= QT_VERSION_CHECK(5, 18, 41)
-+#include <Akonadi/Collection>
-+#include <Akonadi/ItemFetchScope>
-+#include <Akonadi/RecursiveItemFetchJob>
-+#else
- #include <AkonadiCore/RecursiveItemFetchJob>
- #include <AkonadiCore/ItemFetchScope>
- #include <AkonadiCore/Collection>
-+#endif
-+
- #include <KContacts/Addressee>
- #include <QRegularExpression>
- #endif
-@@ -67,7 +76,7 @@
- job->fetchScope().fetchFullPayload();
- job->fetchScope().setAncestorRetrieval(Akonadi::ItemFetchScope::Parent);
- job->setProperty("MyMoneyContact_email", email);
-- connect(job, SIGNAL(result(KJob*)), this, SLOT(searchContactResult(KJob*)));
-+ connect(job, &Akonadi::RecursiveItemFetchJob::result, this, &MyMoneyContact::searchContactResult);
- job->start();
- }
- #else
diff --git a/source/kde/kde/patch/konsole.patch b/source/kde/kde/patch/konsole.patch
deleted file mode 100644
index 99f44a3dd..000000000
--- a/source/kde/kde/patch/konsole.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/konsole/eb44240235fa61e662e9a521f72e8be9213bb536.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/krename.patch b/source/kde/kde/patch/krename.patch
index 6e79ecb66..9581a5060 100644
--- a/source/kde/kde/patch/krename.patch
+++ b/source/kde/kde/patch/krename.patch
@@ -1 +1,2 @@
cat $CWD/patch/krename/krename.taglib.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/krename/krename.exiv2-0.28.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/krename/krename.exiv2-0.28.diff b/source/kde/kde/patch/krename/krename.exiv2-0.28.diff
new file mode 100644
index 000000000..bf095aea2
--- /dev/null
+++ b/source/kde/kde/patch/krename/krename.exiv2-0.28.diff
@@ -0,0 +1,11 @@
+--- ./src/exiv2plugin.cpp.orig 2022-08-31 16:22:21.000000000 -0500
++++ ./src/exiv2plugin.cpp 2023-10-27 13:53:53.697705529 -0500
+@@ -395,7 +395,7 @@
+ std::string strFilename(asc.constData(), asc.length());
+
+ try {
+- Image::AutoPtr image = Exiv2::ImageFactory::open(strFilename);
++ Image::UniquePtr image = Exiv2::ImageFactory::open(strFilename);
+ if (image.get() != nullptr && image->good()) {
+ image->readMetadata();
+
diff --git a/source/kde/kde/patch/krita.patch b/source/kde/kde/patch/krita.patch
new file mode 100644
index 000000000..df5259ebd
--- /dev/null
+++ b/source/kde/kde/patch/krita.patch
@@ -0,0 +1 @@
+cat $CWD/patch/krita/sip-6.8.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/krita/sip-6.8.patch b/source/kde/kde/patch/krita/sip-6.8.patch
new file mode 100644
index 000000000..9579e4f3c
--- /dev/null
+++ b/source/kde/kde/patch/krita/sip-6.8.patch
@@ -0,0 +1,13 @@
+diff --git a/cmake/modules/pyproject.toml.in b/cmake/modules/pyproject.toml.in
+index 090b2d4b0c..085ddf4179 100644
+--- a/cmake/modules/pyproject.toml.in
++++ b/cmake/modules/pyproject.toml.in
+@@ -9,7 +9,7 @@ name = "@module_name_toml@"
+ sip-module = "@sip_name@"
+ sip-include-dirs = @sip_include_dirs@
+ sip-files-dir = "@module_srcs@"
+-abi-version = "12"
++abi-version = "12.8"
+
+ [tool.sip.bindings.@module_name_toml@]
+ tags = @module_tags@
diff --git a/source/kde/kde/patch/kross-interpreters.patch b/source/kde/kde/patch/kross-interpreters.patch
new file mode 100644
index 000000000..0c0038b19
--- /dev/null
+++ b/source/kde/kde/patch/kross-interpreters.patch
@@ -0,0 +1 @@
+cat $CWD/patch/kross-interpreters/dump-python2.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kross-interpreters/dump-python2.patch b/source/kde/kde/patch/kross-interpreters/dump-python2.patch
new file mode 100644
index 000000000..c4fa64268
--- /dev/null
+++ b/source/kde/kde/patch/kross-interpreters/dump-python2.patch
@@ -0,0 +1,42 @@
+--- ./CMakeLists.txt.orig 2024-01-11 15:29:12.000000000 -0600
++++ ./CMakeLists.txt 2024-03-19 22:59:23.005420760 -0500
+@@ -16,28 +16,6 @@
+ find_package(Qt5 5.2.0 CONFIG REQUIRED Core Gui Widgets)
+ find_package(KF5 5.11.0 REQUIRED Kross)
+
+-# ========================= Find Python 2 =========================
+-
+-# TODO: CMake's FindPythonLibs.cmake needs fixing, because without the
+-# following hack find_package(PythonLibs 3) would find the previously found
+-# version 2.7. Due to this hack one cannot predefine PYTHON_LIBRARY and/or
+-# PYTHON_INCLUDE_DIR by editing CMakeCache.txt.
+-unset(PYTHON_INCLUDE_DIR CACHE)
+-unset(PYTHON_LIBRARY CACHE)
+-unset(PYTHON_LIBRARY_DEBUG CACHE)
+-# Unset variables set by find_package(PythonInterp) which is called by KI18n
+-unset(PYTHON_VERSION_MAJOR)
+-unset(PYTHON_VERSION_MINOR)
+-find_package(PythonLibs 2 EXACT)
+-
+-set(PYTHON2_LIBS_FOUND ${PYTHONLIBS_FOUND})
+-set(PYTHON2_LIBRARIES ${PYTHON_LIBRARIES})
+-set(PYTHON2_INCLUDE_DIRS ${PYTHON_INCLUDE_DIRS})
+-set(PYTHON2_LIBS_VERSION_STRING ${PYTHONLIBS_VERSION_STRING})
+-if(PYTHON2_LIBS_FOUND)
+- message(STATUS "Found Python 2: ${PYTHON2_LIBRARIES} (found version \"${PYTHON2_LIBS_VERSION_STRING}\")")
+-endif()
+-
+ # ========================= Find FALCON =========================
+
+ ### Falcon support disabled because it does not work with most modern falcon-0.9.x
+@@ -61,10 +39,6 @@
+
+ # ========================= Traverse subdirectories for actual targets =========================
+
+-if(PYTHON2_LIBS_FOUND)
+- ecm_optional_add_subdirectory(python)
+-endif(PYTHON2_LIBS_FOUND)
+-
+ ### Falcon support disabled because it does not work with most modern falcon-0.9.x
+ # if(FALCON_FOUND)
+ # ecm_optional_add_subdirectory(falcon)
diff --git a/source/kde/kde/patch/kscreen.patch b/source/kde/kde/patch/kscreen.patch
deleted file mode 100644
index 7b0a24332..000000000
--- a/source/kde/kde/patch/kscreen.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/kscreen/57.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kscreen/57.patch b/source/kde/kde/patch/kscreen/57.patch
deleted file mode 100644
index bb8befc91..000000000
--- a/source/kde/kde/patch/kscreen/57.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-From 4d025b68022405ce889b563ed67646ccbfe4a658 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
-Date: Mon, 29 Nov 2021 17:15:26 +0100
-Subject: [PATCH 1/4] Compute logicalSize taking into account current config
-
-BUG: 441417
----
- kcm/output_identifier.cpp | 2 +-
- kcm/output_model.cpp | 23 +++++++++++++++--------
- kded/output.cpp | 4 ++--
- 3 files changed, 18 insertions(+), 11 deletions(-)
-
-diff --git a/kcm/output_identifier.cpp b/kcm/output_identifier.cpp
-index a672995..ba51470 100644
---- a/kcm/output_identifier.cpp
-+++ b/kcm/output_identifier.cpp
-@@ -56,7 +56,7 @@ OutputIdentifier::OutputIdentifier(KScreen::ConfigPtr config, QObject *parent)
- }
- if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) {
- // Scale adjustment is not needed on Wayland, we use logical size.
-- logicalSize = output->logicalSize().toSize();
-+ logicalSize = output->explicitLogicalSize().toSize();
- } else {
- logicalSize = deviceSize / view->effectiveDevicePixelRatio();
- }
-diff --git a/kcm/output_model.cpp b/kcm/output_model.cpp
-index a497c90..020b96f 100644
---- a/kcm/output_model.cpp
-+++ b/kcm/output_model.cpp
-@@ -161,10 +161,13 @@ bool OutputModel::setData(const QModelIndex &index, const QVariant &value, int r
- bool ok;
- const qreal scale = value.toReal(&ok);
- if (ok && !qFuzzyCompare(output.ptr->scale(), scale)) {
-- const auto oldSize = output.ptr->logicalSize().toSize();
-+ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
-+
- output.ptr->setScale(scale);
- m_config->setScale(output.ptr, scale);
-- const auto newSize = output.ptr->logicalSize().toSize();
-+
-+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
-+ output.ptr->setExplicitLogicalSize(newSize);
-
- maintainSnapping(output, oldSize, newSize);
-
-@@ -385,9 +388,11 @@ bool OutputModel::setResolution(int outputIndex, int resIndex)
- if (output.ptr->currentModeId() == id) {
- return false;
- }
-- const auto oldSize = output.ptr->logicalSize().toSize();
-+ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
- output.ptr->setCurrentModeId(id);
-- const auto newSize = output.ptr->logicalSize().toSize();
-+
-+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
-+ output.ptr->setExplicitLogicalSize(newSize);
-
- maintainSnapping(output, oldSize, newSize);
-
-@@ -466,9 +471,11 @@ bool OutputModel::setRotation(int outputIndex, KScreen::Output::Rotation rotatio
- if (output.ptr->rotation() == rotation) {
- return false;
- }
-- const auto oldSize = output.ptr->logicalSize().toSize();
-+ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
- output.ptr->setRotation(rotation);
-- const auto newSize = output.ptr->logicalSize().toSize();
-+
-+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
-+ output.ptr->setExplicitLogicalSize(newSize);
-
- maintainSnapping(output, oldSize, newSize);
-
-@@ -653,7 +660,7 @@ bool OutputModel::setReplicationSourceIndex(int outputIndex, int sourceIndex)
- return false;
- }
- m_config->setReplicationSource(output.ptr, nullptr);
-- output.ptr->setLogicalSize(QSizeF());
-+ output.ptr->setExplicitLogicalSize(QSizeF());
- resetPosition(output);
- } else {
- const auto source = m_outputs[sourceIndex].ptr;
-@@ -664,7 +671,7 @@ bool OutputModel::setReplicationSourceIndex(int outputIndex, int sourceIndex)
- m_config->setReplicationSource(output.ptr, source);
- output.posReset = output.ptr->pos();
- output.ptr->setPos(source->pos());
-- output.ptr->setLogicalSize(source->logicalSize());
-+ output.ptr->setExplicitLogicalSize(m_config->config()->logicalSizeForOutput(*source));
- }
-
- reposition();
-diff --git a/kded/output.cpp b/kded/output.cpp
-index 7463b8a..44251e5 100644
---- a/kded/output.cpp
-+++ b/kded/output.cpp
-@@ -404,9 +404,9 @@ void Output::readInOutputs(KScreen::ConfigPtr config, const QVariantList &output
- auto replicationSource = control.getReplicationSource(output);
- if (replicationSource) {
- output->setPos(replicationSource->pos());
-- output->setLogicalSize(replicationSource->logicalSize());
-+ output->setExplicitLogicalSize(config->logicalSizeForOutput(*replicationSource));
- } else {
-- output->setLogicalSize(QSizeF());
-+ output->setExplicitLogicalSize(QSizeF());
- }
- }
-
---
-GitLab
-
-
-From 3b90217f21e62285e78fff86ae562c692799e28f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
-Date: Tue, 30 Nov 2021 14:58:40 +0100
-Subject: [PATCH 2/4] Update screen size when mode changes
-
----
- kcm/output_model.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/kcm/output_model.cpp b/kcm/output_model.cpp
-index 020b96f..ae01307 100644
---- a/kcm/output_model.cpp
-+++ b/kcm/output_model.cpp
-@@ -390,6 +390,7 @@ bool OutputModel::setResolution(int outputIndex, int resIndex)
- }
- const auto oldSize = output.ptr->explicitLogicalSize().toSize();
- output.ptr->setCurrentModeId(id);
-+ output.ptr->setSize(output.ptr->currentMode()->size());
-
- const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
- output.ptr->setExplicitLogicalSize(newSize);
---
-GitLab
-
-
-From ad8d66c2c39c15a9fd668a0a292f4cd970731123 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
-Date: Wed, 1 Dec 2021 13:39:21 +0100
-Subject: [PATCH 3/4] Ensure to set outputs explicitLogicalSize upon loading
- config
-
----
- kcm/config_handler.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/kcm/config_handler.cpp b/kcm/config_handler.cpp
-index d7e7c7c..dabbcb2 100644
---- a/kcm/config_handler.cpp
-+++ b/kcm/config_handler.cpp
-@@ -78,6 +78,8 @@ void ConfigHandler::resetScale(const KScreen::OutputPtr &output)
-
- void ConfigHandler::initOutput(const KScreen::OutputPtr &output)
- {
-+ output->setExplicitLogicalSize(config()->logicalSizeForOutput(*output));
-+
- if (output->isConnected()) {
- resetScale(output);
- m_outputs->add(output);
---
-GitLab
-
-
-From ad7dda0b64c6f76066cdd199b0aa6ed2e2982f88 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
-Date: Wed, 1 Dec 2021 14:40:32 +0100
-Subject: [PATCH 4/4] Fix output identifier window positioning in wayland with
- some scale
-
----
- kcm/output_identifier.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kcm/output_identifier.cpp b/kcm/output_identifier.cpp
-index ba51470..d21d36f 100644
---- a/kcm/output_identifier.cpp
-+++ b/kcm/output_identifier.cpp
-@@ -56,7 +56,7 @@ OutputIdentifier::OutputIdentifier(KScreen::ConfigPtr config, QObject *parent)
- }
- if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) {
- // Scale adjustment is not needed on Wayland, we use logical size.
-- logicalSize = output->explicitLogicalSize().toSize();
-+ logicalSize = config->logicalSizeForOutput(*output.data()).toSize();
- } else {
- logicalSize = deviceSize / view->effectiveDevicePixelRatio();
- }
---
-GitLab
-
diff --git a/source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch b/source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch
index b23a20e12..b29f8289f 100644
--- a/source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch
+++ b/source/kde/kde/patch/ktorrent/ktorrent.geoip.revert.6c1ae6b2530c5f7c72611a95aea92275520a5aee.patch
@@ -1,5 +1,85 @@
---- ./plugins/infowidget/GeoIP.h.orig 2021-08-15 00:18:01.329498947 -0500
-+++ ./plugins/infowidget/GeoIP.h 2021-08-15 00:18:01.329498947 -0500
+--- ./plugins/infowidget/peerviewmodel.h.orig 2022-04-13 21:50:05.000000000 -0500
++++ ./plugins/infowidget/peerviewmodel.h 2022-04-22 13:03:03.206722648 -0500
+@@ -61,12 +61,7 @@
+ QString country;
+ QIcon flag;
+
+- Item(bt::PeerInterface *peer
+-#if BUILD_WITH_GEOIP
+- ,
+- GeoIPManager *geo_ip
+-#endif
+- );
++ Item(bt::PeerInterface *peer, GeoIPManager *geo_ip);
+
+ bool changed() const;
+ QVariant data(int col) const;
+@@ -76,9 +71,7 @@
+
+ private:
+ QVector<Item *> items;
+-#if BUILD_WITH_GEOIP
+- GeoIPManager *geo_ip = nullptr;
+-#endif
++ GeoIPManager *geo_ip;
+ };
+
+ }
+--- ./plugins/infowidget/geoipmanager.h.orig 2022-04-13 21:50:05.000000000 -0500
++++ ./plugins/infowidget/geoipmanager.h 2022-04-22 13:03:03.206722648 -0500
+@@ -7,7 +7,21 @@
+ #define KT_GEOIPMANAGER_H
+
+ #include <QObject>
++#include <QThread>
++#include <QUrl>
++
++#ifdef USE_SYSTEM_GEOIP
+ #include <GeoIP.h>
++#else
++#include "GeoIP.h"
++#endif
++
++class KJob;
++
++namespace bt
++{
++class DecompressThread;
++}
+
+ namespace kt
+ {
+@@ -42,8 +56,28 @@
+ */
+ QString countryCode(int country_id);
+
++ /// Get the database URL
++ static QUrl geoIPUrl()
++ {
++ return geoip_url;
++ }
++
++ /// Set the database URL
++ static void setGeoIPUrl(const QUrl &url);
++
++ /// Download the database
++ void downloadDataBase();
++
++private Q_SLOTS:
++ void databaseDownloadFinished(KJob *job);
++ void decompressFinished();
++
+ private:
+ GeoIP *geo_ip;
++ QString geoip_data_file;
++ QString download_destination;
++ bt::DecompressThread *decompress_thread;
++ static QUrl geoip_url;
+ };
+
+ }
+--- ./plugins/infowidget/GeoIP.h.orig 2022-04-22 13:03:03.205722648 -0500
++++ ./plugins/infowidget/GeoIP.h 2022-04-22 13:03:03.205722648 -0500
@@ -0,0 +1,148 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
+/* GeoIP.h
@@ -149,125 +229,153 @@
+#endif
+
+#endif /* GEOIP_H */
---- ./plugins/infowidget/geoipmanager.cpp.orig 2021-08-04 21:50:44.000000000 -0500
-+++ ./plugins/infowidget/geoipmanager.cpp 2021-08-15 00:18:01.329498947 -0500
-@@ -20,16 +20,47 @@
+--- ./plugins/infowidget/peerviewmodel.cpp.orig 2022-04-13 21:50:05.000000000 -0500
++++ ./plugins/infowidget/peerviewmodel.cpp 2022-04-22 13:03:03.206722648 -0500
+@@ -13,13 +13,10 @@
+ #include <KLocalizedString>
+
+ #include "flagdb.h"
++#include "geoipmanager.h"
+ #include <interfaces/torrentinterface.h>
+ #include <util/functions.h>
+
+-#if BUILD_WITH_GEOIP
+-#include "geoipmanager.h"
+-#endif
+-
+ using namespace bt;
namespace kt
+@@ -28,12 +25,7 @@
+ static bool icons_loaded = false;
+ static FlagDB flagDB(22, 18);
+
+-PeerViewModel::Item::Item(bt::PeerInterface *peer
+-#if BUILD_WITH_GEOIP
+- ,
+- GeoIPManager *geo_ip
+-#endif
+- )
++PeerViewModel::Item::Item(bt::PeerInterface *peer, GeoIPManager *geo_ip)
+ : peer(peer)
{
-+QUrl GeoIPManager::geoip_url = QUrl(QStringLiteral("http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz"));
-+
- GeoIPManager::GeoIPManager(QObject *parent)
- : QObject(parent)
-+ , geo_ip(nullptr)
-+ , decompress_thread(nullptr)
- {
-+#ifdef USE_SYSTEM_GEOIP
- geo_ip = GeoIP_open_type(GEOIP_COUNTRY_EDITION, GEOIP_STANDARD);
-+#else
-+ geoip_data_file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("geoip.dat"));
-+ if (geoip_data_file.isEmpty())
-+ geoip_data_file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("GeoIP.dat"));
-+
-+ if (geoip_data_file.isEmpty()) {
-+ downloadDataBase();
-+ } else {
-+ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0);
-+ if (geo_ip) {
-+ QFileInfo fi(geoip_data_file);
-+ QDateTime now = QDateTime::currentDateTime();
-+ if (fi.lastModified().daysTo(now) >= 30) {
-+ // if the last time the geoip file was modified, was more then
-+ // 30 days ago, redownload it
-+ downloadDataBase();
-+ }
+ stats = peer->getStats();
+@@ -47,13 +39,13 @@
+ flagDB.addFlagSource(path + QStringLiteral("/%1/flag.png"));
+ }
+
+-#if BUILD_WITH_GEOIP
+- int country_id = geo_ip->findCountry(stats.ip_address);
+- if (country_id > 0) {
+- country = geo_ip->countryName(country_id);
+- flag = flagDB.getFlag(geo_ip->countryCode(country_id));
++ if (geo_ip) {
++ int country_id = geo_ip->findCountry(stats.ip_address);
++ if (country_id > 0) {
++ country = geo_ip->countryName(country_id);
++ flag = flagDB.getFlag(geo_ip->countryCode(country_id));
+ }
-+ }
-+#endif
+ }
+-#endif
}
- GeoIPManager::~GeoIPManager()
+ bool PeerViewModel::Item::changed() const
+@@ -191,10 +183,9 @@
+
+ PeerViewModel::PeerViewModel(QObject *parent)
+ : QAbstractTableModel(parent)
++ , geo_ip(nullptr)
{
- if (geo_ip)
- GeoIP_delete(geo_ip);
-+
-+ if (decompress_thread) {
-+ decompress_thread->cancel();
-+ decompress_thread->wait();
-+ delete decompress_thread;
-+ }
+-#if BUILD_WITH_GEOIP
+ geo_ip = new GeoIPManager(this);
+-#endif
}
- int GeoIPManager::findCountry(const QString &addr)
-@@ -56,4 +87,66 @@
- return QString();
+ PeerViewModel::~PeerViewModel()
+@@ -204,12 +195,7 @@
+
+ void PeerViewModel::peerAdded(bt::PeerInterface *peer)
+ {
+- items.append(new Item(peer
+-#if BUILD_WITH_GEOIP
+- ,
+- geo_ip
+-#endif
+- ));
++ items.append(new Item(peer, geo_ip));
+ insertRow(items.count() - 1);
}
-+void GeoIPManager::downloadDataBase()
-+{
-+#ifndef USE_SYSTEM_GEOIP
-+ Out(SYS_INW | LOG_NOTICE) << "Downloading GeoIP database: " << geoip_url << endl;
-+ download_destination = kt::DataDir(CreateIfNotExists) + geoip_url.fileName();
-+ KIO::CopyJob *job = KIO::copy(geoip_url, QUrl::fromLocalFile(download_destination), KIO::Overwrite | KIO::HideProgressInfo);
-+ connect(job, &KIO::CopyJob::result, this, &GeoIPManager::databaseDownloadFinished);
-+#endif
-+}
-+
-+void GeoIPManager::databaseDownloadFinished(KJob *job)
-+{
-+ if (job->error()) {
-+ Out(SYS_INW | LOG_IMPORTANT) << "Failed to download GeoIP database: " << job->errorString() << endl;
-+ return;
-+ }
-+
-+ if (download_destination.endsWith(QLatin1String(".dat")) || download_destination.endsWith(QLatin1String(".DAT"))) {
-+ Out(SYS_INW | LOG_NOTICE) << "GeoIP database downloaded, opening ... " << endl;
-+ geoip_data_file = download_destination;
-+ if (geo_ip) {
-+ GeoIP_delete(geo_ip);
-+ geo_ip = nullptr;
-+ }
-+ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0);
-+ if (!geo_ip)
-+ Out(SYS_INW | LOG_NOTICE) << "Failed to open GeoIP database " << endl;
-+ } else {
-+ Out(SYS_INW | LOG_NOTICE) << "GeoIP database downloaded, decompressing ... " << endl;
-+ // decompress the file
-+ decompress_thread = new bt::DecompressThread(download_destination, kt::DataDir() + QLatin1String("geoip.dat"));
-+ connect(decompress_thread, &bt::DecompressThread::finished, this, &GeoIPManager::decompressFinished, Qt::QueuedConnection);
-+ decompress_thread->start(QThread::IdlePriority);
-+ }
-+}
-+
-+void GeoIPManager::decompressFinished()
-+{
-+ Out(SYS_INW | LOG_NOTICE) << "GeoIP database decompressed, opening ... " << endl;
-+ if (!decompress_thread->error()) {
-+ geoip_data_file = kt::DataDir() + QLatin1String("geoip.dat");
-+ if (geo_ip) {
-+ GeoIP_delete(geo_ip);
-+ geo_ip = nullptr;
-+ }
-+ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0);
-+ if (!geo_ip)
-+ Out(SYS_INW | LOG_NOTICE) << "Failed to open GeoIP database " << endl;
-+ }
-+
-+ decompress_thread->wait();
-+ delete decompress_thread;
-+ decompress_thread = nullptr;
-+}
-+
-+void GeoIPManager::setGeoIPUrl(const QUrl &url)
-+{
-+ geoip_url = url;
-+}
+--- ./plugins/infowidget/CMakeLists.txt.orig 2022-04-13 21:50:05.000000000 -0500
++++ ./plugins/infowidget/CMakeLists.txt 2022-04-22 13:06:19.029711817 -0500
+@@ -1,23 +1,31 @@
+-# Add an option to compile & link against system GeoIP
++# Add an option to compile & link against system GeoIP (off by default)
+ option(BUILD_WITH_GEOIP
+ "Link InfoWidget plugin against system GeoIP library and use system-wide default GeoIP Country database"
+- ON)
++ OFF)
+
+-if (BUILD_WITH_GEOIP)
++if (WITH_SYSTEM_GEOIP)
+ find_path(GEOIP_INCLUDE_DIR NAMES GeoIP.h PATHS / ${INCLUDE_INSTALL_DIR}/)
+- find_library(GEOIP_LIBRARY NAMES GeoIP PATHS ${LIB_INSTALL_DIR})
++ find_library(GEOIP_LIBRARY NAMES GeoIP PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR})
+
+ if (NOT GEOIP_INCLUDE_DIR OR NOT GEOIP_LIBRARY)
+- set(BUILD_WITH_GEOIP OFF CACHE BOOL
++ set(WITH_SYSTEM_GEOIP OFF CACHE BOOL
+ "GeoIP development files could not be found on this system. Forcing this option to OFF"
+ FORCE)
+- message(WARNING "GeoIP library development files could not be found on your system.")
+- else()
+- message(STATUS " Linking InfoWidget against system GeoIP library")
+- include_directories(${GEOIP_INCLUDE_DIR})
+- set(geoip_link ${GEOIP_LIBRARY})
+- endif()
+-endif(BUILD_WITH_GEOIP)
++ message(SEND_ERROR
++ "GeoIP library development files could not be found on your system. Embedding a local copy of GeoIP instead")
++ endif(NOT GEOIP_INCLUDE_DIR OR NOT GEOIP_LIBRARY)
++endif(WITH_SYSTEM_GEOIP)
+
-+///////////////////////////////////
++if (WITH_SYSTEM_GEOIP)
++ message(STATUS " Linking InfoWidget against system GeoIP library")
++ add_definitions( -DUSE_SYSTEM_GEOIP )
++ include_directories(GEOIP_INCLUDE_DIR)
++ set(geoip_link ${GEOIP_LIBRARY})
++else(WITH_SYSTEM_GEOIP)
++ message(STATUS " Compiling GeoIP support directly into InfoWidget plugin")
++ set(geoip_src GeoIP.c)
++endif(WITH_SYSTEM_GEOIP)
+
- }
---- ./plugins/infowidget/GeoIP.c.orig 2021-08-15 00:18:01.329498947 -0500
-+++ ./plugins/infowidget/GeoIP.c 2021-08-15 00:18:01.329498947 -0500
+
+ ktorrent_add_plugin(ktorrent_infowidget)
+
+@@ -36,19 +44,14 @@
+ trackerview.cpp
+ trackermodel.cpp
+ addtrackersdialog.cpp
++ ${geoip_src}
++ geoipmanager.cpp
+ flagdb.cpp
+ iwfiletreemodel.cpp
+ iwfilelistmodel.cpp
+ webseedstab.cpp
+ webseedsmodel.cpp)
+
+-if (BUILD_WITH_GEOIP)
+- target_sources(ktorrent_infowidget PRIVATE geoipmanager.cpp)
+- add_definitions(-DBUILD_WITH_GEOIP=1)
+-else()
+- add_definitions(-DBUILD_WITH_GEOIP=0)
+-endif()
+-
+ ki18n_wrap_ui(ktorrent_infowidget iwprefpage.ui statustab.ui chunkdownloadview.ui trackerview.ui webseedstab.ui)
+ kconfig_add_kcfg_files(ktorrent_infowidget infowidgetpluginsettings.kcfgc)
+
+--- ./plugins/infowidget/GeoIP.c.orig 2022-04-22 13:03:03.206722648 -0500
++++ ./plugins/infowidget/GeoIP.c 2022-04-22 13:03:03.206722648 -0500
@@ -0,0 +1,968 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */
+/* GeoIP.c
@@ -1237,238 +1345,130 @@
+{
+ return gi->databaseType;
+}
---- ./plugins/infowidget/CMakeLists.txt.orig 2021-08-04 21:50:44.000000000 -0500
-+++ ./plugins/infowidget/CMakeLists.txt 2021-08-15 00:20:25.218503074 -0500
-@@ -1,23 +1,30 @@
--# Add an option to compile & link against system GeoIP
--option(BUILD_WITH_GEOIP
-+# Add an option to compile & link against system GeoIP (off by default)
-+option(WITH_SYSTEM_GEOIP
- "Link InfoWidget plugin against system GeoIP library and use system-wide default GeoIP Country database"
-- ON)
-+ OFF)
-
--if (BUILD_WITH_GEOIP)
-+if (WITH_SYSTEM_GEOIP)
- find_path(GEOIP_INCLUDE_DIR NAMES GeoIP.h PATHS / ${INCLUDE_INSTALL_DIR}/)
-- find_library(GEOIP_LIBRARY NAMES GeoIP PATHS ${LIB_INSTALL_DIR})
-+ find_library(GEOIP_LIBRARY NAMES GeoIP PATHS ${KDE4_LIB_DIR} ${LIB_INSTALL_DIR})
-
- if (NOT GEOIP_INCLUDE_DIR OR NOT GEOIP_LIBRARY)
-- set(BUILD_WITH_GEOIP OFF CACHE BOOL
-+ set(WITH_SYSTEM_GEOIP OFF CACHE BOOL
- "GeoIP development files could not be found on this system. Forcing this option to OFF"
- FORCE)
-- message(WARNING "GeoIP library development files could not be found on your system.")
-- else()
-- message(STATUS " Linking InfoWidget against system GeoIP library")
-- include_directories(GEOIP_INCLUDE_DIR)
-- set(geoip_link ${GEOIP_LIBRARY})
-- endif()
--endif(BUILD_WITH_GEOIP)
-+ message(SEND_ERROR
-+ "GeoIP library development files could not be found on your system. Embedding a local copy of GeoIP instead")
-+ endif(NOT GEOIP_INCLUDE_DIR OR NOT GEOIP_LIBRARY)
-+endif(WITH_SYSTEM_GEOIP)
-+
-+if (WITH_SYSTEM_GEOIP)
-+ message(STATUS " Linking InfoWidget against system GeoIP library")
-+ add_definitions( -DUSE_SYSTEM_GEOIP )
-+ include_directories(GEOIP_INCLUDE_DIR)
-+ set(geoip_link ${GEOIP_LIBRARY})
-+else(WITH_SYSTEM_GEOIP)
-+ message(STATUS " Compiling GeoIP support directly into InfoWidget plugin")
-+ set(geoip_src GeoIP.c)
-+endif(WITH_SYSTEM_GEOIP)
-
- add_library(ktorrent_infowidget MODULE)
-
-@@ -36,19 +43,14 @@
- trackerview.cpp
- trackermodel.cpp
- addtrackersdialog.cpp
-+ ${geoip_src}
-+ geoipmanager.cpp
- flagdb.cpp
- iwfiletreemodel.cpp
- iwfilelistmodel.cpp
- webseedstab.cpp
- webseedsmodel.cpp)
-
--if (BUILD_WITH_GEOIP)
-- target_sources(ktorrent_infowidget PRIVATE geoipmanager.cpp)
-- add_definitions(-DBUILD_WITH_GEOIP=1)
--else()
-- add_definitions(-DBUILD_WITH_GEOIP=0)
--endif()
--
- ki18n_wrap_ui(ktorrent_infowidget iwprefpage.ui statustab.ui chunkdownloadview.ui trackerview.ui webseedstab.ui)
- kconfig_add_kcfg_files(ktorrent_infowidget infowidgetpluginsettings.kcfgc)
+--- ./plugins/infowidget/infowidgetplugin.cpp.orig 2022-04-13 21:50:05.000000000 -0500
++++ ./plugins/infowidget/infowidgetplugin.cpp 2022-04-22 13:03:03.206722648 -0500
+@@ -18,6 +18,7 @@
---- ./plugins/infowidget/geoipmanager.h.orig 2021-08-04 21:50:44.000000000 -0500
-+++ ./plugins/infowidget/geoipmanager.h 2021-08-15 00:18:01.330498947 -0500
-@@ -7,7 +7,21 @@
- #define KT_GEOIPMANAGER_H
+ #include "chunkdownloadview.h"
+ #include "fileview.h"
++#include "geoipmanager.h"
+ #include "infowidgetpluginsettings.h"
+ #include "iwprefpage.h"
+ #include "monitor.h"
+--- ./plugins/infowidget/geoipmanager.cpp.orig 2022-04-13 21:50:05.000000000 -0500
++++ ./plugins/infowidget/geoipmanager.cpp 2022-04-22 13:03:03.206722648 -0500
+@@ -20,16 +20,47 @@
- #include <QObject>
-+#include <QThread>
-+#include <QUrl>
+ namespace kt
+ {
++QUrl GeoIPManager::geoip_url = QUrl(QStringLiteral("http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz"));
+
+ GeoIPManager::GeoIPManager(QObject *parent)
+ : QObject(parent)
++ , geo_ip(nullptr)
++ , decompress_thread(nullptr)
+ {
+#ifdef USE_SYSTEM_GEOIP
- #include <GeoIP.h>
+ geo_ip = GeoIP_open_type(GEOIP_COUNTRY_EDITION, GEOIP_STANDARD);
+#else
-+#include "GeoIP.h"
++ geoip_data_file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("geoip.dat"));
++ if (geoip_data_file.isEmpty())
++ geoip_data_file = QStandardPaths::locate(QStandardPaths::AppDataLocation, QStringLiteral("GeoIP.dat"));
++
++ if (geoip_data_file.isEmpty()) {
++ downloadDataBase();
++ } else {
++ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0);
++ if (geo_ip) {
++ QFileInfo fi(geoip_data_file);
++ QDateTime now = QDateTime::currentDateTime();
++ if (fi.lastModified().daysTo(now) >= 30) {
++ // if the last time the geoip file was modified, was more then
++ // 30 days ago, redownload it
++ downloadDataBase();
++ }
++ }
++ }
+#endif
+ }
+
+ GeoIPManager::~GeoIPManager()
+ {
+ if (geo_ip)
+ GeoIP_delete(geo_ip);
+
-+class KJob;
++ if (decompress_thread) {
++ decompress_thread->cancel();
++ decompress_thread->wait();
++ delete decompress_thread;
++ }
+ }
+
+ int GeoIPManager::findCountry(const QString &addr)
+@@ -56,4 +87,66 @@
+ return QString();
+ }
+
++void GeoIPManager::downloadDataBase()
++{
++#ifndef USE_SYSTEM_GEOIP
++ Out(SYS_INW | LOG_NOTICE) << "Downloading GeoIP database: " << geoip_url << endl;
++ download_destination = kt::DataDir(CreateIfNotExists) + geoip_url.fileName();
++ KIO::CopyJob *job = KIO::copy(geoip_url, QUrl::fromLocalFile(download_destination), KIO::Overwrite | KIO::HideProgressInfo);
++ connect(job, &KIO::CopyJob::result, this, &GeoIPManager::databaseDownloadFinished);
++#endif
++}
+
-+namespace bt
++void GeoIPManager::databaseDownloadFinished(KJob *job)
+{
-+class DecompressThread;
++ if (job->error()) {
++ Out(SYS_INW | LOG_IMPORTANT) << "Failed to download GeoIP database: " << job->errorString() << endl;
++ return;
++ }
++
++ if (download_destination.endsWith(QLatin1String(".dat")) || download_destination.endsWith(QLatin1String(".DAT"))) {
++ Out(SYS_INW | LOG_NOTICE) << "GeoIP database downloaded, opening ... " << endl;
++ geoip_data_file = download_destination;
++ if (geo_ip) {
++ GeoIP_delete(geo_ip);
++ geo_ip = nullptr;
++ }
++ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0);
++ if (!geo_ip)
++ Out(SYS_INW | LOG_NOTICE) << "Failed to open GeoIP database " << endl;
++ } else {
++ Out(SYS_INW | LOG_NOTICE) << "GeoIP database downloaded, decompressing ... " << endl;
++ // decompress the file
++ decompress_thread = new bt::DecompressThread(download_destination, kt::DataDir() + QLatin1String("geoip.dat"));
++ connect(decompress_thread, &bt::DecompressThread::finished, this, &GeoIPManager::decompressFinished, Qt::QueuedConnection);
++ decompress_thread->start(QThread::IdlePriority);
++ }
+}
-
- namespace kt
- {
-@@ -42,8 +56,28 @@
- */
- QString countryCode(int country_id);
-
-+ /// Get the database URL
-+ static QUrl geoIPUrl()
-+ {
-+ return geoip_url;
++
++void GeoIPManager::decompressFinished()
++{
++ Out(SYS_INW | LOG_NOTICE) << "GeoIP database decompressed, opening ... " << endl;
++ if (!decompress_thread->error()) {
++ geoip_data_file = kt::DataDir() + QLatin1String("geoip.dat");
++ if (geo_ip) {
++ GeoIP_delete(geo_ip);
++ geo_ip = nullptr;
++ }
++ geo_ip = GeoIP_open(QFile::encodeName(geoip_data_file).data(), 0);
++ if (!geo_ip)
++ Out(SYS_INW | LOG_NOTICE) << "Failed to open GeoIP database " << endl;
+ }
+
-+ /// Set the database URL
-+ static void setGeoIPUrl(const QUrl &url);
++ decompress_thread->wait();
++ delete decompress_thread;
++ decompress_thread = nullptr;
++}
+
-+ /// Download the database
-+ void downloadDataBase();
++void GeoIPManager::setGeoIPUrl(const QUrl &url)
++{
++ geoip_url = url;
++}
+
-+private Q_SLOTS:
-+ void databaseDownloadFinished(KJob *job);
-+ void decompressFinished();
++///////////////////////////////////
+
- private:
- GeoIP *geo_ip;
-+ QString geoip_data_file;
-+ QString download_destination;
-+ bt::DecompressThread *decompress_thread;
-+ static QUrl geoip_url;
- };
-
- }
---- ./plugins/infowidget/peerviewmodel.cpp.orig 2021-08-04 21:50:44.000000000 -0500
-+++ ./plugins/infowidget/peerviewmodel.cpp 2021-08-15 00:18:01.330498947 -0500
-@@ -13,13 +13,10 @@
- #include <KLocalizedString>
-
- #include "flagdb.h"
-+#include "geoipmanager.h"
- #include <interfaces/torrentinterface.h>
- #include <util/functions.h>
-
--#if BUILD_WITH_GEOIP
--#include "geoipmanager.h"
--#endif
--
- using namespace bt;
-
- namespace kt
-@@ -28,12 +25,7 @@
- static bool icons_loaded = false;
- static FlagDB flagDB(22, 18);
-
--PeerViewModel::Item::Item(bt::PeerInterface *peer
--#if BUILD_WITH_GEOIP
-- ,
-- GeoIPManager *geo_ip
--#endif
-- )
-+PeerViewModel::Item::Item(bt::PeerInterface *peer, GeoIPManager *geo_ip)
- : peer(peer)
- {
- stats = peer->getStats();
-@@ -47,13 +39,13 @@
- flagDB.addFlagSource(path + QStringLiteral("/%1/flag.png"));
- }
-
--#if BUILD_WITH_GEOIP
-- int country_id = geo_ip->findCountry(stats.ip_address);
-- if (country_id > 0) {
-- country = geo_ip->countryName(country_id);
-- flag = flagDB.getFlag(geo_ip->countryCode(country_id));
-+ if (geo_ip) {
-+ int country_id = geo_ip->findCountry(stats.ip_address);
-+ if (country_id > 0) {
-+ country = geo_ip->countryName(country_id);
-+ flag = flagDB.getFlag(geo_ip->countryCode(country_id));
-+ }
- }
--#endif
- }
-
- bool PeerViewModel::Item::changed() const
-@@ -191,10 +183,9 @@
-
- PeerViewModel::PeerViewModel(QObject *parent)
- : QAbstractTableModel(parent)
-+ , geo_ip(nullptr)
- {
--#if BUILD_WITH_GEOIP
- geo_ip = new GeoIPManager(this);
--#endif
- }
-
- PeerViewModel::~PeerViewModel()
-@@ -204,12 +195,7 @@
-
- void PeerViewModel::peerAdded(bt::PeerInterface *peer)
- {
-- items.append(new Item(peer
--#if BUILD_WITH_GEOIP
-- ,
-- geo_ip
--#endif
-- ));
-+ items.append(new Item(peer, geo_ip));
- insertRow(items.count() - 1);
- }
-
---- ./plugins/infowidget/infowidgetplugin.cpp.orig 2021-08-04 21:50:44.000000000 -0500
-+++ ./plugins/infowidget/infowidgetplugin.cpp 2021-08-15 00:18:01.330498947 -0500
-@@ -18,6 +18,7 @@
-
- #include "chunkdownloadview.h"
- #include "fileview.h"
-+#include "geoipmanager.h"
- #include "infowidgetpluginsettings.h"
- #include "iwprefpage.h"
- #include "monitor.h"
---- ./plugins/infowidget/peerviewmodel.h.orig 2021-08-04 21:50:44.000000000 -0500
-+++ ./plugins/infowidget/peerviewmodel.h 2021-08-15 00:18:01.331498947 -0500
-@@ -61,12 +61,7 @@
- QString country;
- QIcon flag;
-
-- Item(bt::PeerInterface *peer
--#if BUILD_WITH_GEOIP
-- ,
-- GeoIPManager *geo_ip
--#endif
-- );
-+ Item(bt::PeerInterface *peer, GeoIPManager *geo_ip);
-
- bool changed() const;
- QVariant data(int col) const;
-@@ -76,9 +71,7 @@
-
- private:
- QVector<Item *> items;
--#if BUILD_WITH_GEOIP
-- GeoIPManager *geo_ip = nullptr;
--#endif
-+ GeoIPManager *geo_ip;
- };
-
}
diff --git a/source/kde/kde/patch/kwave.patch b/source/kde/kde/patch/kwave.patch
deleted file mode 100644
index e2c07b02d..000000000
--- a/source/kde/kde/patch/kwave.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/kwave/kwave.gcc11.limits.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kwave/kwave.gcc11.limits.patch b/source/kde/kde/patch/kwave/kwave.gcc11.limits.patch
deleted file mode 100644
index 09df72a97..000000000
--- a/source/kde/kde/patch/kwave/kwave.gcc11.limits.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ./plugins/codec_wav/WavDecoder.cpp.orig 2021-07-05 14:10:02.000000000 -0500
-+++ ./plugins/codec_wav/WavDecoder.cpp 2021-08-05 11:47:18.353814614 -0500
-@@ -18,6 +18,7 @@
- #include "config.h"
- #include <stdlib.h>
- #include <new>
-+#include <limits>
-
- #include <audiofile.h>
-
diff --git a/source/kde/kde/patch/kwayland-server.patch b/source/kde/kde/patch/kwayland-server.patch
deleted file mode 100644
index f1b4e7273..000000000
--- a/source/kde/kde/patch/kwayland-server.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch b/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch
deleted file mode 100644
index 50d1314cf..000000000
--- a/source/kde/kde/patch/kwayland-server/5f5bea1648590f24f11ce232eb78112953a4d20e.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 5f5bea1648590f24f11ce232eb78112953a4d20e Mon Sep 17 00:00:00 2001
-From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
-Date: Mon, 10 Jan 2022 13:17:32 +0200
-Subject: [PATCH] Store surface object in tablet cursor using QPointer
-
-The SurfaceInterface can get destroyed and TabletCursorV2 may return a
-dangling pointer.
-
-BUG: 446255
----
- src/server/tablet_v2_interface.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/server/tablet_v2_interface.cpp b/src/server/tablet_v2_interface.cpp
-index 59a4b2fb..8af80603 100644
---- a/src/server/tablet_v2_interface.cpp
-+++ b/src/server/tablet_v2_interface.cpp
-@@ -91,7 +91,7 @@ public:
- TabletCursorV2 *const q;
-
- quint32 m_serial = 0;
-- SurfaceInterface *m_surface = nullptr;
-+ QPointer<SurfaceInterface> m_surface;
- QPoint m_hotspot;
- };
-
---
-GitLab
-
diff --git a/source/kde/kde/patch/kwin.patch b/source/kde/kde/patch/kwin.patch
deleted file mode 100644
index 829028e5b..000000000
--- a/source/kde/kde/patch/kwin.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch b/source/kde/kde/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch
deleted file mode 100644
index 7968887a6..000000000
--- a/source/kde/kde/patch/kwin/0001-Bypass-wayland-interface-blacklisting.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 76abce728d3abb94c71076e6211a0da655397b0f Mon Sep 17 00:00:00 2001
-From: Fabian Vogt <fabian@ritter-vogt.de>
-Date: Tue, 12 Nov 2019 13:18:26 +0100
-Subject: [PATCH] Bypass wayland interface blacklisting
-
-Currently the check isn't worth anything and it breaks some applications.
-See discussion on https://phabricator.kde.org/D22571 and https://phabricator.kde.org/T4437#207062.
----
- src/wayland_server.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/wayland_server.cpp b/src/wayland_server.cpp
-index e93d51911..95f3a746a 100644
---- a/src/wayland_server.cpp
-+++ b/src/wayland_server.cpp
-@@ -130,6 +130,7 @@ public:
- QSet<QString> m_reported;
-
- bool allowInterface(KWaylandServer::ClientConnection *client, const QByteArray &interfaceName) override {
-+ return true;
- if (client->processId() == getpid()) {
- return true;
- }
---
-2.25.1
-
diff --git a/source/kde/kde/patch/libkscreen.patch b/source/kde/kde/patch/libkscreen.patch
deleted file mode 100644
index 13980ceb2..000000000
--- a/source/kde/kde/patch/libkscreen.patch
+++ /dev/null
@@ -1,2 +0,0 @@
-cat $CWD/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch b/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch
deleted file mode 100644
index b0e5e7136..000000000
--- a/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch
+++ /dev/null
@@ -1,240 +0,0 @@
-From 7eb0390bf70fc7fb5a39bd501ffcc327a07c328a Mon Sep 17 00:00:00 2001
-From: Ilya Pominov <ipominov@astralinux.ru>
-Date: Thu, 23 Sep 2021 14:24:16 +0300
-Subject: [PATCH] XrandR: Fix impossibilty to change resolution in VirtualBox
-
-In VirtualBox KDE runs at low resolution,
-and when you try to change the resolution through the "Screen Settings"
-it returns to the original one again.
-How to check:
-- run KDE neon on VirtualBox
-- change the resolution
-
-VirtualBox sets the hotplug_mode_update property, but its preferred mode
-is always 800x600, and KScreen returns the resolution to 800x600.
-
-Now XRandRCrtc stores the timestamp of the last resolution change
-request from backend, and the timestamp of the last config update from
-X11.
-If the changes were initiated by XRandR backend (i.e. 'timestamp of the
-last config update from X11' less or equal 'last resolution change
-request'), then the followPreferedMode flag in KScreenConfig is set to
-false.
-
-BUG: 407058
----
- backends/xcbeventlistener.cpp | 7 ++++++-
- backends/xcbeventlistener.h | 2 +-
- backends/xrandr/xrandr.cpp | 4 +++-
- backends/xrandr/xrandr.h | 2 +-
- backends/xrandr/xrandrconfig.cpp | 9 +++++++--
- backends/xrandr/xrandrcrtc.cpp | 23 +++++++++++++++++++++++
- backends/xrandr/xrandrcrtc.h | 7 +++++++
- backends/xrandr/xrandroutput.cpp | 2 +-
- 8 files changed, 49 insertions(+), 7 deletions(-)
-
-diff --git a/backends/xcbeventlistener.cpp b/backends/xcbeventlistener.cpp
-index dba81dc..4c3a527 100644
---- a/backends/xcbeventlistener.cpp
-+++ b/backends/xcbeventlistener.cpp
-@@ -139,6 +139,8 @@ void XCBEventListener::handleScreenChange(xcb_generic_event_t *e)
- }
-
- qCDebug(KSCREEN_XCB_HELPER) << "RRScreenChangeNotify";
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << e2->timestamp;
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tConfig_timestamp: " << e2->config_timestamp;
- qCDebug(KSCREEN_XCB_HELPER) << "\tWindow:" << e2->request_window;
- qCDebug(KSCREEN_XCB_HELPER) << "\tRoot:" << e2->root;
- qCDebug(KSCREEN_XCB_HELPER) << "\tRotation: " << rotationToString((xcb_randr_rotation_t)e2->rotation);
-@@ -157,15 +159,17 @@ void XCBEventListener::handleXRandRNotify(xcb_generic_event_t *e)
- if (randrEvent->subCode == XCB_RANDR_NOTIFY_CRTC_CHANGE) {
- xcb_randr_crtc_change_t crtc = randrEvent->u.cc;
- qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_CrtcChange";
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << crtc.timestamp;
- qCDebug(KSCREEN_XCB_HELPER) << "\tCRTC: " << crtc.crtc;
- qCDebug(KSCREEN_XCB_HELPER) << "\tMode: " << crtc.mode;
- qCDebug(KSCREEN_XCB_HELPER) << "\tRotation: " << rotationToString((xcb_randr_rotation_t)crtc.rotation);
- qCDebug(KSCREEN_XCB_HELPER) << "\tGeometry: " << crtc.x << crtc.y << crtc.width << crtc.height;
-- Q_EMIT crtcChanged(crtc.crtc, crtc.mode, (xcb_randr_rotation_t)crtc.rotation, QRect(crtc.x, crtc.y, crtc.width, crtc.height));
-+ Q_EMIT crtcChanged(crtc.crtc, crtc.mode, (xcb_randr_rotation_t)crtc.rotation, QRect(crtc.x, crtc.y, crtc.width, crtc.height), crtc.timestamp);
-
- } else if (randrEvent->subCode == XCB_RANDR_NOTIFY_OUTPUT_CHANGE) {
- xcb_randr_output_change_t output = randrEvent->u.oc;
- qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_OutputChange";
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << output.timestamp;
- qCDebug(KSCREEN_XCB_HELPER) << "\tOutput: " << output.output;
- qCDebug(KSCREEN_XCB_HELPER) << "\tCRTC: " << output.crtc;
- qCDebug(KSCREEN_XCB_HELPER) << "\tMode: " << output.mode;
-@@ -181,6 +185,7 @@ void XCBEventListener::handleXRandRNotify(xcb_generic_event_t *e)
- xcb_get_atom_name_reply(QX11Info::connection(), xcb_get_atom_name(QX11Info::connection(), property.atom), nullptr));
-
- qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_OutputProperty (ignored)";
-+ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << property.timestamp;
- qCDebug(KSCREEN_XCB_HELPER) << "\tOutput: " << property.output;
- qCDebug(KSCREEN_XCB_HELPER) << "\tProperty: " << xcb_get_atom_name_name(reply.data());
- qCDebug(KSCREEN_XCB_HELPER) << "\tState (newValue, Deleted): " << property.status;
-diff --git a/backends/xcbeventlistener.h b/backends/xcbeventlistener.h
-index 35577d9..68136d8 100644
---- a/backends/xcbeventlistener.h
-+++ b/backends/xcbeventlistener.h
-@@ -30,7 +30,7 @@ Q_SIGNALS:
- void outputsChanged();
-
- /* Emitted only when XRandR 1.2 or newer is available */
-- void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
-+ void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp);
- void outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_connection_t connection);
- void outputPropertyChanged(xcb_randr_output_t output);
-
-diff --git a/backends/xrandr/xrandr.cpp b/backends/xrandr/xrandr.cpp
-index 71cbd77..115f268 100644
---- a/backends/xrandr/xrandr.cpp
-+++ b/backends/xrandr/xrandr.cpp
-@@ -45,6 +45,7 @@ XRandR::XRandR()
- qRegisterMetaType<xcb_randr_mode_t>("xcb_randr_mode_t");
- qRegisterMetaType<xcb_randr_connection_t>("xcb_randr_connection_t");
- qRegisterMetaType<xcb_randr_rotation_t>("xcb_randr_rotation_t");
-+ qRegisterMetaType<xcb_timestamp_t>("xcb_timestamp_t");
-
- // Use our own connection to make sure that we won't mess up Qt's connection
- // if something goes wrong on our side.
-@@ -143,7 +144,7 @@ void XRandR::outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb
- qCDebug(KSCREEN_XRANDR) << "Output" << xOutput->id() << ": connected =" << xOutput->isConnected() << ", enabled =" << xOutput->isEnabled();
- }
-
--void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom)
-+void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp)
- {
- XRandRCrtc *xCrtc = s_internalConfig->crtc(crtc);
- if (!xCrtc) {
-@@ -152,6 +153,7 @@ void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr
- xCrtc->update(mode, rotation, geom);
- }
-
-+ xCrtc->updateConfigTimestamp(timestamp);
- m_configChangeCompressor->start();
- }
-
-diff --git a/backends/xrandr/xrandr.h b/backends/xrandr/xrandr.h
-index 91dd7aa..6b998c8 100644
---- a/backends/xrandr/xrandr.h
-+++ b/backends/xrandr/xrandr.h
-@@ -44,7 +44,7 @@ public:
-
- private:
- void outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_connection_t connection);
-- void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
-+ void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp);
- void screenChanged(xcb_randr_rotation_t rotation, const QSize &sizePx, const QSize &sizeMm);
-
- static quint8 *getXProperty(xcb_randr_output_t output, xcb_atom_t atom, size_t &len);
-diff --git a/backends/xrandr/xrandrconfig.cpp b/backends/xrandr/xrandrconfig.cpp
-index fa0929c..5cbf4c7 100644
---- a/backends/xrandr/xrandrconfig.cpp
-+++ b/backends/xrandr/xrandrconfig.cpp
-@@ -504,6 +504,8 @@ bool XRandRConfig::disableOutput(const OutputPtr &kscreenOutput) const
- XCB_NONE,
- xOutput->isConnected() ? XCB_RANDR_CONNECTION_CONNECTED : XCB_RANDR_CONNECTION_DISCONNECTED,
- kscreenOutput->isPrimary());
-+ if (xOutput->crtc())
-+ xOutput->crtc()->updateTimestamp(reply->timestamp);
- }
- return (reply->status == XCB_RANDR_SET_CONFIG_SUCCESS);
- }
-@@ -573,7 +575,7 @@ bool XRandRConfig::changeOutput(const KScreen::OutputPtr &kscreenOutput) const
- << "\n"
- << "\tCRTC:" << xOutput->crtc()->crtc() << "\n"
- << "\tPos:" << kscreenOutput->pos() << "\n"
-- << "\tMode:" << modeId << kscreenOutput->currentMode() << "\n"
-+ << "\tMode:" << kscreenOutput->currentMode() << "Preferred:" << kscreenOutput->preferredModeId() << "\n"
- << "\tRotation:" << kscreenOutput->rotation();
-
- if (!sendConfig(kscreenOutput, xOutput->crtc())) {
-@@ -605,6 +607,9 @@ bool XRandRConfig::sendConfig(const KScreen::OutputPtr &kscreenOutput, XRandRCrt
- qCDebug(KSCREEN_XRANDR) << "\tResult: unknown (error)";
- return false;
- }
-- qCDebug(KSCREEN_XRANDR) << "\tResult: " << reply->status;
-+
-+ crtc->updateTimestamp(reply->timestamp);
-+
-+ qCDebug(KSCREEN_XRANDR) << "\tResult: " << reply->status << " timestamp: " << reply->timestamp;
- return (reply->status == XCB_RANDR_SET_CONFIG_SUCCESS);
- }
-diff --git a/backends/xrandr/xrandrcrtc.cpp b/backends/xrandr/xrandrcrtc.cpp
-index c3cd291..9209501 100644
---- a/backends/xrandr/xrandrcrtc.cpp
-+++ b/backends/xrandr/xrandrcrtc.cpp
-@@ -16,6 +16,8 @@ XRandRCrtc::XRandRCrtc(xcb_randr_crtc_t crtc, XRandRConfig *config)
- , m_crtc(crtc)
- , m_mode(0)
- , m_rotation(XCB_RANDR_ROTATION_ROTATE_0)
-+ , m_timestamp(XCB_CURRENT_TIME)
-+ , m_configTimestamp(XCB_CURRENT_TIME)
- {
- update();
- }
-@@ -111,3 +113,24 @@ void XRandRCrtc::update(xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, co
- m_geometry = geom;
- m_rotation = rotation;
- }
-+
-+void XRandRCrtc::updateTimestamp(const xcb_timestamp_t tmstamp)
-+{
-+ if (tmstamp > m_timestamp) {
-+ qCDebug(KSCREEN_XRANDR) << "XRandRCrtc " << m_crtc << " m_timestamp update " << m_timestamp << " => " << tmstamp;
-+ m_timestamp = tmstamp;
-+ }
-+}
-+
-+void XRandRCrtc::updateConfigTimestamp(const xcb_timestamp_t tmstamp)
-+{
-+ if (tmstamp > m_configTimestamp) {
-+ qCDebug(KSCREEN_XRANDR) << "XRandRCrtc " << m_crtc << " m_configTimestamp update" << m_configTimestamp << " => " << tmstamp;
-+ m_configTimestamp = tmstamp;
-+ }
-+}
-+
-+bool XRandRCrtc::isChangedFromOutside() const
-+{
-+ return m_configTimestamp > m_timestamp;
-+}
-diff --git a/backends/xrandr/xrandrcrtc.h b/backends/xrandr/xrandrcrtc.h
-index 4de4a09..8be23d2 100644
---- a/backends/xrandr/xrandrcrtc.h
-+++ b/backends/xrandr/xrandrcrtc.h
-@@ -41,6 +41,10 @@ public:
- void update();
- void update(xcb_randr_crtc_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
-
-+ void updateTimestamp(const xcb_timestamp_t tmstamp);
-+ void updateConfigTimestamp(const xcb_timestamp_t tmstamp);
-+ bool isChangedFromOutside() const;
-+
- private:
- xcb_randr_crtc_t m_crtc;
- xcb_randr_mode_t m_mode;
-@@ -50,4 +54,7 @@ private:
-
- QVector<xcb_randr_output_t> m_possibleOutputs;
- QVector<xcb_randr_output_t> m_outputs;
-+
-+ xcb_timestamp_t m_timestamp;
-+ xcb_timestamp_t m_configTimestamp;
- };
-diff --git a/backends/xrandr/xrandroutput.cpp b/backends/xrandr/xrandroutput.cpp
-index 92a39cf..4aa2290 100644
---- a/backends/xrandr/xrandroutput.cpp
-+++ b/backends/xrandr/xrandroutput.cpp
-@@ -403,7 +403,7 @@ KScreen::OutputPtr XRandROutput::toKScreenOutput() const
-
- // See https://bugzilla.redhat.com/show_bug.cgi?id=1290586
- // QXL will be creating a new mode we need to jump to every time the display is resized
-- kscreenOutput->setFollowPreferredMode(m_hotplugModeUpdate);
-+ kscreenOutput->setFollowPreferredMode(m_hotplugModeUpdate && m_crtc && m_crtc->isChangedFromOutside());
-
- kscreenOutput->setConnected(isConnected());
- if (isConnected()) {
---
-GitLab
-
diff --git a/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch b/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch
deleted file mode 100644
index 38e932be9..000000000
--- a/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch
+++ /dev/null
@@ -1,219 +0,0 @@
-From cf0921f3fbde31cb94b9ccddcaba36da3a488483 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven29@gmail.com>
-Date: Thu, 2 Dec 2021 16:04:20 +0000
-Subject: [PATCH] Under X11 ignore per-screen scale to compute logicalSize
-
----
- src/config.cpp | 32 ++++++++++++++++++++++++++++++++
- src/config.h | 4 ++++
- src/output.cpp | 39 +++++++++------------------------------
- src/output.h | 18 ++++--------------
- 4 files changed, 49 insertions(+), 44 deletions(-)
- mode change 100644 => 100755 src/output.h
-
-diff --git a/src/config.cpp b/src/config.cpp
-index 37e1038..41abf70 100644
---- a/src/config.cpp
-+++ b/src/config.cpp
-@@ -325,6 +325,7 @@ void Config::setPrimaryOutput(const OutputPtr &newPrimary)
- void Config::addOutput(const OutputPtr &output)
- {
- d->outputs.insert(output->id(), output);
-+ output->setExplicitLogicalSize(logicalSizeForOutput(*output));
- connect(output.data(), &KScreen::Output::isPrimaryChanged, d, &KScreen::Config::Private::onPrimaryOutputChanged);
-
- Q_EMIT outputAdded(output);
-@@ -391,6 +392,37 @@ void Config::apply(const ConfigPtr &other)
- setValid(other->isValid());
- }
-
-+QRect Config::outputGeometryForOutput(const KScreen::Output &output) const
-+{
-+ QSize size = logicalSizeForOutput(output).toSize();
-+ if (!size.isValid()) {
-+ return QRect();
-+ }
-+
-+ return QRect(output.pos(), size);
-+}
-+
-+QSizeF Config::logicalSizeForOutput(const KScreen::Output &output) const
-+{
-+ QSizeF size = output.enforcedModeSize();
-+ if (!size.isValid()) {
-+ return QSizeF();
-+ }
-+ // ignore scale where scaling is not per-output
-+ if (supportedFeatures().testFlag(Feature::PerOutputScaling)) {
-+ size = size / output.scale();
-+ }
-+
-+ // We can't use output.size(), because it does not reflect the actual rotation() set by caller.
-+ // It is only updated when we get update from KScreen, but not when user changes mode or
-+ // rotation manually.
-+
-+ if (!output.isHorizontal()) {
-+ size = size.transposed();
-+ }
-+ return size;
-+}
-+
- QDebug operator<<(QDebug dbg, const KScreen::ConfigPtr &config)
- {
- if (config) {
-diff --git a/src/config.h b/src/config.h
-index 551d7d0..4629dab 100644
---- a/src/config.h
-+++ b/src/config.h
-@@ -190,6 +190,10 @@ public:
- */
- void setTabletModeEngaged(bool engaged);
-
-+ QRect outputGeometryForOutput(const KScreen::Output &output) const;
-+
-+ QSizeF logicalSizeForOutput(const KScreen::Output &output) const;
-+
- Q_SIGNALS:
- void outputAdded(const KScreen::OutputPtr &output);
- void outputRemoved(int outputId);
-diff --git a/src/output.cpp b/src/output.cpp
-index c7f5949..a0fae28 100644
---- a/src/output.cpp
-+++ b/src/output.cpp
-@@ -13,6 +13,7 @@
- #include "mode.h"
-
- #include <QCryptographicHash>
-+#include <QGuiApplication>
- #include <QRect>
- #include <QScopedPointer>
- #include <QStringList>
-@@ -28,7 +29,7 @@ public:
- , replicationSource(0)
- , rotation(None)
- , scale(1.0)
-- , logicalSize(QSizeF())
-+ , explicitLogicalSize(QSizeF())
- , connected(false)
- , enabled(false)
- , primary(false)
-@@ -87,7 +88,7 @@ public:
- QSize size;
- Rotation rotation;
- qreal scale;
-- QSizeF logicalSize;
-+ QSizeF explicitLogicalSize;
- bool connected;
- bool enabled;
- bool primary;
-@@ -459,40 +460,18 @@ void Output::setScale(qreal factor)
- Q_EMIT scaleChanged();
- }
-
--QSizeF Output::logicalSize() const
--{
-- if (d->logicalSize.isValid()) {
-- return d->logicalSize;
-- }
--
-- QSizeF size = enforcedModeSize();
-- if (!size.isValid()) {
-- return QSizeF();
-- }
-- size = size / d->scale;
--
-- // We can't use d->size, because d->size does not reflect the actual rotation() set by caller.
-- // It is only updated when we get update from KScreen, but not when user changes mode or
-- // rotation manually.
--
-- if (!isHorizontal()) {
-- size = size.transposed();
-- }
-- return size;
--}
--
- QSizeF Output::explicitLogicalSize() const
- {
-- return d->logicalSize;
-+ return d->explicitLogicalSize;
- }
-
--void Output::setLogicalSize(const QSizeF &size)
-+void Output::setExplicitLogicalSize(const QSizeF &size)
- {
-- if (qFuzzyCompare(d->logicalSize.width(), size.width()) && qFuzzyCompare(d->logicalSize.height(), size.height())) {
-+ if (qFuzzyCompare(d->explicitLogicalSize.width(), size.width()) && qFuzzyCompare(d->explicitLogicalSize.height(), size.height())) {
- return;
- }
-- d->logicalSize = size;
-- Q_EMIT logicalSizeChanged();
-+ d->explicitLogicalSize = size;
-+ Q_EMIT explicitLogicalSizeChanged();
- }
-
- bool Output::isConnected() const
-@@ -628,7 +607,7 @@ QSize Output::enforcedModeSize() const
-
- QRect Output::geometry() const
- {
-- QSize size = logicalSize().toSize();
-+ QSize size = explicitLogicalSize().toSize();
- if (!size.isValid()) {
- return QRect();
- }
-diff --git a/src/output.h b/src/output.h
-old mode 100644
-new mode 100755
-index 2b23ac4..7edb74c
---- a/src/output.h
-+++ b/src/output.h
-@@ -47,7 +47,7 @@ public:
- Q_PROPERTY(QSize sizeMm READ sizeMm CONSTANT)
- Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged)
- Q_PROPERTY(bool followPreferredMode READ followPreferredMode WRITE setFollowPreferredMode NOTIFY followPreferredModeChanged)
-- Q_PROPERTY(QSizeF logicalSize READ logicalSize WRITE setLogicalSize NOTIFY logicalSizeChanged)
-+ Q_PROPERTY(QSizeF explicitLogicalSize READ explicitLogicalSize WRITE setExplicitLogicalSize NOTIFY explicitLogicalSizeChanged)
- Q_PROPERTY(Capabilities capabilities READ capabilities NOTIFY capabilitiesChanged)
- Q_PROPERTY(uint32_t overscan READ overscan WRITE setOverscan NOTIFY overscanChanged)
- Q_PROPERTY(VrrPolicy vrrPolicy READ vrrPolicy WRITE setVrrPolicy NOTIFY vrrPolicyChanged)
-@@ -311,16 +311,6 @@ public:
- */
- void setScale(qreal factor);
-
-- /**
-- * The logical size is the output's representation internal to the display server and its
-- * overall screen geometry.
-- *
-- * returns the logical size of this output
-- *
-- * @since 5.18
-- */
-- QSizeF logicalSize() const;
--
- /**
- * The logical size is the output's representation internal to the display server and its
- * overall screen geometry.
-@@ -338,9 +328,9 @@ public:
- *
- * @param size of this output in logical space
- *
-- * @since 5.18
-+ * @since 5.24
- */
-- void setLogicalSize(const QSizeF &size);
-+ void setExplicitLogicalSize(const QSizeF &size);
-
- /**
- * @returns whether the mode should be changed to the new preferred mode
-@@ -421,7 +411,7 @@ Q_SIGNALS:
- void clonesChanged();
- void replicationSourceChanged();
- void scaleChanged();
-- void logicalSizeChanged();
-+ void explicitLogicalSizeChanged();
- void followPreferredModeChanged(bool followPreferredMode);
- void capabilitiesChanged();
- void overscanChanged();
---
-GitLab
-
diff --git a/source/kde/kde/patch/plasma-nm.patch b/source/kde/kde/patch/plasma-nm.patch
deleted file mode 100644
index 283ff8ebe..000000000
--- a/source/kde/kde/patch/plasma-nm.patch
+++ /dev/null
@@ -1 +0,0 @@
-cat $CWD/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch b/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch
deleted file mode 100644
index 99dbad0f6..000000000
--- a/source/kde/kde/patch/plasma-nm/80c47e577b80364c995aa0530a48e17c1a7e460f.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 80c47e577b80364c995aa0530a48e17c1a7e460f Mon Sep 17 00:00:00 2001
-From: PJ Beers <pj@floorenpj.nl>
-Date: Wed, 1 Dec 2021 20:36:55 +0100
-Subject: [PATCH] OpenVPN: Import tls-crypt keys
-
-Enable importing tls-crypt keys from an openvpn config file. Previously,
-inline tls-crypt keys from *.ovpn files were ignored, causing the
-associated connection to fail after import.
----
- vpn/openvpn/openvpn.cpp | 34 ++++++++++++++++++++++++++++++++++
- 1 file changed, 34 insertions(+)
-
-diff --git a/vpn/openvpn/openvpn.cpp b/vpn/openvpn/openvpn.cpp
-index 9d1bf8ea..b69f7ec0 100644
---- a/vpn/openvpn/openvpn.cpp
-+++ b/vpn/openvpn/openvpn.cpp
-@@ -55,6 +55,7 @@ K_PLUGIN_CLASS_WITH_JSON(OpenVpnUiPlugin, "plasmanetworkmanagement_openvpnui.jso
- #define RPORT_TAG "rport"
- #define SECRET_TAG "secret"
- #define TLS_AUTH_TAG "tls-auth"
-+#define TLS_CRYPT_TAG "tls-crypt"
- #define TLS_CLIENT_TAG "tls-client"
- #define TLS_REMOTE_TAG "tls-remote"
- #define TUNMTU_TAG "tun-mtu"
-@@ -70,6 +71,8 @@ K_PLUGIN_CLASS_WITH_JSON(OpenVpnUiPlugin, "plasmanetworkmanagement_openvpnui.jso
- #define END_KEY_SECRET_TAG "</secret>"
- #define BEGIN_TLS_AUTH_TAG "<tls-auth>"
- #define END_TLS_AUTH_TAG "</tls-auth>"
-+#define BEGIN_TLS_CRYPT_TAG "<tls-crypt>"
-+#define END_TLS_CRYPT_TAG "</tls-crypt>"
-
- #define PROC_TYPE_TAG "Proc-Type: 4,ENCRYPTED"
- #define PKCS8_TAG "-----BEGIN ENCRYPTED PRIVATE KEY-----"
-@@ -497,6 +500,27 @@ NMVariantMapMap OpenVpnUiPlugin::importConnectionSettings(const QString &fileNam
- }
- continue;
- }
-+ if (key_value[0] == TLS_CRYPT_TAG && key_value.count() > 1) {
-+ key_value[1] = line.right(line.length() - line.indexOf(QRegExp("\\s"))); // Get whole string after key
-+
-+ // We will copy inline certificate later when we reach <tls-crypt> tag.
-+ if (key_value[1].trimmed() != QLatin1String("[inline]")) {
-+ if (copyCertificates) {
-+ const QString absoluteFilePath = tryToCopyToCertificatesDirectory(connectionName, unQuote(key_value[1], fileName));
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), absoluteFilePath);
-+ } else {
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), unQuote(key_value[1], fileName));
-+ }
-+ }
-+
-+ if (key_value.count() > 2) {
-+ key_value[2] = key_value[1];
-+ if (!key_value[2].isEmpty() && (key_value[2].toLong() == 0 || key_value[2].toLong() == 1)) {
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TA_DIR), key_value[2]);
-+ }
-+ }
-+ continue;
-+ }
- if (key_value[0] == CIPHER_TAG) {
- if (key_value.count() == 2) {
- dataMap.insert(QLatin1String(NM_OPENVPN_KEY_CIPHER), key_value[1]);
-@@ -596,6 +620,16 @@ NMVariantMapMap OpenVpnUiPlugin::importConnectionSettings(const QString &fileNam
- }
- }
- continue;
-+ } else if (key_value[0] == BEGIN_TLS_CRYPT_TAG) {
-+ const QString tlsAuthAbsolutePath = saveFile(in, QLatin1String(END_TLS_CRYPT_TAG), connectionName, "tls_crypt.key");
-+ if (!tlsAuthAbsolutePath.isEmpty()) {
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TLS_CRYPT), tlsAuthAbsolutePath);
-+
-+ if (key_direction > -1) {
-+ dataMap.insert(QLatin1String(NM_OPENVPN_KEY_TA_DIR), QString().setNum(key_direction));
-+ }
-+ }
-+ continue;
- }
-
- // Import X-NM-Routes if present
---
-GitLab
-
-
diff --git a/source/kde/kde/patch/plasma-sdk.patch b/source/kde/kde/patch/plasma-sdk.patch
new file mode 100644
index 000000000..c232fca2c
--- /dev/null
+++ b/source/kde/kde/patch/plasma-sdk.patch
@@ -0,0 +1,2 @@
+# Remove mistakenly packaged directory to fix build:
+rm -rf po/sv/docs/plasma-sdk
diff --git a/source/kde/kde/patch/plasma-workspace.patch b/source/kde/kde/patch/plasma-workspace.patch
index 7d2b9d398..77645b0cb 100644
--- a/source/kde/kde/patch/plasma-workspace.patch
+++ b/source/kde/kde/patch/plasma-workspace.patch
@@ -1,5 +1 @@
cat $CWD/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/plasma-workspace/70d23b89.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch b/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch
deleted file mode 100644
index 4ed7dc6fa..000000000
--- a/source/kde/kde/patch/plasma-workspace/0001-Revert-Drop-setupX11-from-startplasma-waylandsession.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 5db85cf17cd11236f8ee44ba95dd56b81087c6aa Mon Sep 17 00:00:00 2001
-From: Fabian Vogt <fabian@ritter-vogt.de>
-Date: Thu, 21 Oct 2021 08:20:33 +0200
-Subject: [PATCH 1/2] Revert "Drop setupX11 from startplasma-waylandsession"
-
-This reverts commit 8bf0e43620de3416e783c307ba10111c6964757b.
----
- startkde/startplasma-waylandsession.cpp | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp
-index 3a054a04f..ed496cc24 100644
---- a/startkde/startplasma-waylandsession.cpp
-+++ b/startkde/startplasma-waylandsession.cpp
-@@ -19,6 +19,12 @@ int main(int argc, char **argv)
-
- out << "startplasma-waylandsession: Starting up...";
-
-+ if (qEnvironmentVariableIsSet("DISPLAY")) {
-+ setupX11();
-+ } else {
-+ qWarning() << "running kwin without Xwayland support";
-+ }
-+
- if (!syncDBusEnvironment()) {
- out << "Could not sync environment to dbus.\n";
- return 2;
---
-2.33.0
-
diff --git a/source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch b/source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch
index f4215c4f9..554632be6 100644
--- a/source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch
+++ b/source/kde/kde/patch/plasma-workspace/0001-Revert-No-icons-on-the-desktop-by-default.patch
@@ -8,25 +8,14 @@ This reverts commit 240d0d6fe1e5db88e304199339396bd48c23e130.
We want those icons in openSUSE. They've always been there and there is no
reason not to have them.
---
- kioslave/desktop/CMakeLists.txt | 1 +
- kioslave/desktop/Home.desktop | 88 ++++++++++++++++++++++++++++++++++++++++
- kioslave/desktop/kio_desktop.cpp | 4 ++
+ kioworkers/desktop/CMakeLists.txt | 1 +
+ kioworkers/desktop/Home.desktop | 88 ++++++++++++++++++++++++++++++++++++++++
+ kioworkers/desktop/kio_desktop.cpp | 4 ++
3 files changed, 93 insertions(+)
- create mode 100644 kioslave/desktop/Home.desktop
+ create mode 100644 kioworkers/desktop/Home.desktop
-Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/CMakeLists.txt
-===================================================================
---- plasma-workspace-5.17.80git.20210531T011335~40d302afe.orig/kioslave/desktop/CMakeLists.txt 2021-05-31 03:13:35.000000000 +0200
-+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/CMakeLists.txt 2021-05-31 06:59:47.519362944 +0200
-@@ -31,3 +31,4 @@
- ########### install files ###############
-
- install(FILES directory.desktop directory.trash DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop)
-+install(FILES Home.desktop DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop/DesktopLinks)
-Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/Home.desktop
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/Home.desktop 2021-05-31 06:59:47.519362944 +0200
+--- ./kioworkers/desktop/Home.desktop.orig 2023-02-14 12:08:58.205793836 -0600
++++ ./kioworkers/desktop/Home.desktop 2023-02-14 12:08:58.205793836 -0600
@@ -0,0 +1,88 @@
+[Desktop Entry]
+Encoding=UTF-8
@@ -116,11 +105,16 @@ Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/Ho
+Icon=user-home
+Type=Link
+
-Index: plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/kio_desktop.cpp
-===================================================================
---- plasma-workspace-5.17.80git.20210531T011335~40d302afe.orig/kioslave/desktop/kio_desktop.cpp 2021-05-31 03:13:35.000000000 +0200
-+++ plasma-workspace-5.17.80git.20210531T011335~40d302afe/kioslave/desktop/kio_desktop.cpp 2021-05-31 06:59:47.519362944 +0200
-@@ -90,6 +90,10 @@
+--- ./kioworkers/desktop/CMakeLists.txt.orig 2023-02-13 10:02:12.000000000 -0600
++++ ./kioworkers/desktop/CMakeLists.txt 2023-02-14 12:08:58.205793836 -0600
+@@ -24,3 +24,4 @@
+ ########### install files ###############
+
+ install(FILES directory.desktop directory.trash DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop)
++install(FILES Home.desktop DESTINATION ${KDE_INSTALL_DATADIR}/kio_desktop/DesktopLinks)
+--- ./kioworkers/desktop/kio_desktop.cpp.orig 2023-02-13 10:02:12.000000000 -0600
++++ ./kioworkers/desktop/kio_desktop.cpp 2023-02-14 12:08:58.205793836 -0600
+@@ -76,6 +76,10 @@
// Copy the .directory file
QFile::copy(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kio_desktop/directory.desktop")), desktopPath + "/.directory");
diff --git a/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch b/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch
deleted file mode 100644
index 3f6d71970..000000000
--- a/source/kde/kde/patch/plasma-workspace/0002-Revert-Drop-X11-root-properties-for-KDE-full-session.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 075b2f27722d2f28a5c3d4e201c7e7e787cb68de Mon Sep 17 00:00:00 2001
-From: Fabian Vogt <fabian@ritter-vogt.de>
-Date: Thu, 21 Oct 2021 08:20:38 +0200
-Subject: [PATCH 2/2] Revert "Drop X11 root properties for KDE full session /
- session version"
-
-This reverts commit 9a4e3d39c2a9ca48f39a60ae2ea88e9921723cec.
----
- startkde/startplasma-waylandsession.cpp | 1 +
- startkde/startplasma-x11.cpp | 1 +
- startkde/startplasma.cpp | 22 ++++++++++++++++++++++
- startkde/startplasma.h | 1 +
- 4 files changed, 25 insertions(+)
-
-diff --git a/startkde/startplasma-waylandsession.cpp b/startkde/startplasma-waylandsession.cpp
-index ed496cc24..d0c83bf5a 100644
---- a/startkde/startplasma-waylandsession.cpp
-+++ b/startkde/startplasma-waylandsession.cpp
-@@ -41,6 +41,7 @@ int main(int argc, char **argv)
- // Keep for KF5; remove in KF6 (KInit will be gone then)
- runSync(QStringLiteral("kdeinit5_shutdown"), {});
-
-+ cleanupX11();
- out << "startplasma-waylandsession: Done.\n";
-
- return 0;
-diff --git a/startkde/startplasma-x11.cpp b/startkde/startplasma-x11.cpp
-index d6b2c5439..7ddf7b3ea 100644
---- a/startkde/startplasma-x11.cpp
-+++ b/startkde/startplasma-x11.cpp
-@@ -93,6 +93,7 @@ int main(int argc, char **argv)
- runSync(QStringLiteral("kdeinit5_shutdown"), {});
-
- cleanupPlasmaEnvironment(oldSystemdEnvironment);
-+ cleanupX11();
-
- out << "startkde: Done.\n";
-
-diff --git a/startkde/startplasma.cpp b/startkde/startplasma.cpp
-index 8d0b0ba89..5f78e7016 100644
---- a/startkde/startplasma.cpp
-+++ b/startkde/startplasma.cpp
-@@ -336,6 +336,28 @@ void setupX11()
- // so don't move this up.
-
- runSync(QStringLiteral("xsetroot"), {QStringLiteral("-cursor_name"), QStringLiteral("left_ptr")});
-+ runSync(QStringLiteral("xprop"),
-+ {QStringLiteral("-root"),
-+ QStringLiteral("-f"),
-+ QStringLiteral("KDE_FULL_SESSION"),
-+ QStringLiteral("8t"),
-+ QStringLiteral("-set"),
-+ QStringLiteral("KDE_FULL_SESSION"),
-+ QStringLiteral("true")});
-+ runSync(QStringLiteral("xprop"),
-+ {QStringLiteral("-root"),
-+ QStringLiteral("-f"),
-+ QStringLiteral("KDE_SESSION_VERSION"),
-+ QStringLiteral("32c"),
-+ QStringLiteral("-set"),
-+ QStringLiteral("KDE_SESSION_VERSION"),
-+ QStringLiteral("5")});
-+}
-+
-+void cleanupX11()
-+{
-+ runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_FULL_SESSION")});
-+ runSync(QStringLiteral("xprop"), {QStringLiteral("-root"), QStringLiteral("-remove"), QStringLiteral("KDE_SESSION_VERSION")});
- }
-
- void cleanupPlasmaEnvironment(const std::optional<QStringList> &oldSystemdEnvironment)
-diff --git a/startkde/startplasma.h b/startkde/startplasma.h
-index e8684be74..00c5c1570 100644
---- a/startkde/startplasma.h
-+++ b/startkde/startplasma.h
-@@ -26,6 +26,7 @@ void importSystemdEnvrionment();
- void runEnvironmentScripts();
- void setupPlasmaEnvironment();
- void cleanupPlasmaEnvironment(const std::optional<QStringList> &oldSystemdEnvironment);
-+void cleanupX11();
- bool syncDBusEnvironment();
- void setupFontDpi();
- QProcess *setupKSplash();
---
-2.33.0
-
diff --git a/source/kde/kde/patch/plasma-workspace/70d23b89.patch b/source/kde/kde/patch/plasma-workspace/70d23b89.patch
deleted file mode 100644
index 2d9c2a0f8..000000000
--- a/source/kde/kde/patch/plasma-workspace/70d23b89.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 70d23b891e95bc6911389773f320a4406a12bd87 Mon Sep 17 00:00:00 2001
-From: Lufan Zhong <lufanzhong@gmail.com>
-Date: Sun, 26 Dec 2021 19:33:09 +0000
-Subject: [PATCH] runners/shell: Port from KToolInvocation::invokeTerminal to
- KTerminalLauncherJob
-
-kinit is being deprecated; this change will allow it to open a terminal and execute
-commands normally without kinit being present.
-
-BUG: 437131
-FIXED-IN: 5.24
----
- runners/shell/shellrunner.cpp | 15 +++++++++++++--
- 1 file changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/runners/shell/shellrunner.cpp b/runners/shell/shellrunner.cpp
-index 03b54e1f1..be4058acf 100644
---- a/runners/shell/shellrunner.cpp
-+++ b/runners/shell/shellrunner.cpp
-@@ -12,8 +12,9 @@
- #include <KLocalizedString>
- #include <KNotificationJobUiDelegate>
- #include <KShell>
--#include <KToolInvocation>
-+#include <KTerminalLauncherJob>
- #include <QAction>
-+#include <QProcessEnvironment>
- #include <QRegularExpression>
- #include <QStandardPaths>
-
-@@ -62,7 +63,17 @@ void ShellRunner::run(const Plasma::RunnerContext &context, const Plasma::QueryM
- {
- if (match.selectedAction()) {
- const QVariantList data = match.data().toList();
-- KToolInvocation::invokeTerminal(data.at(0).toString(), data.at(1).toStringList());
-+ const QStringList list = data.at(1).toStringList();
-+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
-+ for (const auto& str : list)
-+ {
-+ const int pos = str.indexOf('=');
-+ env.insert(str.left(pos), str.mid(pos+1));
-+ }
-+ auto job = new KTerminalLauncherJob(data.at(0).toString());
-+ job->setProcessEnvironment(env);
-+ job->setUiDelegate(new KNotificationJobUiDelegate(KJobUiDelegate::AutoHandlingEnabled));
-+ job->start();
- return;
- }
-
---
-GitLab
-
diff --git a/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch b/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch
deleted file mode 100644
index 4c30b8dec..000000000
--- a/source/kde/kde/patch/plasma-workspace/926f864756e5586f38574c166abdb5befa3dc771.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 926f864756e5586f38574c166abdb5befa3dc771 Mon Sep 17 00:00:00 2001
-From: David Edmundson <kde@davidedmundson.co.uk>
-Date: Wed, 8 Dec 2021 13:08:43 +0000
-Subject: [PATCH] [libtaskmanager] Increase buffer for pipewire format
- negotiation
-
-Libtaskmanager's buffer for spa_builder is too small on certain
-configurations. Because podBuilder->state.offset is never reset, the
-buffer space can run out when EGL returns a long list of dma_buf
-modifiers, causing PipeWire negotiation to fail.
-
-An example is when EGL returns 20 modifiers. There are 6 formats defined
-in pipewiresourcestream.cpp, for each format it will construct 2 frames,
-one with 21*8=168 bytes long of modifiers. The modifier lists for all
-frames will be 6*168=1008 bytes (only 16 bytes left of 1024 bytes), let
-alone other frames.
-
-BUG: 446061
----
- libtaskmanager/declarative/pipewiresourcestream.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libtaskmanager/declarative/pipewiresourcestream.cpp b/libtaskmanager/declarative/pipewiresourcestream.cpp
-index a6713ae76..f1d3032a5 100644
---- a/libtaskmanager/declarative/pipewiresourcestream.cpp
-+++ b/libtaskmanager/declarative/pipewiresourcestream.cpp
-@@ -260,7 +260,7 @@ bool PipeWireSourceStream::createStream(uint nodeid)
- pwNodeId = nodeid;
- pw_stream_add_listener(pwStream, &streamListener, &pwStreamEvents, this);
-
-- uint8_t buffer[1024];
-+ uint8_t buffer[4096];
- spa_pod_builder podBuilder = SPA_POD_BUILDER_INIT(buffer, sizeof(buffer));
-
- const QVector<spa_video_format> formats =
---
-GitLab
-
diff --git a/source/kde/kde/patch/sddm.patch b/source/kde/kde/patch/sddm.patch
deleted file mode 100644
index 319bad684..000000000
--- a/source/kde/kde/patch/sddm.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-# Properly honor supplemental groups, https://github.com/sddm/sddm/issues/1159 :
-cat $CWD/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-cat $CWD/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-
-# Don't source $HOME/.xession in SDDM's Xsession script. It may cause the
-# wrong session type to launch, or run a second copy of dbus-run-session which
-# will break logout:
-cat $CWD/patch/sddm/sddm.do.not.source.HOME.xsession.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-
-# List Wayland sessions after X11 sessions since Wayland is more experimental:
-cat $CWD/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
-
-# Fix build with Qt from git:
-cat $CWD/patch/sddm/sddm.fix.build.diff | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/sddm/sddm.do.not.source.HOME.xsession.diff b/source/kde/kde/patch/sddm/sddm.do.not.source.HOME.xsession.diff
deleted file mode 100644
index c14b266d6..000000000
--- a/source/kde/kde/patch/sddm/sddm.do.not.source.HOME.xsession.diff
+++ /dev/null
@@ -1,18 +0,0 @@
---- ./data/scripts/Xsession.orig 2020-11-03 01:41:06.000000000 -0600
-+++ ./data/scripts/Xsession 2020-12-15 14:16:30.968724577 -0600
-@@ -94,9 +94,12 @@
- if [ -f "$USERXSESSIONRC" ]; then
- . "$USERXSESSIONRC"
- fi
--if [ -f "$USERXSESSION" ]; then
-- . "$USERXSESSION"
--fi
-+
-+# Commented out because $HOME/.xsession may start the wrong session type or
-+# cause dbus-run-session to start twice.
-+#if [ -f "$USERXSESSION" ]; then
-+# . "$USERXSESSION"
-+#fi
-
- if [ -z "$*" ]; then
- exec xmessage -center -buttons OK:0 -default OK "Sorry, $DESKTOP_SESSION is no valid session."
diff --git a/source/kde/kde/patch/sddm/sddm.fix.build.diff b/source/kde/kde/patch/sddm/sddm.fix.build.diff
deleted file mode 100644
index b481cfa6a..000000000
--- a/source/kde/kde/patch/sddm/sddm.fix.build.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./src/daemon/XorgDisplayServer.cpp.orig 2020-11-03 03:49:10.000000000 -0600
-+++ ./src/daemon/XorgDisplayServer.cpp 2021-08-29 11:36:20.356811948 -0500
-@@ -65,7 +65,7 @@
- // create a random hexadecimal number
- const char *digits = "0123456789abcdef";
- for (int i = 0; i < 32; ++i)
-- m_cookie[i] = digits[dis(gen)];
-+ m_cookie[i] = QLatin1Char(digits[dis(gen)]);
- }
-
- XorgDisplayServer::~XorgDisplayServer() {
diff --git a/source/kde/kde/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff b/source/kde/kde/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff
deleted file mode 100644
index 78a6c966b..000000000
--- a/source/kde/kde/patch/sddm/sddm.list.X11.sessions.before.Wayland.Sessions.diff
+++ /dev/null
@@ -1,12 +0,0 @@
---- ./src/greeter/SessionModel.cpp.orig 2020-11-03 01:41:06.000000000 -0600
-+++ ./src/greeter/SessionModel.cpp 2021-04-26 12:54:48.558769977 -0500
-@@ -41,8 +41,8 @@
- SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new SessionModelPrivate()) {
- // initial population
- beginResetModel();
-- populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
- populate(Session::X11Session, mainConfig.X11.SessionDir.get());
-+ populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
- endResetModel();
-
- // refresh everytime a file is changed, added or removed
diff --git a/source/kde/kde/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch b/source/kde/kde/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch
deleted file mode 100644
index bf3bfd255..000000000
--- a/source/kde/kde/patch/sddm/sddm_honor-PAM-supplemental-groups-v2.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-From 75e6e00d9e1ecf25e3a9c8332530a1e40d737cdb Mon Sep 17 00:00:00 2001
-From: "J. Konrad Tegtmeier-Rottach" <jktr@0x16.de>
-Date: Thu, 9 May 2019 03:06:48 +0200
-Subject: [PATCH] Honor PAM's supplemental groups (v2) (#834, #1159)
-
-This moves the supplemental group initialization step from
-UserSession.cpp to the Backend system, so that the Pam Backend can
-inject additional supplemental groups via modules like pam_group.so.
-
-pam_setcred(3) assumes that it operates on an already initialized
-supplemental group list. However, PamBackend calls
-pam_setcred(PAM_ESTABLISH_CRED) earlier, at the start
-PamBackend::openSession, so a pam_setcred(PAM_REINITIALIZE_CRED) call
-must be issued to repeat the injection of PAM's supplemental groups.
----
- src/helper/Backend.cpp | 5 +++++
- src/helper/Backend.h | 3 +++
- src/helper/HelperApp.cpp | 4 ++++
- src/helper/HelperApp.h | 1 +
- src/helper/UserSession.cpp | 13 ++++++++-----
- src/helper/backend/PamBackend.cpp | 18 ++++++++++++++++++
- src/helper/backend/PamBackend.h | 2 ++
- 7 files changed, 41 insertions(+), 5 deletions(-)
-
-diff --git a/src/helper/Backend.cpp b/src/helper/Backend.cpp
-index d6bb4d0a..35ae2bdf 100644
---- a/src/helper/Backend.cpp
-+++ b/src/helper/Backend.cpp
-@@ -29,6 +29,7 @@
- #include <QtCore/QProcessEnvironment>
-
- #include <pwd.h>
-+#include <grp.h>
-
- namespace SDDM {
- Backend::Backend(HelperApp* parent)
-@@ -79,4 +80,8 @@ namespace SDDM {
- bool Backend::closeSession() {
- return true;
- }
-+
-+ bool Backend::setupSupplementalGroups(struct passwd *pw) {
-+ return !initgroups(pw->pw_name, pw->pw_gid);
-+ }
- }
-diff --git a/src/helper/Backend.h b/src/helper/Backend.h
-index b790e001..3caf1592 100644
---- a/src/helper/Backend.h
-+++ b/src/helper/Backend.h
-@@ -22,6 +22,7 @@
- #define BACKEND_H
-
- #include <QtCore/QObject>
-+#include <pwd.h>
-
- namespace SDDM {
- class HelperApp;
-@@ -38,6 +39,8 @@ namespace SDDM {
- void setAutologin(bool on = true);
- void setGreeter(bool on = true);
-
-+ virtual bool setupSupplementalGroups(struct passwd *pw);
-+
- public slots:
- virtual bool start(const QString &user = QString()) = 0;
- virtual bool authenticate() = 0;
-diff --git a/src/helper/HelperApp.cpp b/src/helper/HelperApp.cpp
-index cad93bd8..d0891d75 100644
---- a/src/helper/HelperApp.cpp
-+++ b/src/helper/HelperApp.cpp
-@@ -253,6 +253,10 @@ namespace SDDM {
- return m_session;
- }
-
-+ Backend *HelperApp::backend() {
-+ return m_backend;
-+ }
-+
- const QString& HelperApp::user() const {
- return m_user;
- }
-diff --git a/src/helper/HelperApp.h b/src/helper/HelperApp.h
-index 3742df12..cb5959a7 100644
---- a/src/helper/HelperApp.h
-+++ b/src/helper/HelperApp.h
-@@ -39,6 +39,7 @@ namespace SDDM {
- virtual ~HelperApp();
-
- UserSession *session();
-+ Backend *backend();
- const QString &user() const;
- const QString &cookie() const;
-
-diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp
-index f71fd358..62fd4d70 100644
---- a/src/helper/UserSession.cpp
-+++ b/src/helper/UserSession.cpp
-@@ -19,6 +19,7 @@
- *
- */
-
-+#include "Backend.h"
- #include "Configuration.h"
- #include "UserSession.h"
- #include "HelperApp.h"
-@@ -129,7 +130,8 @@ namespace SDDM {
- #endif
-
- // switch user
-- const QByteArray username = qobject_cast<HelperApp*>(parent())->user().toLocal8Bit();
-+ HelperApp* app = qobject_cast<HelperApp*>(parent());
-+ const QByteArray username = app->user().toLocal8Bit();
- struct passwd pw;
- struct passwd *rpw;
- long bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
-@@ -146,12 +148,13 @@ namespace SDDM {
- qCritical() << "getpwnam_r(" << username << ") failed with error: " << strerror(err);
- exit(Auth::HELPER_OTHER_ERROR);
- }
-- if (setgid(pw.pw_gid) != 0) {
-- qCritical() << "setgid(" << pw.pw_gid << ") failed for user: " << username;
-+
-+ if (!app->backend()->setupSupplementalGroups(&pw)) {
-+ qCritical() << "failed to set up supplemental groups for user: " << username;
- exit(Auth::HELPER_OTHER_ERROR);
- }
-- if (initgroups(pw.pw_name, pw.pw_gid) != 0) {
-- qCritical() << "initgroups(" << pw.pw_name << ", " << pw.pw_gid << ") failed for user: " << username;
-+ if (setgid(pw.pw_gid) != 0) {
-+ qCritical() << "setgid(" << pw.pw_gid << ") failed for user: " << username;
- exit(Auth::HELPER_OTHER_ERROR);
- }
- if (setuid(pw.pw_uid) != 0) {
-diff --git a/src/helper/backend/PamBackend.cpp b/src/helper/backend/PamBackend.cpp
-index f86d77d6..cccfa258 100644
---- a/src/helper/backend/PamBackend.cpp
-+++ b/src/helper/backend/PamBackend.cpp
-@@ -289,6 +289,24 @@ namespace SDDM {
- return QString::fromLocal8Bit((const char*) m_pam->getItem(PAM_USER));
- }
-
-+ bool PamBackend::setupSupplementalGroups(struct passwd *pw) {
-+ if (!Backend::setupSupplementalGroups(pw))
-+ return false;
-+
-+ // pam_setcred(3) may inject additional groups into the user's
-+ // list of supplemental groups, and assumes that the user's
-+ // supplemental groups have already been initialized before
-+ // its invocation. Since pam_setcred was already called at the
-+ // start of openSession, we need to repeat this step here as
-+ // the user's groups have only just now been initialized.
-+
-+ if (!m_pam->setCred(PAM_REINITIALIZE_CRED)) {
-+ m_app->error(m_pam->errorString(), Auth::ERROR_AUTHENTICATION);
-+ return false;
-+ }
-+ return true;
-+ }
-+
- int PamBackend::converse(int n, const struct pam_message **msg, struct pam_response **resp) {
- qDebug() << "[PAM] Conversation with" << n << "messages";
-
-diff --git a/src/helper/backend/PamBackend.h b/src/helper/backend/PamBackend.h
-index 4c8b4b35..5b079099 100644
---- a/src/helper/backend/PamBackend.h
-+++ b/src/helper/backend/PamBackend.h
-@@ -28,6 +28,7 @@
- #include <QtCore/QObject>
-
- #include <security/pam_appl.h>
-+#include <pwd.h>
-
- namespace SDDM {
- class PamHandle;
-@@ -61,6 +62,7 @@ namespace SDDM {
- explicit PamBackend(HelperApp *parent);
- virtual ~PamBackend();
- int converse(int n, const struct pam_message **msg, struct pam_response **resp);
-+ virtual bool setupSupplementalGroups(struct passwd *pw);
-
- public slots:
- virtual bool start(const QString &user = QString());
-
diff --git a/source/kde/kde/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch b/source/kde/kde/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch
deleted file mode 100644
index 2391c80ce..000000000
--- a/source/kde/kde/patch/sddm/sddm_revert-honor-PAM-supplemental-groups.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From d3953e88a94ec25a87d3c5136517b3d1009cb1fd Mon Sep 17 00:00:00 2001
-From: "J. Konrad Tegtmeier-Rottach" <jktr@0x16.de>
-Date: Wed, 8 May 2019 18:58:53 +0200
-Subject: [PATCH] Revert "Honor PAM's ambient supplemental groups. (#834)"
-
-This reverts commit 1bc813d08b8130e458a6550ec47fb2bfbe6de080, which
-misuses PAM and leads to pulling in all of root's supplemental groups
-during session initialization instead of only adding PAM's extra
-groups. The problem was masked due to the root user not having any
-supplemental groups in some common contexts, like running sddm from a
-systemd unit.
----
- src/helper/UserSession.cpp | 57 --------------------------------------
- 1 file changed, 57 deletions(-)
-
-diff --git a/src/helper/UserSession.cpp b/src/helper/UserSession.cpp
-index b3aec356..f71fd358 100644
---- a/src/helper/UserSession.cpp
-+++ b/src/helper/UserSession.cpp
-@@ -150,67 +150,10 @@ namespace SDDM {
- qCritical() << "setgid(" << pw.pw_gid << ") failed for user: " << username;
- exit(Auth::HELPER_OTHER_ERROR);
- }
--
--#ifdef USE_PAM
--
-- // fetch ambient groups from PAM's environment;
-- // these are set by modules such as pam_groups.so
-- int n_pam_groups = getgroups(0, NULL);
-- gid_t *pam_groups = NULL;
-- if (n_pam_groups > 0) {
-- pam_groups = new gid_t[n_pam_groups];
-- if ((n_pam_groups = getgroups(n_pam_groups, pam_groups)) == -1) {
-- qCritical() << "getgroups() failed to fetch supplemental"
-- << "PAM groups for user:" << username;
-- exit(Auth::HELPER_OTHER_ERROR);
-- }
-- } else {
-- n_pam_groups = 0;
-- }
--
-- // fetch session's user's groups
-- int n_user_groups = 0;
-- gid_t *user_groups = NULL;
-- if (-1 == getgrouplist(username.constData(), pw.pw_gid,
-- NULL, &n_user_groups)) {
-- user_groups = new gid_t[n_user_groups];
-- if ((n_user_groups = getgrouplist(username.constData(),
-- pw.pw_gid, user_groups,
-- &n_user_groups)) == -1 ) {
-- qCritical() << "getgrouplist(" << username << ", " << pw.pw_gid
-- << ") failed";
-- exit(Auth::HELPER_OTHER_ERROR);
-- }
-- }
--
-- // set groups to concatenation of PAM's ambient
-- // groups and the session's user's groups
-- int n_groups = n_pam_groups + n_user_groups;
-- if (n_groups > 0) {
-- gid_t *groups = new gid_t[n_groups];
-- memcpy(groups, pam_groups, (n_pam_groups * sizeof(gid_t)));
-- memcpy((groups + n_pam_groups), user_groups,
-- (n_user_groups * sizeof(gid_t)));
--
-- // setgroups(2) handles duplicate groups
-- if (setgroups(n_groups, groups) != 0) {
-- qCritical() << "setgroups() failed for user: " << username;
-- exit (Auth::HELPER_OTHER_ERROR);
-- }
-- delete[] groups;
-- }
-- delete[] pam_groups;
-- delete[] user_groups;
--
--#else
--
- if (initgroups(pw.pw_name, pw.pw_gid) != 0) {
- qCritical() << "initgroups(" << pw.pw_name << ", " << pw.pw_gid << ") failed for user: " << username;
- exit(Auth::HELPER_OTHER_ERROR);
- }
--
--#endif /* USE_PAM */
--
- if (setuid(pw.pw_uid) != 0) {
- qCritical() << "setuid(" << pw.pw_uid << ") failed for user: " << username;
- exit(Auth::HELPER_OTHER_ERROR);
-