shithub: lola

Download patch

ref: 3268aa3c1ab1278090c95c9895854f2882cad33d
parent: 90dacd69f4625f09040cbdfdc619624e4b41ad3e
author: penny <penny@limitedideas.org>
date: Sat Jan 24 17:15:00 EST 2026

Add hidden window menu on button 2 in menuless mode

--- a/main.c
+++ b/main.c
@@ -541,6 +541,64 @@
 	wsendmsg(w, Wakeup);
 }
 
+void 
+btn2nomenu(void)
+{
+	enum {
+		Delete,
+		Hide,
+		Hidden
+	};
+	static char *str[Hidden+1 + MAXWINDOWS] = {
+		"Delete",
+		"Hide",
+		nil
+	};
+
+	Window *w, *t;
+	static Menu menu = { str };
+
+	static Window *hidden[MAXWINDOWS];
+	int nhidden;
+	int i, sel;
+
+	nhidden = 0;
+	for(i = 0; i < nwindows; i++){
+		t = windows[i];
+		if(!rectXrect(screen->r, t->frame->r))
+			continue;
+		if(t->hidden || obscured(t, t->frame->r, t->higher)){
+			hidden[nhidden] = windows[i];
+			str[nhidden+Hidden] = windows[i]->cur->label;
+			nhidden++;	
+		}
+	}
+	str[nhidden+Hidden] = nil;
+
+	sel = menuhit(2, mctl, &menu, wscreen);
+	switch(sel){
+	case Delete:
+		w = pick();
+		if(w) wdelete(w);
+		break;
+	case Hide:
+		w = pick();
+		if(w) whide(w);
+		break;
+	default:
+		if(sel >= Hidden){
+			w = hidden[sel-Hidden];
+			if(w->hidden)
+				wunhide(w);
+			else{
+				wraise(w);
+				wfocus(w);
+			}
+		}
+		break;
+	}
+}
+
 void
 btn3menu(void)
 {
@@ -784,6 +842,8 @@
 						btn13menu();
 					readmouse(mctl);
 				}
+				if(mctl->buttons & 2 && nomenu)
+					btn2nomenu();
 				if(mctl->buttons & 4)
 					btn3menu();
 			}else if(!ptinrect(mctl->xy, w->contrect)){
--