shithub: rio

Download patch

ref: 239a257dac366476513d25fded85f358a564e030
parent: e695bee57b0165ca01c8877b6ae39bd589f6cc3e
author: glenda <glenda@p>
date: Tue Jan 1 16:07:41 EST 2019

hidden mostly works now, still need to fix a few minor bugs

--- a/fns.h
+++ b/fns.h
@@ -33,6 +33,7 @@
 void	redraw(int full, int resized);
 void wtitledraw(Window *w);
 void draw_tits(void);
+void delete_tit(Window *w);
 
 
 #define	runemalloc(n)		malloc((n)*sizeof(Rune))
--- a/rio.c
+++ b/rio.c
@@ -1183,6 +1183,7 @@
 		--nhidden;
 		memmove(hidden+j, hidden+j+1, (nhidden-j)*sizeof(Window*));
 		wsendctlmesg(w, Reshaped, w->i->r, i);
+		draw_tits();
 	}
 	wclose(w);
 	return i!=0;
--- a/title.c
+++ b/title.c
@@ -18,6 +18,11 @@
 	int i;
 	Point p, c;
 	for(i = 0; i < nwindow; i++) {
+		if(window[i]->i == nil)
+			break;
+		if(window[i]->titlei == nil)
+			continue;
+		
 		draw(window[i]->titlei, window[i]->titlei->r, col[Colhigh], nil, ZP);
 		p.x = window[i]->titler.min.x + 5;
 		p.y = window[i]->titler.min.y + 12;
@@ -65,4 +70,17 @@
 	w->titler_button = Rect(w->titler.max.x - 46, w->titler.min.y + 13,
 						    w->titler.max.x - 13, w->titler.max.y - 8);
 	draw(w->titlei, w->titler_button, col[Coltext], nil, ZP);
+}
+
+void
+delete_tit(Window *w)
+{
+	Image *i_t = w->titlei;
+	if(i_t == nil)
+		return;
+
+	w->titlei = nil;
+	originwindow(i_t, (Point){0, 0}, view->r.max);
+	replclipr(i_t, 0, ZR);
+	freeimage(i_t);
 }
--- a/wind.c
+++ b/wind.c
@@ -357,6 +357,7 @@
 wresize(Window *w, Image *i)
 {
 	Rectangle r;
+	int j;
 
 	w->i = i;
 	w->mc.image = i;
@@ -379,7 +380,12 @@
 		wfill(w);
 		wsetselect(w, w->q0, w->q1);
 		//wscrdraw(w);
-		wtitledraw(w);	
+		wtitledraw(w);
+		for(j=0; j<nhidden; j++){
+			if(hidden[j] == w){
+				delete_tit(w);
+			}
+		 }
 	}
 	if(w == input)
 		wborder(w, Selborder);
@@ -1330,15 +1336,7 @@
 	originwindow(i, i->r.min, view->r.max);
 	replclipr(i, 0, ZR);
 	freeimage(i);
-
-	Image *i_t = w->titlei;
-	if(i_t == nil)
-		return;
-
-	w->titlei = nil;
-	originwindow(i_t, i->r.min, view->r.max);
-	replclipr(i_t, 0, ZR);
-	freeimage(i_t);
+	delete_tit(w);
 }
 
 static void
--