summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tabbed.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/tabbed.c b/tabbed.c
index 3df24c2..3a6e7f9 100644
--- 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 above if() clause
+ * and was actually (sel + 1) before.
+ */
+ if(lastsel > 0) {
focus(lastsel);
} else {
focus(0);