Introduction
Introduction Statistics Contact Development Disclaimer Help
tfixed several things, nearly feature complete - dwm - [fork] customized build …
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 7fe717c29f9dafc4fc38313adbbb7c85619dec69
parent 3aad92202d58208c4197857d3f17c535ba0bd56a
Author: Anselm R. Garbe <[email protected]>
Date: Thu, 13 Jul 2006 20:28:19 +0200
fixed several things, nearly feature complete
Diffstat:
A TODO | 1 +
M client.c | 55 +++++++++++++++++------------…
M dev.c | 4 ++--
M dwm.h | 2 +-
M main.c | 2 +-
5 files changed, 35 insertions(+), 29 deletions(-)
---
diff --git a/TODO b/TODO
t@@ -0,0 +1 @@
+- improve mouse based resizals with quadrant approach (then I think we have fe…
diff --git a/client.c b/client.c
t@@ -52,7 +52,7 @@ max(Arg *arg)
sel->w = sw - 2 * sel->border;
sel->h = sh - 2 * sel->border;
craise(sel);
- resize(sel);
+ resize(sel, False);
discard_events(EnterWindowMask);
}
t@@ -100,7 +100,7 @@ floating(Arg *arg)
arrange = floating;
for(c = clients; c; c = c->next) {
if(c->tags[tsel])
- resize(c);
+ resize(c, True);
else
ban_client(c);
}
t@@ -125,29 +125,29 @@ tiling(Arg *arg)
if(c->tags[tsel])
n++;
- h = (n > 2) ? sh / (n - 2) : sh;
+ h = (n > 1) ? sh / (n - 1) : sh;
for(i = 0, c = clients; c; c = c->next) {
if(c->tags[tsel]) {
if(n == 1) {
c->x = sx;
c->y = sy;
- c->w = sw;
- c->h = sh;
+ c->w = sw - 2 * c->border;
+ c->h = sh - 2 * c->border;
}
- else if(i == 1) {
+ else if(i == 0) {
c->x = sx;
c->y = sy;
- c->w = mw;
- c->h = sh;
+ c->w = mw - 2 * c->border;
+ c->h = sh - 2 * c->border;
}
else {
c->x = sx + mw;
- c->y = sy + (i - 2) * h;
- c->w = w;
- c->h = h;
+ c->y = sy + (i - 1) * h;
+ c->w = w - 2 * c->border;
+ c->h = h - 2 * c->border;
}
- resize(c);
+ resize(c, False);
i++;
}
else
t@@ -304,14 +304,11 @@ lower(Client *c)
void
focus(Client *c)
{
- if(sel && sel != c) {
- XSetWindowBorder(dpy, sel->win, dc.bg);
- XMapWindow(dpy, sel->title);
- draw_client(sel);
- }
+ Client *old = sel;
+
sel = c;
- XUnmapWindow(dpy, c->title);
- XSetWindowBorder(dpy, c->win, dc.fg);
+ if(old && old != c)
+ draw_client(old);
draw_client(c);
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime);
XFlush(dpy);
t@@ -463,14 +460,16 @@ gravitate(Client *c, Bool invert)
void
-resize(Client *c)
+resize(Client *c, Bool inc)
{
XConfigureEvent e;
- if(c->incw)
- c->w -= (c->w - c->basew) % c->incw;
- if(c->inch)
- c->h -= (c->h - c->baseh) % c->inch;
+ if(inc) {
+ if(c->incw)
+ c->w -= (c->w - c->basew) % c->incw;
+ if(c->inch)
+ c->h -= (c->h - c->baseh) % c->inch;
+ }
if(c->minw && c->w < c->minw)
c->w = c->minw;
if(c->minh && c->h < c->minh)
t@@ -554,8 +553,14 @@ void
draw_client(Client *c)
{
int i;
- if(c == sel)
+ if(c == sel) {
+ XUnmapWindow(dpy, c->title);
+ XSetWindowBorder(dpy, c->win, dc.fg);
return;
+ }
+
+ XSetWindowBorder(dpy, c->win, dc.bg);
+ XMapWindow(dpy, c->title);
dc.x = dc.y = 0;
dc.h = c->th;
diff --git a/dev.c b/dev.c
t@@ -104,7 +104,7 @@ mresize(Client *c)
c->h = abs(ocy - ev.xmotion.y);
c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w;
c->y = (ocy <= ev.xmotion.y) ? ocy : ocy - c->h;
- resize(c);
+ resize(c, True);
break;
case ButtonRelease:
XUngrabPointer(dpy, CurrentTime);
t@@ -138,7 +138,7 @@ mmove(Client *c)
XFlush(dpy);
c->x = ocx + (ev.xmotion.x - x1);
c->y = ocy + (ev.xmotion.y - y1);
- resize(c);
+ resize(c, False);
break;
case ButtonRelease:
XUngrabPointer(dpy, CurrentTime);
diff --git a/dwm.h b/dwm.h
t@@ -106,7 +106,7 @@ extern Client *getclient(Window w);
extern void focus(Client *c);
extern void update_name(Client *c);
extern void draw_client(Client *c);
-extern void resize(Client *c);
+extern void resize(Client *c, Bool inc);
extern void update_size(Client *c);
extern Client *gettitle(Window w);
extern void craise(Client *c);
diff --git a/main.c b/main.c
t@@ -168,7 +168,7 @@ static void
cleanup()
{
while(sel) {
- resize(sel);
+ resize(sel, True);
unmanage(sel);
}
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
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.