mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
view: call wlr_foreign_toplevel_handle_v1_set_app_id() on map
Fix issue #74 Add view-impl.c with view_impl_map() containing common code for xdg-shell and xwayland-shell.
This commit is contained in:
parent
4d44659c08
commit
e140682528
5 changed files with 31 additions and 6 deletions
|
|
@ -338,6 +338,8 @@ void view_for_each_popup_surface(struct view *view,
|
||||||
void view_move_to_edge(struct view *view, const char *direction);
|
void view_move_to_edge(struct view *view, const char *direction);
|
||||||
void view_update_title(struct view *view);
|
void view_update_title(struct view *view);
|
||||||
|
|
||||||
|
void view_impl_map(struct view *view);
|
||||||
|
|
||||||
void foreign_toplevel_handle_create(struct view *view);
|
void foreign_toplevel_handle_create(struct view *view);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ labwc_sources = files(
|
||||||
'theme.c',
|
'theme.c',
|
||||||
'view.c',
|
'view.c',
|
||||||
'view-child.c',
|
'view-child.c',
|
||||||
|
'view-impl.c',
|
||||||
'xdg.c',
|
'xdg.c',
|
||||||
'xdg-deco.c',
|
'xdg-deco.c',
|
||||||
'xdg-popup.c',
|
'xdg-popup.c',
|
||||||
|
|
|
||||||
22
src/view-impl.c
Normal file
22
src/view-impl.c
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
/* view-impl.c: common code for shell view->impl functions */
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <strings.h>
|
||||||
|
#include "labwc.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
view_impl_map(struct view *view)
|
||||||
|
{
|
||||||
|
desktop_focus_and_activate_view(&view->server->seat, view);
|
||||||
|
desktop_raise_view(view);
|
||||||
|
|
||||||
|
const char *app_id = view->impl->get_string_prop(view, "app_id");
|
||||||
|
if (app_id) {
|
||||||
|
wlr_foreign_toplevel_handle_v1_set_app_id(
|
||||||
|
view->toplevel_handle, app_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
view_update_title(view);
|
||||||
|
|
||||||
|
damage_all_outputs(view->server);
|
||||||
|
}
|
||||||
|
|
@ -343,9 +343,7 @@ xdg_toplevel_view_map(struct view *view)
|
||||||
wl_signal_add(&view->surface->events.new_subsurface,
|
wl_signal_add(&view->surface->events.new_subsurface,
|
||||||
&view->new_subsurface);
|
&view->new_subsurface);
|
||||||
|
|
||||||
desktop_focus_and_activate_view(&view->server->seat, view);
|
view_impl_map(view);
|
||||||
desktop_raise_view(view);
|
|
||||||
damage_all_outputs(view->server);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
|
|
@ -146,6 +146,10 @@ get_string_prop(struct view *view, const char *prop)
|
||||||
if (!strcmp(prop, "class")) {
|
if (!strcmp(prop, "class")) {
|
||||||
return view->xwayland_surface->class;
|
return view->xwayland_surface->class;
|
||||||
}
|
}
|
||||||
|
/* We give 'class' for wlr_foreign_toplevel_handle_v1_set_app_id() */
|
||||||
|
if (!strcmp(prop, "app_id")) {
|
||||||
|
return view->xwayland_surface->class;
|
||||||
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -208,9 +212,7 @@ map(struct view *view)
|
||||||
&view->commit);
|
&view->commit);
|
||||||
view->commit.notify = handle_commit;
|
view->commit.notify = handle_commit;
|
||||||
|
|
||||||
desktop_focus_and_activate_view(&view->server->seat, view);
|
view_impl_map(view);
|
||||||
desktop_raise_view(view);
|
|
||||||
damage_all_outputs(view->server);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue