mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-03 17:24:29 +00:00 
			
		
		
		
	fix(ui-ext): "scroll_delta" handle topfill and skipcol (#24249)
This commit is contained in:
		@@ -3341,6 +3341,294 @@ describe('ext_multigrid', function()
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 3, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0},
 | 
			
		||||
      [4] = {win = {id = 1001}, topline = 6, botline = 10, curline = 6, curcol = 0, linecount = 11, sum_scroll_delta = 5},
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    command('close | 21vsplit | setlocal number smoothscroll')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {19:  1 }Lorem ipsu^m dolor|
 | 
			
		||||
      {19:    } sit amet, consec|
 | 
			
		||||
      {19:    }tetur            |
 | 
			
		||||
      {19:  2 }adipisicing elit,|
 | 
			
		||||
      {19:    } sed do eiusmod t|
 | 
			
		||||
      {19:    }empor            |
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    feed('5<C-E>')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {1:<<<}{19: }empo^r            |
 | 
			
		||||
      {19:  3 }incididunt ut lab|
 | 
			
		||||
      {19:    }ore et dolore mag|
 | 
			
		||||
      {19:    }na aliqua.       |
 | 
			
		||||
      {19:  4 }Ut enim ad minim |
 | 
			
		||||
      {19:    }veniam, quis n{1:@@@}|
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 1, botline = 4, curline = 1, curcol = 38, linecount = 11, sum_scroll_delta = 5};
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    feed('<C-Y>')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {1:<<<}{19: } sed do eiusmod t|
 | 
			
		||||
      {19:    }empo^r            |
 | 
			
		||||
      {19:  3 }incididunt ut lab|
 | 
			
		||||
      {19:    }ore et dolore mag|
 | 
			
		||||
      {19:    }na aliqua.       |
 | 
			
		||||
      {19:  4 }Ut enim ad min{1:@@@}|
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 1, botline = 4, curline = 1, curcol = 38, linecount = 11, sum_scroll_delta = 4};
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    command('set cpoptions+=n')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {1:<<<}d do eiusmod tempo|
 | 
			
		||||
      ^r                    |
 | 
			
		||||
      {19:  3 }incididunt ut lab|
 | 
			
		||||
      ore et dolore magna a|
 | 
			
		||||
      liqua.               |
 | 
			
		||||
      {19:  4 }Ut enim ad min{1:@@@}|
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 1, botline = 4, curline = 1, curcol = 38, linecount = 11, sum_scroll_delta = 4};
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    feed('4<C-E>')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {1:<<<}ua^.               |
 | 
			
		||||
      {19:  4 }Ut enim ad minim |
 | 
			
		||||
      veniam, quis nostrud |
 | 
			
		||||
      {19:  5 }exercitation ulla|
 | 
			
		||||
      mco laboris nisi ut a|
 | 
			
		||||
      liquip ex            |
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 2, botline = 6, curline = 2, curcol = 43, linecount = 11, sum_scroll_delta = 8};
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    feed('2<C-Y>')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {19:  3 }incididunt ut lab|
 | 
			
		||||
      ore et dolore magna a|
 | 
			
		||||
      liqua^.               |
 | 
			
		||||
      {19:  4 }Ut enim ad minim |
 | 
			
		||||
      veniam, quis nostrud |
 | 
			
		||||
      {19:  5 }exercitation u{1:@@@}|
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 2, botline = 5, curline = 2, curcol = 43, linecount = 11, sum_scroll_delta = 6};
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    command('setlocal numberwidth=12')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {19:          3 }incididun|
 | 
			
		||||
      t ut labore et dolore|
 | 
			
		||||
       magna aliqua^.       |
 | 
			
		||||
      {19:          4 }Ut enim a|
 | 
			
		||||
      d minim veniam, quis |
 | 
			
		||||
      nostrud              |
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 2, botline = 5, curline = 2, curcol = 43, linecount = 11, sum_scroll_delta = 6};
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    feed('2<C-E>')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {1:<<<}gna aliqua^.       |
 | 
			
		||||
      {19:          4 }Ut enim a|
 | 
			
		||||
      d minim veniam, quis |
 | 
			
		||||
      nostrud              |
 | 
			
		||||
      {19:          5 }exercitat|
 | 
			
		||||
      ion ullamco labori{1:@@@}|
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 2, botline = 5, curline = 2, curcol = 43, linecount = 11, sum_scroll_delta = 8};
 | 
			
		||||
    }}
 | 
			
		||||
 | 
			
		||||
    feed('<C-E>')
 | 
			
		||||
    screen:expect{grid=[[
 | 
			
		||||
    ## grid 1
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      [5:---------------------]│[2:--------------------------]|
 | 
			
		||||
      {11:[No Name] [+]         }{12:[No Name] [+]             }|
 | 
			
		||||
      [3:------------------------------------------------]|
 | 
			
		||||
    ## grid 2
 | 
			
		||||
      Lorem ipsum dolor sit amet|
 | 
			
		||||
      , consectetur             |
 | 
			
		||||
      adipisicing elit, sed do e|
 | 
			
		||||
      iusmod tempor             |
 | 
			
		||||
      incididunt ut labore et do|
 | 
			
		||||
      lore magna aliqua.        |
 | 
			
		||||
    ## grid 3
 | 
			
		||||
                                                      |
 | 
			
		||||
    ## grid 5
 | 
			
		||||
      {19:          4 }Ut enim a|
 | 
			
		||||
      d minim veniam, quis |
 | 
			
		||||
      nostru^d              |
 | 
			
		||||
      {19:          5 }exercitat|
 | 
			
		||||
      ion ullamco laboris n|
 | 
			
		||||
      isi ut aliquip ex    |
 | 
			
		||||
    ]], win_viewport={
 | 
			
		||||
      [2] = {win = {id = 1000}, topline = 0, botline = 4, curline = 0, curcol = 10, linecount = 11, sum_scroll_delta = 0};
 | 
			
		||||
      [5] = {win = {id = 1002}, topline = 3, botline = 6, curline = 3, curcol = 36, linecount = 11, sum_scroll_delta = 9};
 | 
			
		||||
    }}
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  it('does not crash when dragging mouse across grid boundary', function()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user