void view_move_to_edge(struct view *view, const char *direction);
void view_update_title(struct view *view);
+void view_impl_map(struct view *view);
+
void foreign_toplevel_handle_create(struct view *view);
/*
'theme.c',
'view.c',
'view-child.c',
+ 'view-impl.c',
'xdg.c',
'xdg-deco.c',
'xdg-popup.c',
--- /dev/null
+// 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);
+}
wl_signal_add(&view->surface->events.new_subsurface,
&view->new_subsurface);
- desktop_focus_and_activate_view(&view->server->seat, view);
- desktop_raise_view(view);
- damage_all_outputs(view->server);
+ view_impl_map(view);
}
static void
if (!strcmp(prop, "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 "";
}
&view->commit);
view->commit.notify = handle_commit;
- desktop_focus_and_activate_view(&view->server->seat, view);
- desktop_raise_view(view);
- damage_all_outputs(view->server);
+ view_impl_map(view);
}
static void