mirror of
https://github.com/wizbright/waybox.git
synced 2025-10-29 05:40:20 -04:00
Changed current_position and previous_position to geometry and previous_geometry, to be more consistent with wlroots
This commit is contained in:
parent
5122dbf35f
commit
3319f82249
5 changed files with 50 additions and 50 deletions
|
|
@ -48,8 +48,8 @@ struct wb_view {
|
|||
struct wl_listener request_move;
|
||||
struct wl_listener request_resize;
|
||||
|
||||
struct wlr_box current_position;
|
||||
struct wlr_box previous_position;
|
||||
struct wlr_box geometry;
|
||||
struct wlr_box previous_geometry;
|
||||
};
|
||||
|
||||
void output_frame_notify(struct wl_listener* listener, void *data);
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ static xmlChar *get_attribute(xmlNode *node, char *attr_name) {
|
|||
xmlAttr *attr = node->properties;
|
||||
while (attr && strcmp((char *) attr->name, attr_name) != 0)
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -11,10 +11,10 @@ static void process_cursor_move(struct wb_server *server) {
|
|||
/* Move the grabbed view to the new position. */
|
||||
struct wb_view *view = server->grabbed_view;
|
||||
if (view->scene_tree->node.type == WLR_SCENE_NODE_TREE) {
|
||||
view->current_position.x = server->cursor->cursor->x - server->grab_x;
|
||||
view->current_position.y = server->cursor->cursor->y - server->grab_y;
|
||||
view->geometry.x = server->cursor->cursor->x - server->grab_x;
|
||||
view->geometry.y = server->cursor->cursor->y - server->grab_y;
|
||||
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;
|
||||
wlr_xdg_surface_get_geometry(view->xdg_toplevel->base, &geo_box);
|
||||
view->current_position.x = new_left - geo_box.x;
|
||||
view->current_position.y = new_top - geo_box.y;
|
||||
view->geometry.x = new_left - geo_box.x;
|
||||
view->geometry.y = new_top - geo_box.y;
|
||||
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_height = new_bottom - new_top;
|
||||
|
|
|
|||
|
|
@ -106,18 +106,18 @@ static bool handle_keybinding(struct wb_server *server, xkb_keysym_t sym, uint32
|
|||
if (view->scene_tree->node.enabled) {
|
||||
struct wlr_box 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,
|
||||
view->current_position.width, decoration_height);
|
||||
view->geometry.width, decoration_height);
|
||||
}
|
||||
}
|
||||
if (key_binding->action & ACTION_UNSHADE) {
|
||||
struct wb_view *view = wl_container_of(server->views.next, view, link);
|
||||
if (view->scene_tree->node.enabled) {
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -76,8 +76,8 @@ struct wlr_output *get_active_output(struct wb_view *view) {
|
|||
double closest_x, closest_y;
|
||||
struct wlr_output *output = NULL;
|
||||
wlr_output_layout_closest_point(view->server->output_layout, output,
|
||||
view->current_position.x + view->current_position.width / 2,
|
||||
view->current_position.y + view->current_position.height / 2,
|
||||
view->geometry.x + view->geometry.width / 2,
|
||||
view->geometry.y + view->geometry.height / 2,
|
||||
&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);
|
||||
|
||||
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);
|
||||
view->current_position.width = MIN(geo_box.width,
|
||||
view->geometry.width = MIN(geo_box.width,
|
||||
usable_area.width - config->margins.left - config->margins.right);
|
||||
view->current_position.x = config->margins.left;
|
||||
view->current_position.y = config->margins.top;
|
||||
view->geometry.x = config->margins.left;
|
||||
view->geometry.y = config->margins.top;
|
||||
} else {
|
||||
view->current_position.height = MIN(geo_box.height, usable_area.height);
|
||||
view->current_position.width = MIN(geo_box.width, usable_area.width);
|
||||
view->current_position.x = 0;
|
||||
view->current_position.y = 0;
|
||||
view->geometry.height = MIN(geo_box.height, usable_area.height);
|
||||
view->geometry.width = MIN(geo_box.width, usable_area.width);
|
||||
view->geometry.x = 0;
|
||||
view->geometry.y = 0;
|
||||
}
|
||||
|
||||
/* A view no larger than a title bar shouldn't be sized or focused */
|
||||
if (view->current_position.height > TITLEBAR_HEIGHT &&
|
||||
view->current_position.height > TITLEBAR_HEIGHT *
|
||||
if (view->geometry.height > TITLEBAR_HEIGHT &&
|
||||
view->geometry.height > TITLEBAR_HEIGHT *
|
||||
(usable_area.width / usable_area.height)) {
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
|
|
@ -187,33 +187,33 @@ static void xdg_toplevel_request_maximize(struct wl_listener *listener, void *da
|
|||
bool is_maximized = view->xdg_toplevel->current.maximized;
|
||||
if (!is_maximized) {
|
||||
struct wb_config *config = view->server->config;
|
||||
view->previous_position = view->current_position;
|
||||
view->previous_geometry = view->geometry;
|
||||
if (config) {
|
||||
view->current_position.x = config->margins.left;
|
||||
view->current_position.y = config->margins.top;
|
||||
view->geometry.x = config->margins.left;
|
||||
view->geometry.y = config->margins.top;
|
||||
usable_area.height -= config->margins.top + config->margins.bottom;
|
||||
usable_area.width -= config->margins.left + config->margins.right;
|
||||
} else {
|
||||
view->current_position.x = 0;
|
||||
view->current_position.y = 0;
|
||||
view->geometry.x = 0;
|
||||
view->geometry.y = 0;
|
||||
}
|
||||
} else {
|
||||
usable_area = view->previous_position;
|
||||
view->current_position.x = view->previous_position.x;
|
||||
view->current_position.y = view->previous_position.y;
|
||||
usable_area = view->previous_geometry;
|
||||
view->geometry.x = view->previous_geometry.x;
|
||||
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_maximized(view->xdg_toplevel, !is_maximized);
|
||||
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) {
|
||||
struct wb_view *view = wl_container_of(listener, view, request_minimize);
|
||||
bool minimize_requested = view->xdg_toplevel->requested.minimized;
|
||||
if (minimize_requested) {
|
||||
view->previous_position = view->current_position;
|
||||
view->current_position.y = -view->current_position.height;
|
||||
view->previous_geometry = view->geometry;
|
||||
view->geometry.y = -view->geometry.height;
|
||||
|
||||
struct wb_view *next_view = wl_container_of(view->link.next, next_view, link);
|
||||
if (wl_list_length(&view->link) > 1)
|
||||
|
|
@ -221,11 +221,11 @@ static void xdg_toplevel_request_minimize(struct wl_listener *listener, void *da
|
|||
else
|
||||
focus_view(view, view->xdg_toplevel->base->surface);
|
||||
} else {
|
||||
view->current_position = view->previous_position;
|
||||
view->geometry = view->previous_geometry;
|
||||
}
|
||||
|
||||
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,
|
||||
|
|
@ -244,22 +244,22 @@ static void begin_interactive(struct wb_view *view,
|
|||
server->cursor->cursor_mode = mode;
|
||||
|
||||
if (mode == WB_CURSOR_MOVE) {
|
||||
server->grab_x = server->cursor->cursor->x - view->current_position.x;
|
||||
server->grab_y = server->cursor->cursor->y - view->current_position.y;
|
||||
server->grab_x = server->cursor->cursor->x - view->geometry.x;
|
||||
server->grab_y = server->cursor->cursor->y - view->geometry.y;
|
||||
} else if (mode == WB_CURSOR_RESIZE) {
|
||||
struct wlr_box 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);
|
||||
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);
|
||||
server->grab_x = server->cursor->cursor->x - border_x;
|
||||
server->grab_y = server->cursor->cursor->y - border_y;
|
||||
|
||||
server->grab_geo_box = geo_box;
|
||||
server->grab_geo_box.x += view->current_position.x;
|
||||
server->grab_geo_box.y += view->current_position.y;
|
||||
server->grab_geo_box.x += view->geometry.x;
|
||||
server->grab_geo_box.y += view->geometry.y;
|
||||
|
||||
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(
|
||||
view->server->output_layout,
|
||||
view->current_position.x + popup->current.geometry.x,
|
||||
view->current_position.y + popup->current.geometry.y);
|
||||
view->geometry.x + popup->current.geometry.x,
|
||||
view->geometry.y + popup->current.geometry.y);
|
||||
|
||||
if (!wlr_output) return;
|
||||
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) ?
|
||||
view->server->config->margins.top : 0;
|
||||
struct wlr_box output_toplevel_box = {
|
||||
.x = output->geometry.x - view->current_position.x,
|
||||
.y = output->geometry.y - view->current_position.y,
|
||||
.x = output->geometry.x - view->geometry.x,
|
||||
.y = output->geometry.y - view->geometry.y,
|
||||
.width = output->geometry.width,
|
||||
.height = output->geometry.height - top_margin,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue