Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Plasma
KWin
Commits
2b3e8d67
Commit
2b3e8d67
authored
Aug 22, 2021
by
Vlad Zahorodnii
Browse files
Decouple activation feedback from plasma window management global
parent
773995de
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/wayland/plasmawindowmanagement_interface.cpp
View file @
2b3e8d67
...
...
@@ -23,7 +23,8 @@
namespace
KWaylandServer
{
static
const
quint32
s_version
=
15
;
static
const
quint32
s_version
=
14
;
static
const
quint32
s_activationVersion
=
1
;
class
PlasmaWindowManagementInterfacePrivate
:
public
QtWaylandServer
::
org_kde_plasma_window_management
{
...
...
@@ -1020,6 +1021,15 @@ QString PlasmaWindowInterface::uuid() const
return
d
->
uuid
;
}
class
PlasmaWindowActivationFeedbackInterfacePrivate
:
public
QtWaylandServer
::
org_kde_plasma_activation_feedback
{
public:
PlasmaWindowActivationFeedbackInterfacePrivate
(
Display
*
display
);
protected:
void
org_kde_plasma_activation_feedback_destroy
(
Resource
*
resource
)
override
;
};
class
PlasmaWindowActivationInterfacePrivate
:
public
QtWaylandServer
::
org_kde_plasma_activation
{
public:
...
...
@@ -1032,6 +1042,38 @@ public:
PlasmaWindowActivationInterface
*
const
q
;
};
PlasmaWindowActivationFeedbackInterfacePrivate
::
PlasmaWindowActivationFeedbackInterfacePrivate
(
Display
*
display
)
:
QtWaylandServer
::
org_kde_plasma_activation_feedback
(
*
display
,
s_activationVersion
)
{
}
void
PlasmaWindowActivationFeedbackInterfacePrivate
::
org_kde_plasma_activation_feedback_destroy
(
Resource
*
resource
)
{
wl_resource_destroy
(
resource
->
handle
);
}
PlasmaWindowActivationFeedbackInterface
::
PlasmaWindowActivationFeedbackInterface
(
Display
*
display
,
QObject
*
parent
)
:
QObject
(
parent
)
,
d
(
new
PlasmaWindowActivationFeedbackInterfacePrivate
(
display
))
{
}
PlasmaWindowActivationFeedbackInterface
::~
PlasmaWindowActivationFeedbackInterface
()
{
}
PlasmaWindowActivationInterface
*
PlasmaWindowActivationFeedbackInterface
::
createActivation
(
const
QString
&
appid
)
{
auto
activation
=
new
PlasmaWindowActivationInterface
;
const
auto
resources
=
d
->
resourceMap
();
for
(
auto
resource
:
resources
)
{
auto
activationResource
=
activation
->
d
->
add
(
resource
->
client
(),
resource
->
version
());
d
->
send_activation
(
resource
->
handle
,
activationResource
->
handle
);
}
activation
->
sendAppId
(
appid
);
return
activation
;
}
PlasmaWindowActivationInterface
::
PlasmaWindowActivationInterface
()
:
d
(
new
PlasmaWindowActivationInterfacePrivate
(
this
))
{
...
...
@@ -1053,18 +1095,4 @@ void PlasmaWindowActivationInterface::sendAppId(const QString &appid)
}
}
KWaylandServer
::
PlasmaWindowActivationInterface
*
PlasmaWindowManagementInterface
::
createActivation
(
const
QString
&
appid
)
{
auto
activation
=
new
PlasmaWindowActivationInterface
;
const
auto
resources
=
d
->
resourceMap
();
for
(
auto
resource
:
resources
)
{
if
(
resource
->
version
()
<
ORG_KDE_PLASMA_WINDOW_MANAGEMENT_ACTIVATION_SINCE_VERSION
)
{
continue
;
}
auto
connection
=
activation
->
d
->
add
(
resource
->
client
(),
resource
->
version
());
d
->
send_activation
(
resource
->
handle
,
connection
->
handle
);
}
activation
->
sendAppId
(
appid
);
return
activation
;
}
}
src/wayland/plasmawindowmanagement_interface.h
View file @
2b3e8d67
...
...
@@ -15,12 +15,13 @@ namespace KWaylandServer
{
class
Display
;
class
PlasmaWindowActivationFeedbackInterfacePrivate
;
class
PlasmaWindowInterface
;
class
SurfaceInterface
;
class
PlasmaVirtualDesktopManagementInterface
;
class
PlasmaWindowActivationInterfacePrivate
;
class
PlasmaWindowManagementInterfacePrivate
;
class
PlasmaWindowInterfacePrivate
;
class
SurfaceInterface
;
class
KWAYLANDSERVER_EXPORT
PlasmaWindowActivationInterface
{
...
...
@@ -30,12 +31,32 @@ public:
void
sendAppId
(
const
QString
&
id
);
private:
friend
class
PlasmaWindow
Management
Interface
;
friend
class
PlasmaWindow
ActivationFeedback
Interface
;
explicit
PlasmaWindowActivationInterface
();
QScopedPointer
<
PlasmaWindowActivationInterfacePrivate
>
d
;
};
class
KWAYLANDSERVER_EXPORT
PlasmaWindowActivationFeedbackInterface
:
public
QObject
{
Q_OBJECT
public:
explicit
PlasmaWindowActivationFeedbackInterface
(
Display
*
display
,
QObject
*
parent
=
nullptr
);
~
PlasmaWindowActivationFeedbackInterface
()
override
;
/**
* Notify about a new application with @p app_id being started
*
* @returns an instance of @class PlasmaWindowActivationInterface to
* be destroyed as the activation process ends.
*/
PlasmaWindowActivationInterface
*
createActivation
(
const
QString
&
app_id
);
private:
QScopedPointer
<
PlasmaWindowActivationFeedbackInterfacePrivate
>
d
;
};
class
KWAYLANDSERVER_EXPORT
PlasmaWindowManagementInterface
:
public
QObject
{
Q_OBJECT
...
...
@@ -72,14 +93,6 @@ public:
void
setStackingOrderUuids
(
const
QVector
<
QString
>
&
stackingOrderUuids
);
/**
* Notify about a new application with @p app_id being started
*
* @returns an instance of @class PlasmaWindowActivationInterface to
* be destroyed as the activation process ends.
*/
PlasmaWindowActivationInterface
*
createActivation
(
const
QString
&
app_id
);
Q_SIGNALS:
void
requestChangeShowingDesktop
(
ShowingDesktopState
requestedState
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment