Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-tiledmove-20231210-b731.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-tiledmove-20231210-b731.diff (2197B)
---
1 From 427c5fef13676179621949f0a8a4036e49d4b74e Mon Sep 17 00:00:00 2001
2 From: Niki <>
3 Date: Sun, 10 Dec 2023 00:29:59 +0000
4 Subject: [PATCH] The function `movemouse` now doesn't force clients to be
5 floating.
6
7 Tiling clients when moved will swap with any existing clients that
8 overlap with the cursor, and snap to other monitors.
9 ---
10 dwm.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
11 1 file changed, 53 insertions(+), 3 deletions(-)
12
13 diff --git a/dwm.c b/dwm.c
14 index d12be2d..b1023e0 100644
15 --- a/dwm.c
16 +++ b/dwm.c
17 @@ -1189,11 +1189,60 @@ movemouse(const Arg *arg)
18 ny = selmon->wy;
19 else if (abs((selmon->wy + selmon->wh) - (ny + …
20 ny = selmon->wy + selmon->wh - HEIGHT(c…
21 - if (!c->isfloating && selmon->lt[selmon->sellt]…
22 - && (abs(nx - c->x) > snap || abs(ny - c->y) > s…
23 - togglefloating(NULL);
24 if (!selmon->lt[selmon->sellt]->arrange || c->i…
25 resize(c, nx, ny, c->w, c->h, 1);
26 + else if (selmon->lt[selmon->sellt]->arrange || …
27 + if ((m = recttomon(ev.xmotion.x_root, e…
28 + sendmon(c, m);
29 + selmon = m;
30 + focus(NULL);
31 + }
32 +
33 + Client *cc = c->mon->clients;
34 + while (1) {
35 + if (cc == 0) break;
36 + if(
37 + cc != c && !cc->isfloating && …
38 + ev.xmotion.x_root > cc->x &&
39 + ev.xmotion.x_root < cc->x + cc…
40 + ev.xmotion.y_root > cc->y &&
41 + ev.xmotion.y_root < cc->y + cc…
42 + break;
43 + }
44 +
45 + cc = cc->next;
46 + }
47 +
48 + if (cc) {
49 + Client *cl1, *cl2, ocl1;
50 +
51 + if (!selmon->lt[selmon->sellt]-…
52 +
53 + cl1 = c;
54 + cl2 = cc;
55 + ocl1 = *cl1;
56 + strcpy(cl1->name, cl2->name);
57 + cl1->win = cl2->win;
58 + cl1->x = cl2->x;
59 + cl1->y = cl2->y;
60 + cl1->w = cl2->w;
61 + cl1->h = cl2->h;
62 +
63 + cl2->win = ocl1.win;
64 + strcpy(cl2->name, ocl1.name);
65 + cl2->x = ocl1.x;
66 + cl2->y = ocl1.y;
67 + cl2->w = ocl1.w;
68 + cl2->h = ocl1.h;
69 +
70 + selmon->sel = cl2;
71 +
72 + c = cc;
73 + focus(c);
74 +
75 + arrange(cl1->mon);
76 + }
77 + }
78 break;
79 }
80 } while (ev.type != ButtonRelease);
81 --
82 2.43.0
83
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.