Introduction
Introduction Statistics Contact Development Disclaimer Help
Correcting the lastsel handling in tabbed. It should be more predictable now. -…
git clone git://git.suckless.org/tabbed
Log
Files
Refs
README
LICENSE
---
commit ffa2dbeb645a3a3d6883d569107b1efd49472035
parent 5e1c53ad3cecdfcb773e606a65ae853a524d8136
Author: Christoph Lohmann <[email protected]>
Date: Tue, 27 Nov 2012 20:25:56 +0100
Correcting the lastsel handling in tabbed. It should be more predictable now.
Diffstat:
M tabbed.1 | 2 +-
M tabbed.c | 40 +++++++++++++++++------------…
2 files changed, 23 insertions(+), 19 deletions(-)
---
diff --git a/tabbed.1 b/tabbed.1
@@ -65,7 +65,7 @@ move selected tab one to the left
move selected tab one to the right
.TP
.B Ctrl\-Tab
-toggle between tabs
+toggle between the selected and last selected tab
.TP
.B Ctrl\-q
close tab
diff --git a/tabbed.c b/tabbed.c
@@ -437,8 +437,8 @@ focus(int c) {
if(sel != c)
lastsel = sel;
-
sel = c;
+
drawbar();
}
@@ -682,9 +682,6 @@ manage(Window w) {
XSync(dpy, False);
focus((nextfocus)? 0 : ((sel < 0)? 0 : sel));
nextfocus = foreground;
-
- if(lastsel < 0)
- lastsel = 0;
}
}
@@ -919,45 +916,52 @@ textnw(const char *text, unsigned int len) {
void
unmanage(int c) {
- int pc;
-
- if(c < 0 || c >= nclients)
+ if(c < 0 || c >= nclients) {
+ drawbar();
return;
+ }
if(!nclients) {
return;
} else if(c == 0) {
/* First client. */
- pc = 0;
nclients--;
free(clients[0]);
memmove(&clients[0], &clients[1], sizeof(Client *) * nclients);
} else if(c == nclients - 1) {
/* Last client. */
nclients--;
- pc = nclients - 1;
free(clients[c]);
clients = erealloc(clients, sizeof(Client *) * nclients);
} else {
/* Somewhere inbetween. */
- pc = c + 1;
free(clients[c]);
memmove(&clients[c], &clients[c+1],
sizeof(Client *) * (nclients - (c + 1)));
nclients--;
}
- if(c == lastsel)
- lastsel = 0;
- if(c == sel) {
- sel = pc;
- focus(lastsel);
+ if(c == lastsel) {
+ lastsel = -1;
+ } else if(lastsel > c) {
+ lastsel--;
}
- if(nclients == 0) {
- if(fillagain)
- spawn(NULL);
+ if(sel > c && c > 0) {
+ sel--;
+ lastsel = -1;
}
+ if(c == nclients && nclients > 0)
+ sel = nclients - 1;
+
+ if(lastsel > -1) {
+ focus(lastsel);
+ } else {
+ focus(sel);
+ }
+
+ if(nclients == 0 && fillagain)
+ spawn(NULL);
drawbar();
XSync(dpy, False);
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.