2024-05-29 11:06:39 +09:00
|
|
|
// SPDX-License-Identifier: GPL-2.0-only
|
|
|
|
|
|
2025-07-28 01:02:01 -04:00
|
|
|
#include "resize-outlines.h"
|
2024-05-29 11:06:39 +09:00
|
|
|
#include <wlr/types/wlr_scene.h>
|
2025-09-02 23:02:27 -04:00
|
|
|
#include "common/border.h"
|
2025-06-09 16:27:17 +09:00
|
|
|
#include "common/lab-scene-rect.h"
|
2024-05-29 11:06:39 +09:00
|
|
|
#include "labwc.h"
|
2025-08-17 16:01:50 -04:00
|
|
|
#include "resize-indicator.h"
|
|
|
|
|
#include "ssd.h"
|
|
|
|
|
#include "theme.h"
|
2025-08-31 04:38:36 +09:00
|
|
|
#include "view.h"
|
2024-05-29 11:06:39 +09:00
|
|
|
|
|
|
|
|
bool
|
|
|
|
|
resize_outlines_enabled(struct view *view)
|
|
|
|
|
{
|
|
|
|
|
return view->resize_outlines.rect
|
|
|
|
|
&& view->resize_outlines.rect->tree->node.enabled;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
resize_outlines_update(struct view *view, struct wlr_box new_geo)
|
|
|
|
|
{
|
|
|
|
|
struct resize_outlines *outlines = &view->resize_outlines;
|
|
|
|
|
|
|
|
|
|
if (!outlines->rect) {
|
2025-06-09 16:27:17 +09:00
|
|
|
struct lab_scene_rect_options opts = {
|
|
|
|
|
.border_colors = (float *[3]) {
|
tree-wide: auto-replace of (struct server *)
#!/bin/bash
read -r -d '' EXPRS << EOF
s/xwayland->server/xwayland->svr/g;
s/\t*struct server \*server;\n//g;
s/\t*struct server \*server =.*?;\n//gs;
s/\t*.* = ([a-z_]*->)*server[;,]\n//g;
s/\{\n\n/\{\n/g;
s/\n\n+/\n\n/g;
s/\(\s*struct server \*server\)/(void)/g;
s/\(\s*struct server \*server,\s*/(/g;
s/,\s*struct server \*server\)/)/g;
s/,\s*struct server \*server,\s*/, /g;
s/\(\s*([a-z_]*->)*server\)/()/g;
s/\(\s*([a-z_]*->)*server,\s*/(/g;
s/,\s*([a-z_]*->)*server\)/)/g;
s/,\s*([a-z_]*->)*server,\s*/, /g;
s/([a-z_]*->)*server->/g_server./g;
s/xwayland->svr/xwayland->server/g;
EOF
find src include \( -name \*.c -o -name \*.h \) -exec \
perl -0777 -i -pe "$EXPRS" \{\} \;
2026-02-23 11:56:39 -05:00
|
|
|
g_server.theme->osd_bg_color,
|
|
|
|
|
g_server.theme->osd_label_text_color,
|
|
|
|
|
g_server.theme->osd_bg_color,
|
2025-06-09 16:27:17 +09:00
|
|
|
},
|
|
|
|
|
.nr_borders = 3,
|
|
|
|
|
.border_width = 1,
|
2024-05-29 11:06:39 +09:00
|
|
|
};
|
2025-06-09 16:27:17 +09:00
|
|
|
outlines->rect = lab_scene_rect_create(view->scene_tree, &opts);
|
2024-05-29 11:06:39 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct border margin = ssd_get_margin(view->ssd);
|
|
|
|
|
struct wlr_box box = {
|
|
|
|
|
.x = new_geo.x - margin.left,
|
|
|
|
|
.y = new_geo.y - margin.top,
|
|
|
|
|
.width = new_geo.width + margin.left + margin.right,
|
|
|
|
|
.height = new_geo.height + margin.top + margin.bottom,
|
|
|
|
|
};
|
2025-06-09 16:27:17 +09:00
|
|
|
lab_scene_rect_set_size(outlines->rect, box.width, box.height);
|
2024-05-29 11:06:39 +09:00
|
|
|
wlr_scene_node_set_position(&outlines->rect->tree->node,
|
|
|
|
|
box.x - view->current.x, box.y - view->current.y);
|
|
|
|
|
wlr_scene_node_set_enabled(
|
|
|
|
|
&view->resize_outlines.rect->tree->node, true);
|
|
|
|
|
|
|
|
|
|
outlines->view_geo = new_geo;
|
|
|
|
|
|
|
|
|
|
resize_indicator_update(view);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
resize_outlines_finish(struct view *view)
|
|
|
|
|
{
|
|
|
|
|
view_move_resize(view, view->resize_outlines.view_geo);
|
|
|
|
|
wlr_scene_node_set_enabled(
|
|
|
|
|
&view->resize_outlines.rect->tree->node, false);
|
|
|
|
|
}
|