aboutsummaryrefslogtreecommitdiff
path: root/dminiwm.c
diff options
context:
space:
mode:
authorIvan Kanakarakis <ivan.kanak@gmail.com>2011-12-08 11:50:32 +0200
committerIvan Kanakarakis <ivan.kanak@gmail.com>2011-12-08 20:34:01 +0200
commit180117bcdfed0915b753079a7a70ff88bbf0dd6a (patch)
treeebbfccdb04b3c5dd3ff0980c9dcf11bb6fbab14a /dminiwm.c
parentc98d23f0ad1edabbf5ad90987e7b0b074ab2e421 (diff)
some work and formatting on tile() function
Diffstat (limited to 'dminiwm.c')
-rw-r--r--dminiwm.c205
1 files changed, 100 insertions, 105 deletions
diff --git a/dminiwm.c b/dminiwm.c
index 50f00bc..0815514 100644
--- a/dminiwm.c
+++ b/dminiwm.c
@@ -404,121 +404,117 @@ void select_desktop(int i) {
}
void tile(void) {
+ if(head == NULL) return; /* no need to arange anything */
+
client *c;
int n = 0;
int x = 0;
- int y = 0;
-
- // For a top panel
- if(TOP_PANEL == 0)
- y = PANEL_HEIGHT;
+ int y = (TOP_PANEL) ? 0 : PANEL_HEIGHT;
- // If only one window
- if(head != NULL && head->next == NULL) {
- XMoveResizeWindow(dis,head->win,0,y,sw+2*BORDER_WIDTH,sh+2*BORDER_WIDTH);
+ if(head->next == NULL) {
+ XMoveResizeWindow(dis, head->win, 0, y, sw + 2*BORDER_WIDTH, sh + 2*BORDER_WIDTH);
+ return;
}
- else if(head != NULL) {
- switch(mode) {
- case TILE:
- // Master window
- XMoveResizeWindow(dis,head->win,0,y,master_size - BORDER_WIDTH,sh - BORDER_WIDTH);
- // Stack
- for(c=head->next;c;c=c->next) ++n;
- if(n == 1) growth = 0;
- XMoveResizeWindow(dis,head->next->win,master_size + BORDER_WIDTH,y,sw-master_size-(2*BORDER_WIDTH),(sh/n)+growth - BORDER_WIDTH);
- y += (sh/n)+growth;
- for(c=head->next->next;c;c=c->next) {
- XMoveResizeWindow(dis,c->win,master_size + BORDER_WIDTH,y,sw-master_size-(2*BORDER_WIDTH),(sh/n)-(growth/(n-1)) - BORDER_WIDTH);
- y += (sh/n)-(growth/(n-1));
- }
- break;
- case MONOCYCLE:
- for(c=head;c;c=c->next) {
- XMoveResizeWindow(dis,c->win,0,y,sw+2*BORDER_WIDTH,sh+2*BORDER_WIDTH);
- }
- break;
- case BSTACK:
- // Master window
- XMoveResizeWindow(dis,head->win,0,y,sw-BORDER_WIDTH,master_size - BORDER_WIDTH);
- // Stack
- for(c=head->next;c;c=c->next) ++n;
- if(n == 1) growth = 0;
- XMoveResizeWindow(dis,head->next->win,0,y+master_size + BORDER_WIDTH,(sw/n)+growth-BORDER_WIDTH,sh-master_size-(2*BORDER_WIDTH));
- x = (sw/n)+growth;
- for(c=head->next->next;c;c=c->next) {
- XMoveResizeWindow(dis,c->win,x,y+master_size + BORDER_WIDTH,(sw/n)-(growth/(n-1)) - BORDER_WIDTH,sh-master_size-(2*BORDER_WIDTH));
- x += (sw/n)-(growth/(n-1));
- }
- break;
- case GRID:
- {
- int xpos = 0;
- int wdt = 0;
- int ht = 0;
- for(c=head;c;c=c->next) ++x;
+ switch(mode) {
+ case TILE:
+ /* master window */
+ XMoveResizeWindow(dis, head->win, 0, y, master_size - BORDER_WIDTH, sh - BORDER_WIDTH);
+ /* stack */
+ for(n=0, c=head->next; c; c=c->next, ++n); /* count windows */
+ growth = (n == 1) ? 0 : growth; /* if only one window don't care about growth */
+ XMoveResizeWindow(dis, head->next->win, master_size + BORDER_WIDTH, y, sw - master_size - 2*BORDER_WIDTH, sh/n + growth - BORDER_WIDTH);
+ y += sh/n + growth;
+ for(c=head->next->next; c; c=c->next) {
+ XMoveResizeWindow(dis, c->win, master_size + BORDER_WIDTH, y, sw - master_size - 2*BORDER_WIDTH, sh/n - growth/(n-1) - BORDER_WIDTH);
+ y += sh/n - growth / (n-1);
+ }
+ break;
+ case MONOCYCLE:
+ for(c=head; c; c=c->next) {
+ XMoveResizeWindow(dis, c->win, 0, y, sw + 2*BORDER_WIDTH, sh + 2*BORDER_WIDTH);
+ }
+ break;
+ case BSTACK:
+ /* master window */
+ XMoveResizeWindow(dis, head->win, 0, y, sw - BORDER_WIDTH, master_size - BORDER_WIDTH);
+ /* stack */
+ for(n=0, c=head->next; c; c=c->next, ++n); /* count windows */
+ growth = (n == 1) ? 0 : growth; /* if only one window don't care about growth */
+ XMoveResizeWindow(dis, head->next->win, 0, y + master_size + BORDER_WIDTH, sw/n + growth - BORDER_WIDTH, sh - master_size - 2*BORDER_WIDTH);
+ x = sw/n + growth;
+ for(c=head->next->next; c; c=c->next) {
+ XMoveResizeWindow(dis, c->win, x, y + master_size + BORDER_WIDTH, sw/n - growth/(n-1) - BORDER_WIDTH, sh-master_size - 2*BORDER_WIDTH);
+ x += sw/n - growth/(n-1);
+ }
+ break;
+ case GRID:
+ {
+ int xpos = 0;
+ int wdt = 0;
+ int ht = 0;
- for(c=head;c;c=c->next) {
- ++n;
- if(x >= 7) {
- wdt = (sw/3) - BORDER_WIDTH;
- ht = (sh/3) - BORDER_WIDTH;
- if((n == 1) || (n == 4) || (n == 7))
+ for(c=head; c; c=c->next) ++x;
+
+ for(c=head; c; c=c->next) {
+ ++n;
+ if(x >= 7) {
+ wdt = sw/3 - BORDER_WIDTH;
+ ht = sh/3 - BORDER_WIDTH;
+ if(n == 1 || n == 4 || n == 7)
+ xpos = 0;
+ if(n == 2 || n == 5 || n == 8)
+ xpos = sw/3 + BORDER_WIDTH;
+ if(n == 3 || n == 6 || n == 9)
+ xpos = 2*(sw/3) + BORDER_WIDTH;
+ if(n == 4 || n == 7)
+ y += sh/3 + BORDER_WIDTH;
+ if(n == x && n == 7)
+ wdt = sw - BORDER_WIDTH;
+ if(n == x && n == 8)
+ wdt = 2*(sw/3) - BORDER_WIDTH;
+ } else
+ if(x >= 5) {
+ wdt = sw/3 - BORDER_WIDTH;
+ ht = sh/2 - BORDER_WIDTH;
+ if(n == 1 || n == 4)
xpos = 0;
- if((n == 2) || (n == 5) || (n == 8))
- xpos = (sw/3) + BORDER_WIDTH;
- if((n == 3) || (n == 6) || (n == 9))
- xpos = (2*(sw/3)) + BORDER_WIDTH;
- if((n == 4) || (n == 7))
- y += (sh/3) + BORDER_WIDTH;
- if((n == x) && (n == 7))
- wdt = sw - BORDER_WIDTH;
- if((n == x) && (n == 8))
- wdt = 2*sw/3 - BORDER_WIDTH;
- } else
- if(x >= 5) {
- wdt = (sw/3) - BORDER_WIDTH;
- ht = (sh/2) - BORDER_WIDTH;
- if((n == 1) || (n == 4))
- xpos = 0;
- if((n == 2) || (n == 5))
- xpos = (sw/3) + BORDER_WIDTH;
- if((n == 3) || (n == 6))
- xpos = (2*(sw/3)) + BORDER_WIDTH;
- if(n == 4)
- y += (sh/2); // + BORDER_WIDTH;
- if((n == x) && (n == 5))
- wdt = 2*sw/3 - BORDER_WIDTH;
- } else {
- if(x > 2) {
- if((n == 1) || (n == 2))
- ht = (sh/2) + growth - BORDER_WIDTH;
- if(n >= 3)
- ht = (sh/2) - growth - 2*BORDER_WIDTH;
- }
- else
- ht = sh - BORDER_WIDTH;
- if((n == 1) || (n == 3)) {
- xpos = 0;
- wdt = master_size - BORDER_WIDTH;
- }
- if((n == 2) || (n == 4)) {
- xpos = master_size+BORDER_WIDTH;
- wdt = (sw - master_size) - 2*BORDER_WIDTH;
- }
- if(n == 3)
- y += (sh/2) + growth + BORDER_WIDTH;
- if((n == x) && (n == 3))
- wdt = sw - BORDER_WIDTH;
+ if(n == 2 || n == 5)
+ xpos = sw/3 + BORDER_WIDTH;
+ if(n == 3 || n == 6)
+ xpos = 2*(sw/3) + BORDER_WIDTH;
+ if(n == 4)
+ y += sh/2; // + BORDER_WIDTH;
+ if(n == x && n == 5)
+ wdt = 2*(sw/3) - BORDER_WIDTH;
+ } else {
+ if(x > 2) {
+ if(n == 1 || n == 2)
+ ht = sh/2 + growth - BORDER_WIDTH;
+ if(n >= 3)
+ ht = sh/2 - growth - 2*BORDER_WIDTH;
+ }
+ else
+ ht = sh - BORDER_WIDTH;
+ if(n == 1 || n == 3) {
+ xpos = 0;
+ wdt = master_size - BORDER_WIDTH;
+ }
+ if(n == 2 || n == 4) {
+ xpos = master_size+BORDER_WIDTH;
+ wdt = sw - master_size - 2*BORDER_WIDTH;
}
- XMoveResizeWindow(dis,c->win,xpos,y,wdt,ht);
- }
+ if(n == 3)
+ y += sh/2 + growth + BORDER_WIDTH;
+ if(n == x && n == 3)
+ wdt = sw - BORDER_WIDTH;
+ }
+ XMoveResizeWindow(dis, c->win, xpos, y, wdt, ht);
}
- break;
- default:
- break;
- }
+ }
+ break;
}
+ free(c);
}
void update_current(void) {
@@ -907,4 +903,3 @@ int main(int argc, char *argv[]) {
XCloseDisplay(dis);
return retval;
}
-