mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	fix(screenpos, float): add top and left border adjustment
(cherry picked from commit ffe3003e02)
			
			
This commit is contained in:
		 zeertzjq
					zeertzjq
				
			
				
					committed by
					
						![github-actions[bot]](/assets/img/avatar_default.png) github-actions[bot]
						github-actions[bot]
					
				
			
			
				
	
			
			
			![github-actions[bot]](/assets/img/avatar_default.png) github-actions[bot]
						github-actions[bot]
					
				
			
						parent
						
							5c8e5432c0
						
					
				
				
					commit
					8f68548384
				
			| @@ -1011,7 +1011,7 @@ void textpos2screenpos(win_T *wp, pos_T *pos, int *rowp, int *scolp, int *ccolp, | |||||||
|     col -= wp->w_leftcol; |     col -= wp->w_leftcol; | ||||||
|  |  | ||||||
|     if (col >= 0 && col < wp->w_width) { |     if (col >= 0 && col < wp->w_width) { | ||||||
|       coloff = col - scol + (local ? 0 : wp->w_wincol) + 1; |       coloff = col - scol + (local ? 0 : wp->w_wincol + wp->w_border_adj[3]) + 1; | ||||||
|     } else { |     } else { | ||||||
|       scol = ccol = ecol = 0; |       scol = ccol = ecol = 0; | ||||||
|       // character is left or right of the window |       // character is left or right of the window | ||||||
| @@ -1022,7 +1022,7 @@ void textpos2screenpos(win_T *wp, pos_T *pos, int *rowp, int *scolp, int *ccolp, | |||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   *rowp = (local ? 0 : wp->w_winrow) + row + rowoff; |   *rowp = (local ? 0 : wp->w_winrow + wp->w_border_adj[0]) + row + rowoff; | ||||||
|   *scolp = scol + coloff; |   *scolp = scol + coloff; | ||||||
|   *ccolp = ccol + coloff; |   *ccolp = ccol + coloff; | ||||||
|   *ecolp = ecol + coloff; |   *ecolp = ecol + coloff; | ||||||
|   | |||||||
							
								
								
									
										51
									
								
								test/functional/vimscript/screenpos_spec.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								test/functional/vimscript/screenpos_spec.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | local helpers = require('test.functional.helpers')(after_each) | ||||||
|  | local clear, eq, meths = helpers.clear, helpers.eq, helpers.meths | ||||||
|  | local command, funcs = helpers.command, helpers.funcs | ||||||
|  |  | ||||||
|  | before_each(clear) | ||||||
|  |  | ||||||
|  | describe('screenpos() function', function() | ||||||
|  |   it('works in floating window with border', function() | ||||||
|  |     local bufnr = meths.create_buf(false, true) | ||||||
|  |     local opts = { | ||||||
|  |       relative='editor', | ||||||
|  |       height=8, | ||||||
|  |       width=12, | ||||||
|  |       row=6, | ||||||
|  |       col=8, | ||||||
|  |       anchor='NW', | ||||||
|  |       style='minimal', | ||||||
|  |       border='none', | ||||||
|  |       focusable=1 | ||||||
|  |     } | ||||||
|  |     local float = meths.open_win(bufnr, false, opts) | ||||||
|  |     command('redraw') | ||||||
|  |     local pos = funcs.screenpos(bufnr, 1, 1) | ||||||
|  |     eq(7, pos.row) | ||||||
|  |     eq(9, pos.col) | ||||||
|  |  | ||||||
|  |     -- only left border | ||||||
|  |     opts.border = {'', '', '', '', '', '', '', '|'} | ||||||
|  |     meths.win_set_config(float, opts) | ||||||
|  |     command('redraw') | ||||||
|  |     pos = funcs.screenpos(bufnr, 1, 1) | ||||||
|  |     eq(7, pos.row) | ||||||
|  |     eq(10, pos.col) | ||||||
|  |  | ||||||
|  |     -- only top border | ||||||
|  |     opts.border = {'', '_', '', '', '', '', '', ''} | ||||||
|  |     meths.win_set_config(float, opts) | ||||||
|  |     command('redraw') | ||||||
|  |     pos = funcs.screenpos(bufnr, 1, 1) | ||||||
|  |     eq(8, pos.row) | ||||||
|  |     eq(9, pos.col) | ||||||
|  |  | ||||||
|  |     -- both left and top border | ||||||
|  |     opts.border = 'single' | ||||||
|  |     meths.win_set_config(float, opts) | ||||||
|  |     command('redraw') | ||||||
|  |     pos = funcs.screenpos(bufnr, 1, 1) | ||||||
|  |     eq(8, pos.row) | ||||||
|  |     eq(10, pos.col) | ||||||
|  |   end) | ||||||
|  | end) | ||||||
		Reference in New Issue
	
	Block a user