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() | ||||
|       colnr_T col = scol; | ||||
|       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 | ||||
|       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() | ||||
|         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 -= 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; | ||||
|         row += local ? 0 : wp->w_winrow + wp->w_winrow_off; | ||||
|       } else { | ||||
|   | ||||
| @@ -37,6 +37,8 @@ describe('ext_multigrid', function() | ||||
|       [18] = {bold = true, foreground = Screen.colors.Magenta}, | ||||
|       [19] = {foreground = Screen.colors.Brown}, | ||||
|       [20] = {background = Screen.colors.LightGrey}, | ||||
|       [21] = {background = Screen.colors.LightMagenta}, | ||||
|       [22] = {background = Screen.colors.LightMagenta, bold = true, foreground = Screen.colors.Blue}, | ||||
|     }) | ||||
|   end) | ||||
|  | ||||
| @@ -1060,6 +1062,107 @@ describe('ext_multigrid', function() | ||||
|                                                              | | ||||
|       ]]} | ||||
|     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) | ||||
|  | ||||
|   it('multiline messages scroll over windows', function() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 zeertzjq
					zeertzjq