mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	fix(float): make bufpos work properly with resized parent grid
This commit is contained in:
		| @@ -966,18 +966,18 @@ void textpos2screenpos(win_T *wp, pos_T *pos, int *rowp, int *scolp, int *ccolp, | |||||||
|       // similar to what is done in validate_cursor_col() |       // similar to what is done in validate_cursor_col() | ||||||
|       colnr_T col = scol; |       colnr_T col = scol; | ||||||
|       col += off; |       col += off; | ||||||
|       int width = wp->w_width - off + win_col_off2(wp); |       int width = wp->w_width_inner - off + win_col_off2(wp); | ||||||
|  |  | ||||||
|       // long line wrapping, adjust row |       // long line wrapping, adjust row | ||||||
|       if (wp->w_p_wrap && col >= (colnr_T)wp->w_width && width > 0) { |       if (wp->w_p_wrap && col >= (colnr_T)wp->w_width_inner && width > 0) { | ||||||
|         // use same formula as what is used in curs_columns() |         // use same formula as what is used in curs_columns() | ||||||
|         rowoff = visible_row ? ((col - wp->w_width) / width + 1) : 0; |         rowoff = visible_row ? ((col - wp->w_width_inner) / width + 1) : 0; | ||||||
|         col -= rowoff * width; |         col -= rowoff * width; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       col -= wp->w_leftcol; |       col -= wp->w_leftcol; | ||||||
|  |  | ||||||
|       if (col >= 0 && col < wp->w_width && row + rowoff <= wp->w_height) { |       if (col >= 0 && col < wp->w_width_inner && row + rowoff <= wp->w_height_inner) { | ||||||
|         coloff = col - scol + (local ? 0 : wp->w_wincol + wp->w_wincol_off) + 1; |         coloff = col - scol + (local ? 0 : wp->w_wincol + wp->w_wincol_off) + 1; | ||||||
|         row += local ? 0 : wp->w_winrow + wp->w_winrow_off; |         row += local ? 0 : wp->w_winrow + wp->w_winrow_off; | ||||||
|       } else { |       } else { | ||||||
|   | |||||||
| @@ -37,6 +37,8 @@ describe('ext_multigrid', function() | |||||||
|       [18] = {bold = true, foreground = Screen.colors.Magenta}, |       [18] = {bold = true, foreground = Screen.colors.Magenta}, | ||||||
|       [19] = {foreground = Screen.colors.Brown}, |       [19] = {foreground = Screen.colors.Brown}, | ||||||
|       [20] = {background = Screen.colors.LightGrey}, |       [20] = {background = Screen.colors.LightGrey}, | ||||||
|  |       [21] = {background = Screen.colors.LightMagenta}, | ||||||
|  |       [22] = {background = Screen.colors.LightMagenta, bold = true, foreground = Screen.colors.Blue}, | ||||||
|     }) |     }) | ||||||
|   end) |   end) | ||||||
|  |  | ||||||
| @@ -1060,6 +1062,107 @@ describe('ext_multigrid', function() | |||||||
|                                                              | |                                                              | | ||||||
|       ]]} |       ]]} | ||||||
|     end) |     end) | ||||||
|  |  | ||||||
|  |     it('anchored float window "bufpos"', function() | ||||||
|  |       insert(('c'):rep(1111)) | ||||||
|  |       screen:expect{grid=[[ | ||||||
|  |       ## grid 1 | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         {11:[No Name] [+]                                        }| | ||||||
|  |         [3:-----------------------------------------------------]| | ||||||
|  |       ## grid 2 | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccc^c                             | | ||||||
|  |         {1:~                                                           }| | ||||||
|  |       ## grid 3 | ||||||
|  |                                                              | | ||||||
|  |       ]]} | ||||||
|  |       local float_buf = meths.create_buf(false, false) | ||||||
|  |       meths.open_win(float_buf, false, { | ||||||
|  |         relative = 'win', | ||||||
|  |         win = curwin(), | ||||||
|  |         bufpos = {0, 1018}, | ||||||
|  |         anchor = 'SE', | ||||||
|  |         width = 5, | ||||||
|  |         height = 5, | ||||||
|  |       }) | ||||||
|  |       screen:expect{grid=[[ | ||||||
|  |       ## grid 1 | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         [2:-----------------------------------------------------]| | ||||||
|  |         {11:[No Name] [+]                                        }| | ||||||
|  |         [3:-----------------------------------------------------]| | ||||||
|  |       ## grid 2 | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc| | ||||||
|  |         cccccccccccccccccccccccccccccc^c                             | | ||||||
|  |         {1:~                                                           }| | ||||||
|  |       ## grid 3 | ||||||
|  |                                                              | | ||||||
|  |       ## grid 4 | ||||||
|  |         {21:     }| | ||||||
|  |         {22:~    }| | ||||||
|  |         {22:~    }| | ||||||
|  |         {22:~    }| | ||||||
|  |         {22:~    }| | ||||||
|  |       ]], float_pos={ | ||||||
|  |         [4] = {{id = 1001}, "SE", 2, 16, 58, true, 50}; | ||||||
|  |       }} | ||||||
|  |     end) | ||||||
|   end) |   end) | ||||||
|  |  | ||||||
|   it('multiline messages scroll over windows', function() |   it('multiline messages scroll over windows', function() | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 zeertzjq
					zeertzjq