Introduction
Introduction Statistics Contact Development Disclaimer Help
tFix selection clearing - st - [fork] customized build of st, the simple termin…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit ebbac77d7416d365a2a33f159780ef0f06cc3351
parent 7af030c999ba87cad2f3155bb9f58bf2854ad2bb
Author: Roberto E. Vargas Caballero <[email protected]>
Date: Sun, 23 Jun 2013 12:09:19 +0200
Fix selection clearing
The way st knows if there is a selection activated is checking if sel.ob.x
is equal to -1. In some parts of the code the way of disabling the selection
was only setting it to -1, but after it you can't be sure if the selection
is clearing from the terminal representation, because it is necessary mark
all the lines affected by the selection as dirty. Already there is a functon
which perform this task, selclear.
Diffstat:
M st.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
---
diff --git a/st.c b/st.c
t@@ -888,11 +888,7 @@ bpress(XEvent *e) {
gettimeofday(&now, NULL);
/* Clear previous selection, logically and visually. */
- if(sel.ob.x != -1) {
- sel.ob.x = -1;
- tsetdirt(sel.nb.y, sel.ne.y);
- draw();
- }
+ selclear(NULL);
sel.mode = 1;
sel.type = SEL_REGULAR;
sel.oe.x = sel.ob.x = x2col(e->xbutton.x);
t@@ -1108,7 +1104,7 @@ brelease(XEvent *e) {
selpaste(NULL);
} else if(e->xbutton.button == Button1) {
if(sel.mode < 2) {
- sel.ob.x = -1;
+ selclear(NULL);
} else {
getbuttoninfo(e);
selcopy();
t@@ -1441,7 +1437,7 @@ selscroll(int orig, int n) {
if(BETWEEN(sel.ob.y, orig, term.bot) || BETWEEN(sel.oe.y, orig, term.b…
if((sel.ob.y += n) > term.bot || (sel.oe.y += n) < term.top) {
- sel.ob.x = -1;
+ selclear(NULL);
return;
}
if(sel.type == SEL_RECTANGULAR) {
t@@ -1951,7 +1947,7 @@ csihandle(void) {
tputtab(1);
break;
case 'J': /* ED -- Clear screen */
- sel.ob.x = -1;
+ selclear(NULL);
switch(csiescseq.arg[0]) {
case 0: /* below */
tclearregion(term.c.x, term.c.y, term.col-1, term.c.y);
t@@ -2448,7 +2444,7 @@ tputc(char *c, int len) {
if(control && !(term.c.attr.mode & ATTR_GFX))
return;
if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y))
- sel.ob.x = -1;
+ selclear(NULL);
if(IS_SET(MODE_WRAP) && (term.c.state & CURSOR_WRAPNEXT)) {
term.line[term.c.y][term.c.x].mode |= ATTR_WRAP;
tnewline(1);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.