Introduction
Introduction Statistics Contact Development Disclaimer Help
Fixed obscure miscalculation when a client is closed. - tabbed - tab interface …
git clone git://git.suckless.org/tabbed
Log
Files
Refs
README
LICENSE
---
commit 14beaabe6ccbdf12546f31edf931e30cbe9c0c82
parent 361ddc85d506c058562ccba7c68370d49733c928
Author: Alexander Sedov <[email protected]>
Date: Mon, 29 Jul 2013 11:11:33 +0400
Fixed obscure miscalculation when a client is closed.
This crops up whenever you just switched from tab # N+1 to tab # N
and close current tab. unmanage() first decreases lastsel
(so it becomes N) then erroneously tests it against sel and focuses first tab
instead. One can see that focus() would never set lastsel == sel,
so I took liberty to fix this annoying behaviour which happens to frequently
with newposition = 0 and npisrelative = True settings.
Signed-off-by: Christoph Lohmann <[email protected]>
Diffstat:
M tabbed.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/tabbed.c b/tabbed.c
@@ -171,12 +171,18 @@ void
buttonpress(const XEvent *e) {
const XButtonPressedEvent *ev = &e->xbutton;
int i;
+ int fc;
Arg arg;
- if((getfirsttab() != 0 && ev->x < TEXTW(before)) || ev->x < 0)
+ fc = getfirsttab();
+
+ if((fc > 0 && ev->x < TEXTW(before)) || ev->x < 0)
return;
- for(i = 0; i < nclients; i++) {
+ if(ev->y < 0 || ev-> y > bh)
+ return;
+
+ for(i = (fc > 0) ? fc : 0; i < nclients; i++) {
if(clients[i]->tabx > ev->x) {
switch(ev->button) {
case Button1:
@@ -1053,7 +1059,11 @@ unmanage(int c) {
}
if(c == sel) {
- if(lastsel > 0 && lastsel != sel) {
+ /* Note that focus() will never set lastsel == sel,
+ * so if here lastsel == sel, it was decreased by abov…
+ * and was actually (sel + 1) before.
+ */
+ if(lastsel > 0) {
focus(lastsel);
} else {
focus(0);
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.