Changed current_position and previous_position to geometry and previous_geometry, to be more consistent with wlroots

This commit is contained in:
Keith Bowes 2022-12-06 22:19:20 -05:00
parent 5122dbf35f
commit 3319f82249
5 changed files with 50 additions and 50 deletions

View file

@ -48,8 +48,8 @@ struct wb_view {
struct wl_listener request_move; struct wl_listener request_move;
struct wl_listener request_resize; struct wl_listener request_resize;
struct wlr_box current_position; struct wlr_box geometry;
struct wlr_box previous_position; struct wlr_box previous_geometry;
}; };
void output_frame_notify(struct wl_listener* listener, void *data); void output_frame_notify(struct wl_listener* listener, void *data);

View file

@ -31,7 +31,7 @@ static xmlChar *get_attribute(xmlNode *node, char *attr_name) {
xmlAttr *attr = node->properties; xmlAttr *attr = node->properties;
while (attr && strcmp((char *) attr->name, attr_name) != 0) while (attr && strcmp((char *) attr->name, attr_name) != 0)
attr = attr->next; attr = attr->next;
return attr->children->content; return attr ? attr->children->content : (xmlChar *) "";
} }
static void get_action(xmlNode *new_node, struct wb_key_binding *key_bind) { static void get_action(xmlNode *new_node, struct wb_key_binding *key_bind) {

View file

@ -11,10 +11,10 @@ static void process_cursor_move(struct wb_server *server) {
/* Move the grabbed view to the new position. */ /* Move the grabbed view to the new position. */
struct wb_view *view = server->grabbed_view; struct wb_view *view = server->grabbed_view;
if (view->scene_tree->node.type == WLR_SCENE_NODE_TREE) { if (view->scene_tree->node.type == WLR_SCENE_NODE_TREE) {
view->current_position.x = server->cursor->cursor->x - server->grab_x; view->geometry.x = server->cursor->cursor->x - server->grab_x;
view->current_position.y = server->cursor->cursor->y - server->grab_y; view->geometry.y = server->cursor->cursor->y - server->grab_y;
wlr_scene_node_set_position(&view->scene_tree->node, wlr_scene_node_set_position(&view->scene_tree->node,
view->current_position.x, view->current_position.y); view->geometry.x, view->geometry.y);
} }
} }
@ -52,10 +52,10 @@ static void process_cursor_resize(struct wb_server *server) {
struct wlr_box geo_box; struct wlr_box geo_box;
wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box); wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box);
view->current_position.x = new_left - geo_box.x; view->geometry.x = new_left - geo_box.x;
view->current_position.y = new_top - geo_box.y; view->geometry.y = new_top - geo_box.y;
wlr_scene_node_set_position(&view->scene_tree->node, wlr_scene_node_set_position(&view->scene_tree->node,
view->current_position.x, view->current_position.y); view->geometry.x, view->geometry.y);
int new_width = new_right - new_left; int new_width = new_right - new_left;
int new_height = new_bottom - new_top; int new_height = new_bottom - new_top;

View file

@ -106,18 +106,18 @@ static bool handle_keybinding(struct wb_server *server, xkb_keysym_t sym, uint32
if (view->scene_tree->node.enabled) { if (view->scene_tree->node.enabled) {
struct wlr_box geo_box; struct wlr_box geo_box;
wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box); wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box);
int decoration_height = MAX(geo_box.y - view->current_position.y, TITLEBAR_HEIGHT); int decoration_height = MAX(geo_box.y - view->geometry.y, TITLEBAR_HEIGHT);
view->previous_position = view->current_position; view->previous_geometry = view->geometry;
wlr_xdg_toplevel_set_size(view->xdg_toplevel, wlr_xdg_toplevel_set_size(view->xdg_toplevel,
view->current_position.width, decoration_height); view->geometry.width, decoration_height);
} }
} }
if (key_binding->action & ACTION_UNSHADE) { if (key_binding->action & ACTION_UNSHADE) {
struct wb_view *view = wl_container_of(server->views.next, view, link); struct wb_view *view = wl_container_of(server->views.next, view, link);
if (view->scene_tree->node.enabled) { if (view->scene_tree->node.enabled) {
wlr_xdg_toplevel_set_size(view->xdg_toplevel, wlr_xdg_toplevel_set_size(view->xdg_toplevel,
view->previous_position.width, view->previous_position.height); view->previous_geometry.width, view->previous_geometry.height);
} }
} }
if (key_binding->action & ACTION_RECONFIGURE) { if (key_binding->action & ACTION_RECONFIGURE) {

View file

@ -76,8 +76,8 @@ struct wlr_output *get_active_output(struct wb_view *view) {
double closest_x, closest_y; double closest_x, closest_y;
struct wlr_output *output = NULL; struct wlr_output *output = NULL;
wlr_output_layout_closest_point(view->server->output_layout, output, wlr_output_layout_closest_point(view->server->output_layout, output,
view->current_position.x + view->current_position.width / 2, view->geometry.x + view->geometry.width / 2,
view->current_position.y + view->current_position.height / 2, view->geometry.y + view->geometry.height / 2,
&closest_x, &closest_y); &closest_x, &closest_y);
return wlr_output_layout_output_at(view->server->output_layout, closest_x, closest_y); return wlr_output_layout_output_at(view->server->output_layout, closest_x, closest_y);
} }
@ -101,30 +101,30 @@ static void xdg_toplevel_map(struct wl_listener *listener, void *data) {
wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box); wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box);
if (config) { if (config) {
view->current_position.height = MIN(geo_box.height, view->geometry.height = MIN(geo_box.height,
usable_area.height - config->margins.top - config->margins.bottom); usable_area.height - config->margins.top - config->margins.bottom);
view->current_position.width = MIN(geo_box.width, view->geometry.width = MIN(geo_box.width,
usable_area.width - config->margins.left - config->margins.right); usable_area.width - config->margins.left - config->margins.right);
view->current_position.x = config->margins.left; view->geometry.x = config->margins.left;
view->current_position.y = config->margins.top; view->geometry.y = config->margins.top;
} else { } else {
view->current_position.height = MIN(geo_box.height, usable_area.height); view->geometry.height = MIN(geo_box.height, usable_area.height);
view->current_position.width = MIN(geo_box.width, usable_area.width); view->geometry.width = MIN(geo_box.width, usable_area.width);
view->current_position.x = 0; view->geometry.x = 0;
view->current_position.y = 0; view->geometry.y = 0;
} }
/* A view no larger than a title bar shouldn't be sized or focused */ /* A view no larger than a title bar shouldn't be sized or focused */
if (view->current_position.height > TITLEBAR_HEIGHT && if (view->geometry.height > TITLEBAR_HEIGHT &&
view->current_position.height > TITLEBAR_HEIGHT * view->geometry.height > TITLEBAR_HEIGHT *
(usable_area.width / usable_area.height)) { (usable_area.width / usable_area.height)) {
wlr_xdg_toplevel_set_size(view->xdg_toplevel, wlr_xdg_toplevel_set_size(view->xdg_toplevel,
view->current_position.width, view->current_position.height); view->geometry.width, view->geometry.height);
focus_view(view, view->xdg_toplevel->base->surface); focus_view(view, view->xdg_toplevel->base->surface);
} }
wlr_scene_node_set_position(&view->scene_tree->node, wlr_scene_node_set_position(&view->scene_tree->node,
view->current_position.x, view->current_position.y); view->geometry.x, view->geometry.y);
} }
static void xdg_toplevel_unmap(struct wl_listener *listener, void *data) { static void xdg_toplevel_unmap(struct wl_listener *listener, void *data) {
@ -187,33 +187,33 @@ static void xdg_toplevel_request_maximize(struct wl_listener *listener, void *da
bool is_maximized = view->xdg_toplevel->current.maximized; bool is_maximized = view->xdg_toplevel->current.maximized;
if (!is_maximized) { if (!is_maximized) {
struct wb_config *config = view->server->config; struct wb_config *config = view->server->config;
view->previous_position = view->current_position; view->previous_geometry = view->geometry;
if (config) { if (config) {
view->current_position.x = config->margins.left; view->geometry.x = config->margins.left;
view->current_position.y = config->margins.top; view->geometry.y = config->margins.top;
usable_area.height -= config->margins.top + config->margins.bottom; usable_area.height -= config->margins.top + config->margins.bottom;
usable_area.width -= config->margins.left + config->margins.right; usable_area.width -= config->margins.left + config->margins.right;
} else { } else {
view->current_position.x = 0; view->geometry.x = 0;
view->current_position.y = 0; view->geometry.y = 0;
} }
} else { } else {
usable_area = view->previous_position; usable_area = view->previous_geometry;
view->current_position.x = view->previous_position.x; view->geometry.x = view->previous_geometry.x;
view->current_position.y = view->previous_position.y; view->geometry.y = view->previous_geometry.y;
} }
wlr_xdg_toplevel_set_size(view->xdg_toplevel, usable_area.width, usable_area.height); wlr_xdg_toplevel_set_size(view->xdg_toplevel, usable_area.width, usable_area.height);
wlr_xdg_toplevel_set_maximized(view->xdg_toplevel, !is_maximized); wlr_xdg_toplevel_set_maximized(view->xdg_toplevel, !is_maximized);
wlr_scene_node_set_position(&view->scene_tree->node, wlr_scene_node_set_position(&view->scene_tree->node,
view->current_position.x, view->current_position.y); view->geometry.x, view->geometry.y);
} }
static void xdg_toplevel_request_minimize(struct wl_listener *listener, void *data) { static void xdg_toplevel_request_minimize(struct wl_listener *listener, void *data) {
struct wb_view *view = wl_container_of(listener, view, request_minimize); struct wb_view *view = wl_container_of(listener, view, request_minimize);
bool minimize_requested = view->xdg_toplevel->requested.minimized; bool minimize_requested = view->xdg_toplevel->requested.minimized;
if (minimize_requested) { if (minimize_requested) {
view->previous_position = view->current_position; view->previous_geometry = view->geometry;
view->current_position.y = -view->current_position.height; view->geometry.y = -view->geometry.height;
struct wb_view *next_view = wl_container_of(view->link.next, next_view, link); struct wb_view *next_view = wl_container_of(view->link.next, next_view, link);
if (wl_list_length(&view->link) > 1) if (wl_list_length(&view->link) > 1)
@ -221,11 +221,11 @@ static void xdg_toplevel_request_minimize(struct wl_listener *listener, void *da
else else
focus_view(view, view->xdg_toplevel->base->surface); focus_view(view, view->xdg_toplevel->base->surface);
} else { } else {
view->current_position = view->previous_position; view->geometry = view->previous_geometry;
} }
wlr_scene_node_set_position(&view->scene_tree->node, wlr_scene_node_set_position(&view->scene_tree->node,
view->current_position.x, view->current_position.y); view->geometry.x, view->geometry.y);
} }
static void begin_interactive(struct wb_view *view, static void begin_interactive(struct wb_view *view,
@ -244,22 +244,22 @@ static void begin_interactive(struct wb_view *view,
server->cursor->cursor_mode = mode; server->cursor->cursor_mode = mode;
if (mode == WB_CURSOR_MOVE) { if (mode == WB_CURSOR_MOVE) {
server->grab_x = server->cursor->cursor->x - view->current_position.x; server->grab_x = server->cursor->cursor->x - view->geometry.x;
server->grab_y = server->cursor->cursor->y - view->current_position.y; server->grab_y = server->cursor->cursor->y - view->geometry.y;
} else if (mode == WB_CURSOR_RESIZE) { } else if (mode == WB_CURSOR_RESIZE) {
struct wlr_box geo_box; struct wlr_box geo_box;
wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box); wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box);
double border_x = (view->current_position.x + geo_box.x) + double border_x = (view->geometry.x + geo_box.x) +
((edges & WLR_EDGE_RIGHT) ? geo_box.width : 0); ((edges & WLR_EDGE_RIGHT) ? geo_box.width : 0);
double border_y = (view->current_position.y + geo_box.y) + double border_y = (view->geometry.y + geo_box.y) +
((edges & WLR_EDGE_BOTTOM) ? geo_box.height : 0); ((edges & WLR_EDGE_BOTTOM) ? geo_box.height : 0);
server->grab_x = server->cursor->cursor->x - border_x; server->grab_x = server->cursor->cursor->x - border_x;
server->grab_y = server->cursor->cursor->y - border_y; server->grab_y = server->cursor->cursor->y - border_y;
server->grab_geo_box = geo_box; server->grab_geo_box = geo_box;
server->grab_geo_box.x += view->current_position.x; server->grab_geo_box.x += view->geometry.x;
server->grab_geo_box.y += view->current_position.y; server->grab_geo_box.y += view->geometry.y;
server->resize_edges = edges; server->resize_edges = edges;
} }
@ -290,8 +290,8 @@ static void handle_new_popup(struct wl_listener *listener, void *data) {
struct wlr_output *wlr_output = wlr_output_layout_output_at( struct wlr_output *wlr_output = wlr_output_layout_output_at(
view->server->output_layout, view->server->output_layout,
view->current_position.x + popup->current.geometry.x, view->geometry.x + popup->current.geometry.x,
view->current_position.y + popup->current.geometry.y); view->geometry.y + popup->current.geometry.y);
if (!wlr_output) return; if (!wlr_output) return;
struct wb_output *output = wlr_output->data; struct wb_output *output = wlr_output->data;
@ -299,8 +299,8 @@ static void handle_new_popup(struct wl_listener *listener, void *data) {
int top_margin = (view->server->config) ? int top_margin = (view->server->config) ?
view->server->config->margins.top : 0; view->server->config->margins.top : 0;
struct wlr_box output_toplevel_box = { struct wlr_box output_toplevel_box = {
.x = output->geometry.x - view->current_position.x, .x = output->geometry.x - view->geometry.x,
.y = output->geometry.y - view->current_position.y, .y = output->geometry.y - view->geometry.y,
.width = output->geometry.width, .width = output->geometry.width,
.height = output->geometry.height - top_margin, .height = output->geometry.height - top_margin,
}; };