linuxOS_AP06/buildroot/package/weston/0042-desktop-shell-Resize-views-when-work-area-changed.patch
2025-06-03 12:28:32 +08:00

61 lines
1.8 KiB
Diff

From a18c2e67a5441d70ca0d3179c2bc614a14fd81a5 Mon Sep 17 00:00:00 2001
From: Jeffy Chen <jeffy.chen@rock-chips.com>
Date: Fri, 2 Apr 2021 01:50:22 +0800
Subject: [PATCH 42/95] desktop-shell: Resize views when work area changed
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
desktop-shell/shell.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 621cbbf..b815834 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -51,6 +51,9 @@
static void
set_maximized_position(struct desktop_shell *shell, struct shell_surface *shsurf);
+static void
+handle_output_resized_shsurfs(struct desktop_shell *shell);
+
struct focus_state {
struct desktop_shell *shell;
struct weston_seat *seat;
@@ -2933,6 +2936,7 @@ panel_committed(struct weston_surface *es,
struct weston_output *output = sh_output->output;
struct weston_coord_global pos = output->pos;
struct desktop_shell *shell = sh_output->shell;
+ pixman_rectangle32_t old_area, new_area;
if (!weston_surface_has_content(es))
return;
@@ -2955,6 +2959,7 @@ panel_committed(struct weston_surface *es,
break;
}
+ get_output_work_area(shell, output, &old_area);
if (!weston_surface_is_mapped(es)) {
weston_surface_map(es);
assert(wl_list_empty(&es->views));
@@ -2965,10 +2970,16 @@ panel_committed(struct weston_surface *es,
weston_view_set_output(sh_output->panel_view, output);
}
+ get_output_work_area(shell, output, &new_area);
assert(sh_output->panel_view);
pos = weston_coord_global_add(output->pos, sh_output->panel_offset);
weston_view_set_position(sh_output->panel_view, pos);
+
+ if (old_area.x != new_area.x || old_area.y != new_area.y ||
+ old_area.width != new_area.width ||
+ old_area.height != new_area.height)
+ handle_output_resized_shsurfs(shell);
}
static void
--
2.20.1