On Wed, Mar 28, 2018 at 09:27:58PM +0200, Daniel Tameling wrote:
> ---
> 
> 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
> 
> 

Applied thanks, it is much appreciated.

The regression was probably in bcb5d3ad.

-- 
Kind regards,
Hiltjo

Reply via email to