Merge pull request #934 from l3nkz/wlr-taskbar-updates
Update to the latest version of the foreign toplevel manager protocol
This commit is contained in:
commit
930bb4ba97
|
@ -25,7 +25,7 @@
|
||||||
THIS SOFTWARE.
|
THIS SOFTWARE.
|
||||||
</copyright>
|
</copyright>
|
||||||
|
|
||||||
<interface name="zwlr_foreign_toplevel_manager_v1" version="2">
|
<interface name="zwlr_foreign_toplevel_manager_v1" version="3">
|
||||||
<description summary="list and control opened apps">
|
<description summary="list and control opened apps">
|
||||||
The purpose of this protocol is to enable the creation of taskbars
|
The purpose of this protocol is to enable the creation of taskbars
|
||||||
and docks by providing them with a list of opened applications and
|
and docks by providing them with a list of opened applications and
|
||||||
|
@ -68,7 +68,7 @@
|
||||||
</event>
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
<interface name="zwlr_foreign_toplevel_handle_v1" version="2">
|
<interface name="zwlr_foreign_toplevel_handle_v1" version="3">
|
||||||
<description summary="an opened toplevel">
|
<description summary="an opened toplevel">
|
||||||
A zwlr_foreign_toplevel_handle_v1 object represents an opened toplevel
|
A zwlr_foreign_toplevel_handle_v1 object represents an opened toplevel
|
||||||
window. Each app may have multiple opened toplevels.
|
window. Each app may have multiple opened toplevels.
|
||||||
|
@ -255,5 +255,16 @@
|
||||||
actually changes, this will be indicated by the state event.
|
actually changes, this will be indicated by the state event.
|
||||||
</description>
|
</description>
|
||||||
</request>
|
</request>
|
||||||
|
|
||||||
|
<!-- Version 3 additions -->
|
||||||
|
|
||||||
|
<event name="parent" since="3">
|
||||||
|
<description summary="parent change">
|
||||||
|
This event is emitted whenever the parent of the toplevel changes.
|
||||||
|
|
||||||
|
No event is emitted when the parent handle is destroyed by the client.
|
||||||
|
</description>
|
||||||
|
<arg name="parent" type="object" interface="zwlr_foreign_toplevel_handle_v1" allow-null="true"/>
|
||||||
|
</event>
|
||||||
</interface>
|
</interface>
|
||||||
</protocol>
|
</protocol>
|
||||||
|
|
|
@ -187,6 +187,12 @@ static void tl_handle_done(void *data, struct zwlr_foreign_toplevel_handle_v1 *h
|
||||||
return static_cast<Task*>(data)->handle_done();
|
return static_cast<Task*>(data)->handle_done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void tl_handle_parent(void *data, struct zwlr_foreign_toplevel_handle_v1 *handle,
|
||||||
|
struct zwlr_foreign_toplevel_handle_v1 *parent)
|
||||||
|
{
|
||||||
|
/* This is explicitly left blank */
|
||||||
|
}
|
||||||
|
|
||||||
static void tl_handle_closed(void *data, struct zwlr_foreign_toplevel_handle_v1 *handle)
|
static void tl_handle_closed(void *data, struct zwlr_foreign_toplevel_handle_v1 *handle)
|
||||||
{
|
{
|
||||||
return static_cast<Task*>(data)->handle_closed();
|
return static_cast<Task*>(data)->handle_closed();
|
||||||
|
@ -200,6 +206,7 @@ static const struct zwlr_foreign_toplevel_handle_v1_listener toplevel_handle_imp
|
||||||
.state = tl_handle_state,
|
.state = tl_handle_state,
|
||||||
.done = tl_handle_done,
|
.done = tl_handle_done,
|
||||||
.closed = tl_handle_closed,
|
.closed = tl_handle_closed,
|
||||||
|
.parent = tl_handle_parent,
|
||||||
};
|
};
|
||||||
|
|
||||||
Task::Task(const waybar::Bar &bar, const Json::Value &config, Taskbar *tbar,
|
Task::Task(const waybar::Bar &bar, const Json::Value &config, Taskbar *tbar,
|
||||||
|
@ -539,6 +546,11 @@ void Task::activate()
|
||||||
|
|
||||||
void Task::fullscreen(bool set)
|
void Task::fullscreen(bool set)
|
||||||
{
|
{
|
||||||
|
if (zwlr_foreign_toplevel_handle_v1_get_version(handle_) < ZWLR_FOREIGN_TOPLEVEL_HANDLE_V1_SET_FULLSCREEN_SINCE_VERSION) {
|
||||||
|
spdlog::warn("Foreign toplevel manager server does not support for set/unset fullscreen.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (set)
|
if (set)
|
||||||
zwlr_foreign_toplevel_handle_v1_set_fullscreen(handle_, nullptr);
|
zwlr_foreign_toplevel_handle_v1_set_fullscreen(handle_, nullptr);
|
||||||
else
|
else
|
||||||
|
@ -661,9 +673,11 @@ void Taskbar::register_manager(struct wl_registry *registry, uint32_t name, uint
|
||||||
spdlog::warn("Register foreign toplevel manager again although already existing!");
|
spdlog::warn("Register foreign toplevel manager again although already existing!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (version < ZWLR_FOREIGN_TOPLEVEL_HANDLE_V1_STATE_FULLSCREEN_SINCE_VERSION) {
|
if (version < ZWLR_FOREIGN_TOPLEVEL_HANDLE_V1_SET_FULLSCREEN_SINCE_VERSION) {
|
||||||
spdlog::warn("Using different foreign toplevel manager protocol version: {}", version);
|
spdlog::warn("Foreign toplevel manager server does not have the appropriate version."
|
||||||
|
" To be able to use all features, you need at least version 2, but server is version {}", version);
|
||||||
}
|
}
|
||||||
|
|
||||||
// limit version to a highest supported by the client protocol file
|
// limit version to a highest supported by the client protocol file
|
||||||
version = std::min<uint32_t>(version, zwlr_foreign_toplevel_manager_v1_interface.version);
|
version = std::min<uint32_t>(version, zwlr_foreign_toplevel_manager_v1_interface.version);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue