X-Git-Url: https://git.xinqibao.xyz/st.git/blobdiff_plain/55adf0aad1d5acf0b9a00e2a9f834cef8b61b3b3..f876810626773828747f48675a6d1f33dc163662:/st.c?ds=sidebyside

diff --git a/st.c b/st.c
index 0923cec..599685c 100644
--- a/st.c
+++ b/st.c
@@ -649,23 +649,18 @@ selected(int x, int y) {
 	if(sel.ey == y && sel.by == y) {
 		bx = MIN(sel.bx, sel.ex);
 		ex = MAX(sel.bx, sel.ex);
+
 		return BETWEEN(x, bx, ex);
 	}
 
-	return ((sel.b.y < y && y < sel.e.y)
-			|| (y == sel.e.y && x <= sel.e.x))
-			|| (y == sel.b.y && x >= sel.b.x
-				&& (x <= sel.e.x || sel.b.y != sel.e.y));
-	switch(sel.type) {
-	case SEL_REGULAR:
-		return ((sel.b.y < y && y < sel.e.y)
-			|| (y == sel.e.y && x <= sel.e.x))
-			|| (y == sel.b.y && x >= sel.b.x
-				&& (x <= sel.e.x || sel.b.y != sel.e.y));
-	case SEL_RECTANGULAR:
+	if(sel.type == SEL_RECTANGULAR) {
 		return ((sel.b.y <= y && y <= sel.e.y)
 			&& (sel.b.x <= x && x <= sel.e.x));
-	};
+	}
+	return ((sel.b.y < y && y < sel.e.y)
+		|| (y == sel.e.y && x <= sel.e.x))
+		|| (y == sel.b.y && x >= sel.b.x
+			&& (x <= sel.e.x || sel.b.y != sel.e.y));
 }
 
 void
@@ -1257,8 +1252,12 @@ selscroll(int orig, int n) {
 			sel.bx = -1;
 			return;
 		}
-		switch(sel.type) {
-		case SEL_REGULAR:
+		if(sel.type == SEL_RECTANGULAR) {
+			if(sel.by < term.top)
+				sel.by = term.top;
+			if(sel.ey > term.bot)
+				sel.ey = term.bot;
+		} else {
 			if(sel.by < term.top) {
 				sel.by = term.top;
 				sel.bx = 0;
@@ -1267,14 +1266,7 @@ selscroll(int orig, int n) {
 				sel.ey = term.bot;
 				sel.ex = term.col;
 			}
-			break;
-		case SEL_RECTANGULAR:
-			if(sel.by < term.top)
-				sel.by = term.top;
-			if(sel.ey > term.bot)
-				sel.ey = term.bot;
-			break;
-		};
+		}
 		sel.b.y = sel.by, sel.b.x = sel.bx;
 		sel.e.y = sel.ey, sel.e.x = sel.ex;
 	}