Commit Diff


commit - 44c83397afcd941f0e7820831aaee36088149530
commit + 5ca0d3d2fa34963d01c415a7ff9cd9a7b9033298
blob - ad6db0dbd2bb54e09b4fcfbb612925cddf694013
blob + 98bb05102b8a9391d9f09f10b35448fd64781fd4
--- st.c
+++ st.c
@@ -463,6 +463,9 @@ bpress(XEvent *e) {
 	if(IS_SET(MODE_MOUSE))
 		mousereport(e);
 	else if(e->xbutton.button == Button1) {
+		if(sel.bx != -1)
+			for(int i=sel.b.y; i<=sel.e.y; i++)
+				term.dirty[i] = 1;
 		sel.mode = 1;
 		sel.ex = sel.bx = X2COL(e->xbutton.x);
 		sel.ey = sel.by = Y2ROW(e->xbutton.y);
@@ -583,6 +586,7 @@ brelease(XEvent *e) {
 	else if(e->xbutton.button == Button1) {
 		sel.mode = 0;
 		getbuttoninfo(e, NULL, &sel.ex, &sel.ey);
+		term.dirty[sel.ey] = 1;
 		if(sel.bx == sel.ex && sel.by == sel.ey) {
 			struct timeval now;
 			sel.bx = -1;
@@ -627,7 +631,9 @@ bmotion(XEvent *e) {
 		if(oldey != sel.ey || oldex != sel.ex) {
 			int starty = MIN(oldey, sel.ey);
 			int endy = MAX(oldey, sel.ey);
-			drawregion(0, (starty > 0 ? starty : 0), term.col, (endy < term.row ? endy+1 : term.row));
+			for(int i=starty; i<=endy; i++)
+				term.dirty[i] = 1;
+			draw();
 		}
 	}
 }