| Index: components/exo/wayland/server.cc
|
| diff --git a/components/exo/wayland/server.cc b/components/exo/wayland/server.cc
|
| index e6368d98980c5f4df9244f5faf6f38815d121a82..55df4d18b6cc7c186fe6701ecbf06b58ba0c81ca 100644
|
| --- a/components/exo/wayland/server.cc
|
| +++ b/components/exo/wayland/server.cc
|
| @@ -1497,6 +1497,15 @@ void remote_surface_set_top_inset(wl_client* client,
|
| GetUserDataAs<ShellSurface>(resource)->SetTopInset(height);
|
| }
|
|
|
| +void remote_surface_set_system_modal(wl_client* client, wl_resource* resource) {
|
| + GetUserDataAs<ShellSurface>(resource)->SetSystemModal(true);
|
| +}
|
| +
|
| +void remote_surface_unset_system_modal(wl_client* client,
|
| + wl_resource* resource) {
|
| + GetUserDataAs<ShellSurface>(resource)->SetSystemModal(false);
|
| +}
|
| +
|
| const struct zwp_remote_surface_v1_interface remote_surface_implementation = {
|
| remote_surface_destroy,
|
| remote_surface_set_app_id,
|
| @@ -1511,7 +1520,9 @@ const struct zwp_remote_surface_v1_interface remote_surface_implementation = {
|
| remote_surface_unfullscreen,
|
| remote_surface_set_rectangular_shadow,
|
| remote_surface_set_title,
|
| - remote_surface_set_top_inset};
|
| + remote_surface_set_top_inset,
|
| + remote_surface_set_system_modal,
|
| + remote_surface_unset_system_modal};
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // notification_surface_interface:
|
| @@ -1573,6 +1584,12 @@ class WaylandRemoteShell : public ash::ShellObserver,
|
|
|
| // Overridden from ash::ShellObserver:
|
| void OnDisplayWorkAreaInsetsChanged() override { SendConfigure(); }
|
| + void OnMaximizeModeStarted() override {
|
| + SendLayoutModeChange(ZWP_REMOTE_SHELL_V1_LAYOUT_MODE_TABLET);
|
| + }
|
| + void OnMaximizeModeEnded() override {
|
| + SendLayoutModeChange(ZWP_REMOTE_SHELL_V1_LAYOUT_MODE_WINDOWED);
|
| + }
|
|
|
| // Overridden from aura::client::ActivationChangeObserver:
|
| void OnWindowActivated(
|
| @@ -1595,6 +1612,13 @@ class WaylandRemoteShell : public ash::ShellObserver,
|
| wl_client_flush(wl_resource_get_client(remote_shell_resource_));
|
| }
|
|
|
| + void SendLayoutModeChange(int mode) {
|
| + if (wl_resource_get_version(remote_shell_resource_) < 8)
|
| + return;
|
| + zwp_remote_shell_v1_send_layout_mode_changed(remote_shell_resource_, mode);
|
| + wl_client_flush(wl_resource_get_client(remote_shell_resource_));
|
| + }
|
| +
|
| void SendActivated(aura::Window* gained_active, aura::Window* lost_active) {
|
| Surface* gained_active_surface =
|
| gained_active ? ShellSurface::GetMainSurface(gained_active) : nullptr;
|
| @@ -1780,7 +1804,7 @@ const struct zwp_remote_shell_v1_interface remote_shell_implementation = {
|
| remote_shell_destroy, remote_shell_get_remote_surface,
|
| remote_shell_get_notification_surface};
|
|
|
| -const uint32_t remote_shell_version = 6;
|
| +const uint32_t remote_shell_version = 8;
|
|
|
| void bind_remote_shell(wl_client* client,
|
| void* data,
|
|
|