--- When selecting something via doubleclick after entering or leaving the altscreen mode, the selection is not highlighted with st 0.8. But it gets copied to the primary, so the problem is only the highlighting.
To reproduce this, enter less and select something with a doubleclick. Afterwards you cannot see in the terminal what you selected. But once you start scrolling, the selection appears. The reason for this behavior is that selextend is only called when the mouse button is released the second time. But during this call the tsetdirt function isn't called, so the terminal isn't redrawn. What gets selected has at that point already been decided during selstart, but the subsequent tsetdirt doesn't have any effect as the function selected returns early if sel.alt != IS_SET(MODE_ALTSCREEN). Thus, setting sel.alt is moved to selstart, which fixes the bug and didn't show any side effects during my testing. st.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/st.c b/st.c index 46c954b..2612c95 100644 --- a/st.c +++ b/st.c @@ -446,6 +446,7 @@ selstart(int col, int row, int snap) selclear(); sel.mode = SEL_EMPTY; sel.type = SEL_REGULAR; + sel.alt = IS_SET(MODE_ALTSCREEN); sel.snap = snap; sel.oe.x = sel.ob.x = col; sel.oe.y = sel.ob.y = row; @@ -474,7 +475,6 @@ selextend(int col, int row, int type, int done) oldsey = sel.ne.y; oldtype = sel.type; - sel.alt = IS_SET(MODE_ALTSCREEN); sel.oe.x = col; sel.oe.y = row; selnormalize(); -- 2.11.0