aboutsummaryrefslogtreecommitdiff
path: root/st.c
diff options
context:
space:
mode:
authorAurélien Aptel <aurelien.aptel@gmail.com>2011-11-01 16:33:43 +0100
committerAurélien Aptel <aurelien.aptel@gmail.com>2011-11-01 16:33:43 +0100
commita20125a3d1fd9fec2af7886a474691a1839f8537 (patch)
treeccbadfaafebf2665192134300bfb223fef4a3c38 /st.c
parent0dbf9c8c12a5de35d1cef22349ab80e8f0a8f10e (diff)
fix selection. (thx Tarmo Heiskanen)
Diffstat (limited to 'st.c')
-rw-r--r--st.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/st.c b/st.c
index ad6db0d..98bb051 100644
--- a/st.c
+++ b/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();
}
}
}