Don't scroll selection on the other screen
Fixes garbage selections when switching to/from the alternate screen.
How to reproduce:
-   Be in primary screen.
-   Select something.
-   Run this (switches to alternate screen, positions the cursor at the
    bottom, triggers selscroll(), and then goes back to primary screen):
        tput smcup; tput cup $(tput lines) 0; echo foo; tput rmcup
-   Notice how the (visual) selection now covers a different line.
The reason is that selscroll() calls selnormalize() and that cannot find
the original range anymore. It's all empty lines now, so it snaps to
"select the whole line".
			
			
This commit is contained in:
		
							parent
							
								
									a6bbc0c96b
								
							
						
					
					
						commit
						2fc7e532b2
					
				
					 1 changed files with 1 additions and 1 deletions
				
			
		
							
								
								
									
										2
									
								
								st.c
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								st.c
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1097,7 +1097,7 @@ tscrollup(int orig, int n)
 | 
			
		|||
void
 | 
			
		||||
selscroll(int orig, int n)
 | 
			
		||||
{
 | 
			
		||||
	if (sel.ob.x == -1)
 | 
			
		||||
	if (sel.ob.x == -1 || sel.alt != IS_SET(MODE_ALTSCREEN))
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	if (BETWEEN(sel.nb.y, orig, term.bot) != BETWEEN(sel.ne.y, orig, term.bot)) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue