Skip to content
This repository was archived by the owner on Jun 16, 2024. It is now read-only.

Commit 9d89d1e

Browse files
committed
refactor(plasma_api): use macro for signal wrapping
1 parent 2984340 commit 9d89d1e

File tree

3 files changed

+35
-33
lines changed

3 files changed

+35
-33
lines changed

src/core/plasma-api/utils.hpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,16 @@
4545
method.invoke(m_kwinImpl, Qt::DirectConnection, Q_RETURN_ARG(RET_TYPE, result), __VA_ARGS__); \
4646
return result; \
4747
}
48+
49+
/**
50+
* Wrap simple signal to forward it from KWin Class
51+
* @param SIGNATURE signal signature, that can be put inside SIGNAL Qt macro
52+
*/
53+
#define WRAP_SIGNAL(SIGNATURE) connect(m_kwinImpl, SIGNAL(SIGNATURE), this, SIGNAL(SIGNATURE))
54+
55+
/**
56+
* Wrap signal with KWin Type in signature. Signal should have a mapper, that
57+
* must have the same signature as the signal.
58+
* @param SIGNATURE signal signature, that can be put inside SIGNAL/SLOT Qt macro
59+
*/
60+
#define WRAP_SIGNAL_WITH_KWIN_TYPE(SIGNATURE) connect(m_kwinImpl, SIGNAL(SIGNATURE), this, SLOT(mapper_##SIGNATURE))

src/core/plasma-api/workspace.cpp

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -40,27 +40,16 @@ void Workspace::setActiveClient(std::optional<PlasmaApi::Window> client)
4040

4141
void Workspace::wrapSignals()
4242
{
43-
auto wrapSimpleSignal = [this](const char *signalSignature) {
44-
auto signalsSignature = QMetaObject::normalizedSignature(signalSignature);
45-
connect(m_kwinImpl, signalsSignature, this, signalsSignature);
46-
};
47-
48-
auto wrapComplexSignal = [this](const char *implSignalSignature, const char *thisSignalSignature) {
49-
auto implNormSignature = QMetaObject::normalizedSignature(implSignalSignature);
50-
auto thisNormSignature = QMetaObject::normalizedSignature(thisSignalSignature);
51-
connect(m_kwinImpl, implNormSignature, this, thisNormSignature);
52-
};
53-
54-
wrapSimpleSignal(SIGNAL(numberScreensChanged(int)));
55-
wrapSimpleSignal(SIGNAL(screenResized(int)));
56-
wrapSimpleSignal(SIGNAL(currentActivityChanged(const QString &)));
57-
58-
wrapComplexSignal(SIGNAL(currentDesktopChanged(int, KWin::Window *)), SLOT(currentDesktopChangedTransformer(int, KWin::Window *)));
59-
wrapComplexSignal(SIGNAL(clientAdded(KWin::Window *)), SLOT(clientAddedTransformer(KWin::Window *)));
60-
wrapComplexSignal(SIGNAL(clientRemoved(KWin::Window *)), SLOT(clientRemovedTransformer(KWin::Window *)));
61-
wrapComplexSignal(SIGNAL(clientMinimized(KWin::Window *)), SLOT(clientMinimizedTransformer(KWin::Window *)));
62-
wrapComplexSignal(SIGNAL(clientUnminimized(KWin::Window *)), SLOT(clientUnminimizedTransformer(KWin::Window *)));
63-
wrapComplexSignal(SIGNAL(clientMaximizeSet(KWin::Window *, bool, bool)), SLOT(clientMaximizeSetTransformer(KWin::Window *, bool, bool)));
43+
WRAP_SIGNAL(numberScreensChanged(int));
44+
WRAP_SIGNAL(screenResized(int));
45+
WRAP_SIGNAL(currentActivityChanged(const QString &));
46+
47+
WRAP_SIGNAL_WITH_KWIN_TYPE(currentDesktopChanged(int, KWin::Window *));
48+
WRAP_SIGNAL_WITH_KWIN_TYPE(clientAdded(KWin::Window *));
49+
WRAP_SIGNAL_WITH_KWIN_TYPE(clientRemoved(KWin::Window *));
50+
WRAP_SIGNAL_WITH_KWIN_TYPE(clientMinimized(KWin::Window *));
51+
WRAP_SIGNAL_WITH_KWIN_TYPE(clientUnminimized(KWin::Window *));
52+
WRAP_SIGNAL_WITH_KWIN_TYPE(clientMaximizeSet(KWin::Window *, bool, bool));
6453
};
6554

6655
QRect Workspace::clientArea(ClientAreaOption option, int screen, int desktop)
@@ -87,38 +76,38 @@ std::vector<PlasmaApi::Window> Workspace::clientList() const
8776
return result;
8877
}
8978

90-
void Workspace::currentDesktopChangedTransformer(int desktop, KWin::Window *kwinClient)
79+
void Workspace::mapper_currentDesktopChanged(int desktop, KWin::Window *kwinClient)
9180
{
9281
// Since we don't know the KWin internal implementation we have to use reinterpret_cast
9382
auto clientWrapper = Window(reinterpret_cast<QObject *>(kwinClient));
9483
Q_EMIT currentDesktopChanged(desktop, clientWrapper);
9584
};
9685

97-
void Workspace::clientAddedTransformer(KWin::Window *kwinClient)
86+
void Workspace::mapper_clientAdded(KWin::Window *kwinClient)
9887
{
9988
auto clientWrapper = Window(reinterpret_cast<QObject *>(kwinClient));
10089
Q_EMIT clientAdded(clientWrapper);
10190
}
10291

103-
void Workspace::clientRemovedTransformer(KWin::Window *kwinClient)
92+
void Workspace::mapper_clientRemoved(KWin::Window *kwinClient)
10493
{
10594
auto clientWrapper = Window(reinterpret_cast<QObject *>(kwinClient));
10695
Q_EMIT clientRemoved(clientWrapper);
10796
}
10897

109-
void Workspace::clientMinimizedTransformer(KWin::Window *kwinClient)
98+
void Workspace::mapper_clientMinimized(KWin::Window *kwinClient)
11099
{
111100
auto clientWrapper = Window(reinterpret_cast<QObject *>(kwinClient));
112101
Q_EMIT clientMinimized(clientWrapper);
113102
}
114103

115-
void Workspace::clientUnminimizedTransformer(KWin::Window *kwinClient)
104+
void Workspace::mapper_clientUnminimized(KWin::Window *kwinClient)
116105
{
117106
auto clientWrapper = Window(reinterpret_cast<QObject *>(kwinClient));
118107
Q_EMIT clientUnminimized(clientWrapper);
119108
}
120109

121-
void Workspace::clientMaximizeSetTransformer(KWin::Window *kwinClient, bool h, bool v)
110+
void Workspace::mapper_clientMaximizeSet(KWin::Window *kwinClient, bool h, bool v)
122111
{
123112
auto clientWrapper = Window(reinterpret_cast<QObject *>(kwinClient));
124113
Q_EMIT clientMaximizeSet(clientWrapper, h, v);

src/core/plasma-api/workspace.hpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,12 @@ class Workspace : public QObject
6767
Q_INVOKABLE std::vector<PlasmaApi::Window> clientList() const;
6868

6969
private Q_SLOTS:
70-
void currentDesktopChangedTransformer(int desktop, KWin::Window *kwinClient);
71-
void clientAddedTransformer(KWin::Window *);
72-
void clientRemovedTransformer(KWin::Window *);
73-
void clientMinimizedTransformer(KWin::Window *);
74-
void clientUnminimizedTransformer(KWin::Window *);
75-
void clientMaximizeSetTransformer(KWin::Window *, bool h, bool v);
70+
void mapper_currentDesktopChanged(int desktop, KWin::Window *kwinClient);
71+
void mapper_clientAdded(KWin::Window *);
72+
void mapper_clientRemoved(KWin::Window *);
73+
void mapper_clientMinimized(KWin::Window *);
74+
void mapper_clientUnminimized(KWin::Window *);
75+
void mapper_clientMaximizeSet(KWin::Window *, bool h, bool v);
7676

7777
Q_SIGNALS:
7878
void currentDesktopChanged(int desktop, PlasmaApi::Window kwinClient);

0 commit comments

Comments
 (0)