From e1920f65936fe7d712441e88c023746ab5c21cee Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Mon, 24 Feb 2020 20:06:45 +0100 Subject: [PATCH] QShortcut: fix ambiguity with new PMF ctors The new PMF ctors introduced with a4751f8824723acaee4b9d8aa78a59c2aa36cb3e created some ambiguities with existing old-style connects. Fix it by explitly checking if the given pointers are pointers from QObject derived classes. Fixes: QTBUG-82415 Change-Id: I70d51a6d50384fe6b5083fa3b94492ab6ed97086 Reviewed-by: Shawn Rutledge --- src/widgets/kernel/qshortcut.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/widgets/kernel/qshortcut.h b/src/widgets/kernel/qshortcut.h index 4f9c5ba0f71..384f1967c95 100644 --- a/src/widgets/kernel/qshortcut.h +++ b/src/widgets/kernel/qshortcut.h @@ -95,7 +95,8 @@ public: template QShortcut(const QKeySequence &key, QWidget *parent, const Obj1 *object1, Func1 slot1, - Qt::ShortcutContext context = Qt::WindowShortcut) + Qt::ShortcutContext context = Qt::WindowShortcut, + typename std::enable_if::Value>::type* = 0) : QShortcut(key, parent, static_cast(nullptr), static_cast(nullptr), context) { connect(this, &QShortcut::activated, object1, std::move(slot1)); @@ -103,7 +104,8 @@ public: template QShortcut(const QKeySequence &key, QWidget *parent, const Obj1 *object1, Func1 slot1, Func2 slot2, - Qt::ShortcutContext context = Qt::WindowShortcut) + Qt::ShortcutContext context = Qt::WindowShortcut, + typename std::enable_if::Value>::type* = 0) : QShortcut(key, parent, static_cast(nullptr), static_cast(nullptr), context) { connect(this, &QShortcut::activated, object1, std::move(slot1)); @@ -113,7 +115,9 @@ public: QShortcut(const QKeySequence &key, QWidget *parent, const Obj1 *object1, Func1 slot1, const Obj2 *object2, Func2 slot2, - Qt::ShortcutContext context = Qt::WindowShortcut) + Qt::ShortcutContext context = Qt::WindowShortcut, + typename std::enable_if::Value>::type* = 0, + typename std::enable_if::Value>::type* = 0) : QShortcut(key, parent, static_cast(nullptr), static_cast(nullptr), context) { connect(this, &QShortcut::activated, object1, std::move(slot1));