commit 4707d48
dalem
·
2026-02-21 22:36:28 +0000 UTC
parent 9faf0d2
Add an offset on the Y axis to the panel protocol This adds an option to offset the geometry of a panel by set amount of pixels New function provided and accesible via the protocol: set_y_offset
2 files changed,
+21,
-2
+17,
-2
1@@ -46,6 +46,7 @@ struct panel {
2 struct screen_modifier modifier;
3 uint32_t edge;
4 uint32_t offset, strut_size;
5+ uint32_t y_offset;
6 bool docked;
7 };
8
9@@ -59,11 +60,11 @@ update_position(struct panel *panel)
10 switch (panel->edge) {
11 case SWC_PANEL_EDGE_TOP:
12 x = screen->x + panel->offset;
13- y = screen->y;
14+ y = screen->y + panel->y_offset;
15 break;
16 case SWC_PANEL_EDGE_BOTTOM:
17 x = screen->x + panel->offset;
18- y = screen->y + screen->height - view->height;
19+ y = screen->y + screen->height - view->height - panel->y_offset;
20 break;
21 case SWC_PANEL_EDGE_LEFT:
22 x = screen->x;
23@@ -139,6 +140,18 @@ set_offset(struct wl_client *client, struct wl_resource *resource,
24 }
25 }
26
27+static void
28+set_y_offset(struct wl_client *client, struct wl_resource *resource,
29+ uint32_t offset)
30+{
31+ struct panel *panel = wl_resource_get_user_data(resource);
32+
33+ panel->y_offset = offset;
34+ if (panel->docked) {
35+ update_position(panel);
36+ }
37+}
38+
39 static void
40 set_strut(struct wl_client *client, struct wl_resource *resource, uint32_t size,
41 uint32_t begin, uint32_t end)
42@@ -154,6 +167,7 @@ set_strut(struct wl_client *client, struct wl_resource *resource, uint32_t size,
43 static const struct swc_panel_interface panel_impl = {
44 .dock = dock,
45 .set_offset = set_offset,
46+ .set_y_offset = set_y_offset,
47 .set_strut = set_strut,
48 };
49
50@@ -257,6 +271,7 @@ panel_new(struct wl_client *client, uint32_t version, uint32_t id,
51 panel->modifier.modify = &modify;
52 panel->screen = NULL;
53 panel->offset = 0;
54+ panel->y_offset = 0;
55 panel->strut_size = 0;
56 panel->docked = false;
57 wl_list_insert(&panel->view->base.handlers, &panel->view_handler.link);
+4,
-0
1@@ -56,6 +56,10 @@
2 <arg name="offset" type="uint" />
3 </request>
4
5+ <request name="set_y_offset">
6+ <arg name="offset" type="uint" />
7+ </request>
8+
9 <request name="set_strut">
10 <arg name="size" type="uint" />
11 <arg name="begin" type="uint" />