On Tue, Apr 23, 2013 at 03:38:32PM -0400, random...@fastmail.us wrote: > On Tue, Apr 23, 2013, at 14:34, Roberto E. Vargas Caballero wrote: > > From: "Roberto E. Vargas Caballero" <k...@shike2.com> > > > > The commit b78c5085f72 changed the st behaviour enabling BCE capability, > > that means erase regions using background color. Problem comes when you > > clear a region with a selection, because in this case the real mode of > > the > > Glyph is not the value of term.line[y][x], due in drawregion we had > > enabled > > the ATTR_REVERSE bit. > > I don't understand the issue. How is this desired behavior? It looks > like your change makes it toggle the _real_ ATTR_REVERSE bit on the > selected region, making the selection appear to vanish, and it'll end up > in the wrong colors once the selection is actually removed.
In drawregion you have: 3172 bool ena_sel = sel.bx != -1; 3173 3174 if(sel.alt ^ IS_SET(MODE_ALTSCREEN)) 3175 ena_sel = 0; ... 3190 if(ena_sel && *(new.c) && selected(x, y)) 3191 new.mode ^= ATTR_REVERSE; in selclear: 937 sel.bx = -1; 938 tsetdirt(sel.b.y, sel.e.y); in bpress: 822 if (sel.snap != 0) { 823 tsetdirt(sel.b.y, sel.e.y); 824 draw(); 825 } It means when you select something you modify the attribute of the selected region. If you clean the region (or a part) the selection will kept enabled. You can see the problem in these videos: Xterm: http://www.shike2.com/xterm.ogv St: http://www.shike2.com/st.ogv Written this mail I found some problems with the patch I sent, so I am going to write a second version of it.