From 3ff84a29c7f33cad1779197a189b40fe90cd35f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Tue, 8 Nov 2016 08:25:33 +0100 Subject: [PATCH] [tools/generator] Pass this as q pointer to Client::Resource::Private Experience showed that in most cases we need the q pointer in the resource private class on the client side. --- src/tools/generator.cpp | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/tools/generator.cpp b/src/tools/generator.cpp index 92a7c30..136e2bb 100644 --- a/src/tools/generator.cpp +++ b/src/tools/generator.cpp @@ -897,11 +897,14 @@ void Generator::generateClientPrivateResourceClass(const Interface &interface) "class %1::Private\n" "{\n" "public:\n" -" Private() = default;\n" +" Private(%1 *q);\n" "\n" " void setup(%2 *arg);\n" "\n" " WaylandPointer<%2, %2_destroy> %3;\n" +"\n" +"private:\n" +" %1 *q;\n" "};\n\n"); *m_stream.localData() << templateString.arg(interface.kwaylandClientName()).arg(interface.name()).arg(interface.kwaylandClientName().toLower()); @@ -926,13 +929,32 @@ void Generator::generateClientPrivateGlobalClass(const Interface &interface) void Generator::generateClientCpp(const Interface &interface) { - const QString templateString = QStringLiteral( + if (interface.isGlobal()) { + // generate ctor without this pointer to Private + const QString templateString = QStringLiteral( "%1::%1(QObject *parent)\n" " : QObject(parent)\n" " , d(new Private)\n" "{\n" +"}\n"); + *m_stream.localData() << templateString.arg(interface.kwaylandClientName()); + } else { + // Private ctor + const QString templateString = QStringLiteral( +"%1::Private::Private(%1 *q)\n" +" : q(q)\n" +"{\n" "}\n" "\n" +"%1::%1(QObject *parent)\n" +" : QObject(parent)\n" +" , d(new Private(this))\n" +"{\n" +"}\n"); + *m_stream.localData() << templateString.arg(interface.kwaylandClientName()); + } + const QString templateString = QStringLiteral( +"\n" "%1::~%1()\n" "{\n" " release();\n" -- GitLab