File fix-C++15.patch of Package deepin-file-manager
diff -Nur dde-file-manager-6.5.119/include/dfm-base/interfaces/abstractjobhandler.h dde-file-manager-6.5.119-new/include/dfm-base/interfaces/abstractjobhandler.h
--- dde-file-manager-6.5.119/include/dfm-base/interfaces/abstractjobhandler.h 2026-01-30 11:34:36.000000000 +0800
+++ dde-file-manager-6.5.119-new/include/dfm-base/interfaces/abstractjobhandler.h 2026-02-01 23:08:26.237849720 +0800
@@ -16,7 +16,7 @@
class QWidget;
typedef QSharedPointer<QMap<quint8, QVariant>> JobInfoPointer;
-Q_DECLARE_METATYPE(JobInfoPointer);
+// Q_DECLARE_METATYPE(JobInfoPointer);
namespace dfmbase {
class AbstractJobHandler : public QObject
@@ -290,8 +290,8 @@
Q_DECLARE_METATYPE(DFMBASE_NAMESPACE::AbstractJobHandler::JobFlag)
Q_DECLARE_METATYPE(DFMBASE_NAMESPACE::AbstractJobHandler::JobFlags)
Q_DECLARE_METATYPE(DFMBASE_NAMESPACE::AbstractJobHandler::ShowDialogType)
-Q_DECLARE_METATYPE(DFMBASE_NAMESPACE::AbstractJobHandler::OperatorCallback);
-Q_DECLARE_METATYPE(DFMBASE_NAMESPACE::AbstractJobHandler::OperatorHandleCallback);
+// Q_DECLARE_METATYPE(DFMBASE_NAMESPACE::AbstractJobHandler::OperatorCallback);
+// Q_DECLARE_METATYPE(DFMBASE_NAMESPACE::AbstractJobHandler::OperatorHandleCallback);
using JobHandlePointer = QSharedPointer<DFMBASE_NAMESPACE::AbstractJobHandler>;
Q_DECLARE_METATYPE(JobHandlePointer)
diff -Nur dde-file-manager-6.5.119/src/dfm-base/interfaces/abstractjobhandler.cpp dde-file-manager-6.5.119-new/src/dfm-base/interfaces/abstractjobhandler.cpp
--- dde-file-manager-6.5.119/src/dfm-base/interfaces/abstractjobhandler.cpp 2026-01-30 11:34:36.000000000 +0800
+++ dde-file-manager-6.5.119-new/src/dfm-base/interfaces/abstractjobhandler.cpp 2026-02-02 20:15:03.555430902 +0800
@@ -13,6 +13,25 @@
AbstractJobHandler::AbstractJobHandler(QObject *parent)
: QObject(parent)
{
+ /*
+ === Fix for C++15 Compilation Error: Manual Meta-Type Registration ===
+ Reason: C++15 implements stricter template deduction in <type_traits>. This
+ causes a failure when Q_DECLARE_METATYPE probes complex nested types like
+ QSharedPointer<QMap<quint8, QVariant>>. The 'std::conjunction' fails to
+ resolve 'value' during equality trait probing. By performing runtime
+ registration here, we bypass the static analysis deadlock during header
+ compilation.
+ */
+
+ // Register the job info pointer type (QSharedPointer<QMap<quint8, QVariant>>)
+ qRegisterMetaType<JobInfoPointer>("JobInfoPointer");
+
+ // Register callback types to prevent "undefined type" errors during
+ // cross-thread signal-slot delivery or QVariant conversions.
+ qRegisterMetaType<AbstractJobHandler::OperatorCallback>("AbstractJobHandler::OperatorCallback");
+ qRegisterMetaType<AbstractJobHandler::OperatorHandleCallback>("AbstractJobHandler::OperatorHandleCallback");
+ // ============================
+
connect(this, &AbstractJobHandler::requestShowTipsDialog, this, [=](DFMBASE_NAMESPACE::AbstractJobHandler::ShowDialogType type, const QList<QUrl> urls) {
switch (type) {
case DFMBASE_NAMESPACE::AbstractJobHandler::ShowDialogType::kRestoreFailed: