aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/wm/client.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cmd/wm/client.c')
-rw-r--r--sys/cmd/wm/client.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/sys/cmd/wm/client.c b/sys/cmd/wm/client.c
index 4132468..f626cfa 100644
--- a/sys/cmd/wm/client.c
+++ b/sys/cmd/wm/client.c
@@ -3,13 +3,15 @@
static char broken[] = "broken";
void
-focus(Client *client, struct wlr_surface *new, int lift)
+focus(Client *client, int lift)
{
struct wlr_seat *seat;
- struct wlr_surface *old;
+ struct wlr_surface *old, *new;
struct wlr_xdg_surface *xdg;
struct wlr_keyboard *keyboard;
+ new = server.input.seat->keyboard_state.focused_surface;
+
if(client && lift) {
wl_list_remove(&client->stack);
wl_list_insert(&server.client.stack, &client->stack);
@@ -112,7 +114,7 @@ setinteractive(Client *client, int mode, uint32 edges) {
static
void
-apply_bounds(Client *client, struct wlr_box *box)
+constrain(Client *client, struct wlr_box *box)
{
client->geometry.width = MAX(1, client->geometry.width);
client->geometry.height = MAX(1, client->geometry.height);
@@ -137,7 +139,7 @@ resize(Client *client, int x, int y, int w, int h, int interact)
client->geometry.width = w;
client->geometry.height = h;
- apply_bounds(client, box);
+ constrain(client, box);
client->resize = wlr_xdg_toplevel_set_size(client->xdg,
client->geometry.width - 2*client->border,
@@ -146,13 +148,12 @@ resize(Client *client, int x, int y, int w, int h, int interact)
}
void
-attach_to(Client *client, Monitor *monitor, uint tags)
+attach(Client *client, Monitor *monitor, uint tags)
{
- struct wlr_surface *surface;
Monitor *old = client->monitor;
-
if(old == monitor)
return;
+
client->monitor = monitor;
if(old) {
@@ -162,23 +163,22 @@ attach_to(Client *client, Monitor *monitor, uint tags)
if(monitor) {
/* make sure window actually overlaps with the monitor */
- apply_bounds(client, &monitor->geometry);
+ constrain(client, &monitor->geometry);
wlr_surface_send_enter(client->xdg->surface, monitor->output);
client->tags = tags ? tags : monitor->tag.set[monitor->tag.selected];
arrange(monitor);
}
- surface = server.input.seat->keyboard_state.focused_surface;
- focus(focused_client(server.monitor.selected), surface, 1);
+ focus(focused_client(server.monitor.selected), 1);
}
void
-apply_rules(Client *client)
+rules(Client *client)
{
/* rule matching */
- char *id, *title;
- uint i, tags;
Rule *rule;
+ uint i, tags;
+ char *id, *title;
Monitor *monitor, *it;
monitor = server.monitor.selected;
@@ -199,5 +199,6 @@ apply_rules(Client *client)
monitor = it;
}
}
- attach_to(client, monitor, tags);
+
+ attach(client, monitor, tags);
}