[hackers] [wmii] Only resize clients when it would actually change their size. Prevents infinite loops with certain unscrupulous clients. || Kris Maglione

From: <hg_AT_suckless.org>
Date: Wed, 26 May 2010 12:48:38 +0000 (UTC)

changeset: 2638:ae493a6fe4f0
user: Kris Maglione <kris_AT_suckless.org>
date: Mon May 24 20:09:11 2010 -0400
files: PKGBUILD cmd/wmii/client.c cmd/wmii/view.c
description:
Only resize clients when it would actually change their size. Prevents infinite loops with certain unscrupulous clients.

diff -r 394c0bc99eeb -r ae493a6fe4f0 PKGBUILD
--- a/PKGBUILD Mon May 24 15:24:38 2010 -0400
+++ b/PKGBUILD Mon May 24 20:09:11 2010 -0400
@@ -1,6 +1,6 @@
 
 pkgname="wmii-hg"
-pkgver=2636
+pkgver=2637
 pkgrel=1
 pkgdesc="The latest hg pull of wmii, a lightweight, dynamic window manager for X11"
 url="http://wmii.suckless.org"
@@ -15,7 +15,6 @@
 provides=("wmii")
 conflicts=("wmii")
 source=()
-options=(!makeflags)
 
 test -d src || mkdir src
 ln -snf .. src/wmii
diff -r 394c0bc99eeb -r ae493a6fe4f0 cmd/wmii/client.c
--- a/cmd/wmii/client.c Mon May 24 15:24:38 2010 -0400
+++ b/cmd/wmii/client.c Mon May 24 20:09:11 2010 -0400
@@ -523,6 +523,7 @@
 
 void
 client_resize(Client *c, Rectangle r) {
+ bool client_resized, frame_resized;
         Frame *f;
 
         f = c->sel;
@@ -547,10 +548,13 @@
                 client_unmap(c, IconicState);
         }else {
                 client_map(c);
- reshapewin(c->framewin, f->r);
- reshapewin(&c->w, f->crect);
+ if((frame_resized = !eqrect(c->framewin->r, f->r)))
+ reshapewin(c->framewin, f->r);
+ if((client_resized = !eqrect(c->w.r, f->crect)))
+ reshapewin(&c->w, f->crect);
                 map_frame(c);
- client_configure(c);
+ if(client_resized || frame_resized)
+ client_configure(c);
                 ewmh_framesize(c);
         }
 }
diff -r 394c0bc99eeb -r ae493a6fe4f0 cmd/wmii/view.c
--- a/cmd/wmii/view.c Mon May 24 15:24:38 2010 -0400
+++ b/cmd/wmii/view.c Mon May 24 20:09:11 2010 -0400
@@ -215,11 +215,11 @@
                 return false;
         */
 
-
         top = 0;
         left = 0;
         right = 0;
         bottom = 0;
+ vec.n = 0;
         for(f=v->floating->frame; f; f=f->anext) {
                 strut = f->client->strut;
                 if(!strut)
Received on Wed May 26 2010 - 12:48:38 UTC

This archive was generated by hypermail 2.2.0 : Wed May 26 2010 - 13:00:09 UTC