Introduction
Introduction Statistics Contact Development Disclaimer Help
tprelim of dotile() - dwm - [fork] customized build of dwm, the dynamic window …
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 8fa47ac679cfd91c022a35f2469bea7396e5f7c7
parent b427a2c6cb9c221075e42d0d1007e980a949a7df
Author: Anselm R. Garbe <[email protected]>
Date: Fri, 29 Sep 2006 14:39:03 +0200
prelim of dotile()
Diffstat:
M dwm.h | 1 +
M view.c | 104 ++++++++++++++++++++---------…
2 files changed, 68 insertions(+), 37 deletions(-)
---
diff --git a/dwm.h b/dwm.h
t@@ -40,6 +40,7 @@
#define MOUSEMASK (BUTTONMASK | PointerMotionMask)
/* other stuff used in different places */
#define BORDERPX 1
+#define MINW 100
#define PROTODELWIN 1
enum { NetSupported, NetWMName, NetLast }; /* EWMH atoms */
diff --git a/view.c b/view.c
t@@ -99,36 +99,39 @@ dofloat(Arg *arg) {
/* This algorithm is based on a (M)aster area and a (S)tacking area.
* It supports following arrangements:
- * MMMS MMMM SMMM
- * MMMS MMMM SMMM
- * MMMS SSSS SMMM
+ * SSMMM MMMMM MMMSS
+ * SSMMM SSSSS MMMSS
*/
void
dotile(Arg *arg) {
- int h, i, n, w;
+ int i, n, stackw, stackh, tw, th;
Client *c;
for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
n++;
- if(isvertical) {
- if(stackpos == StackBottom) {
- w = sw;
- if(n > 1)
- h = (sh - bh) / (n - 1);
- else
- h = sh - bh;
- }
- else {
- w = sw - master;
- if(n > 1)
- h = (sh - bh) / (n - 1);
- else
- h = sh - bh;
- }
+ if(stackpos == StackBottom) {
+ stackw = sw;
+ stackh = sh - bh - master;
+ }
+ else {
+ stackw = sw - master;
+ stackh = sh - bh;
}
- else { /* horizontal stack */
+ if(isvertical) {
+ tw = stackw;
+ if(n > 1)
+ th = stackh / (n - 1);
+ else
+ th = stackh;
+ }
+ else {
+ th = stackh;
+ if(n > 1)
+ tw = stackw / (n - 1);
+ else
+ tw = stackw;
}
for(i = 0, c = clients; c; c = c->next) {
t@@ -138,32 +141,59 @@ dotile(Arg *arg) {
continue;
}
c->ismax = False;
- if(n == 1) {
+ if(n == 1) { /* only 1 window */
c->x = sx;
c->y = sy + bh;
c->w = sw - 2 * BORDERPX;
c->h = sh - 2 * BORDERPX - bh;
}
- else if(i == 0) {
+ else if(i == 0) { /* master window */
c->x = sx;
+ if(stackpos == StackLeft)
+ c->x += master;
c->y = sy + bh;
- c->w = master - 2 * BORDERPX;
- c->h = sh - 2 * BORDERPX - bh;
+ if(isvertical) {
+ c->w = master - 2 * BORDERPX;
+ c->h = sh - 2 * BORDERPX - bh;
+ }
+ else {
+ c->w = sw;
+ c->h = master - 2 * BORDERPX;
+ }
}
- else if(h > bh) {
- c->x = sx + master;
- c->y = sy + (i - 1) * h + bh;
- c->w = w - 2 * BORDERPX;
- if(i + 1 == n)
- c->h = sh - c->y - 2 * BORDERPX;
+ else if((isvertical && th > bh) || (!isvertical && tw …
+ /* tile window */
+ c->x = sx;
+ if(isvertical)
+ c->y = sy + (i - 1) * th + bh;
else
- c->h = h - 2 * BORDERPX;
+ c->y = sy + bh;
+ if(stackpos == StackRight)
+ c->x += master;
+ else if(stackpos == StackBottom)
+ c->y += master;
+ c->w = tw - 2 * BORDERPX;
+ c->h = th - 2 * BORDERPX;
+ if(i + 1 == n) { /* fixes for last tile to tak…
+ if(isvertical)
+ c->h = sh - c->y - 2 * BORDERP…
+ else {
+ if(stackpos == StackLeft)
+ c->w = master - c->x -…
+ else
+ c->w = sw - c->x - 2 *…
+ }
+ }
}
- else { /* fallback if h < bh */
- c->x = sx + master;
+ else { /* fallback if th < bh resp. tw < MINW */
+ c->x = sx;
c->y = sy + bh;
- c->w = w - 2 * BORDERPX;
- c->h = sh - 2 * BORDERPX - bh;
+ if(stackpos == StackRight)
+ c->x += master;
+ else if(stackpos == StackBottom)
+ c->y += master;
+ c->w = stackw - 2 * BORDERPX;
+ c->h = stackh - 2 * BORDERPX;
}
resize(c, False, TopLeft);
i++;
t@@ -232,12 +262,12 @@ resizecol(Arg *arg) {
return;
if(sel == getnext(clients)) {
- if(master + arg->i > sw - 100 || master + arg->i < 100)
+ if(master + arg->i > sw - MINW || master + arg->i < MINW)
return;
master += arg->i;
}
else {
- if(master - arg->i > sw - 100 || master - arg->i < 100)
+ if(master - arg->i > sw - MINW || master - arg->i < MINW)
return;
master -= arg->i;
}
You are viewing proxied material from mx1.adamsgaard.dk. 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.