mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix: correct vertical dragging room calculation with global statusline (#17928)
This fixes the bug that win_move_statusline() or mouse dragging cannot reduce 'cmdheight' to 1 when global statusline is used.
This commit is contained in:
parent
6d648f5594
commit
0d4bd420c1
@ -5857,11 +5857,11 @@ void win_drag_status_line(win_T *dragwin, int offset)
|
|||||||
} else { // drag down
|
} else { // drag down
|
||||||
up = false;
|
up = false;
|
||||||
// Only dragging the last status line can reduce p_ch.
|
// Only dragging the last status line can reduce p_ch.
|
||||||
room = Rows - cmdline_row - global_stl_height();
|
room = Rows - cmdline_row;
|
||||||
if (curfr->fr_next == NULL) {
|
if (curfr->fr_next == NULL) {
|
||||||
room -= 1;
|
room -= 1;
|
||||||
} else {
|
} else {
|
||||||
room -= p_ch;
|
room -= p_ch + global_stl_height();
|
||||||
}
|
}
|
||||||
if (room < 0) {
|
if (room < 0) {
|
||||||
room = 0;
|
room = 0;
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
local helpers = require('test.functional.helpers')(after_each)
|
local helpers = require('test.functional.helpers')(after_each)
|
||||||
local Screen = require('test.functional.ui.screen')
|
local Screen = require('test.functional.ui.screen')
|
||||||
local clear, command, feed = helpers.clear, helpers.command, helpers.feed
|
local clear, command, feed = helpers.clear, helpers.command, helpers.feed
|
||||||
|
local eq, funcs, meths = helpers.eq, helpers.funcs, helpers.meths
|
||||||
|
|
||||||
describe('global statusline', function()
|
describe('global statusline', function()
|
||||||
local screen
|
local screen
|
||||||
@ -230,4 +231,30 @@ describe('global statusline', function()
|
|||||||
[3] = {reverse = true, bold = true};
|
[3] = {reverse = true, bold = true};
|
||||||
}}
|
}}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('win_move_statusline() can reduce cmdheight to 1', function()
|
||||||
|
eq(1, meths.get_option('cmdheight'))
|
||||||
|
funcs.win_move_statusline(0, -1)
|
||||||
|
eq(2, meths.get_option('cmdheight'))
|
||||||
|
funcs.win_move_statusline(0, -1)
|
||||||
|
eq(3, meths.get_option('cmdheight'))
|
||||||
|
funcs.win_move_statusline(0, 1)
|
||||||
|
eq(2, meths.get_option('cmdheight'))
|
||||||
|
funcs.win_move_statusline(0, 1)
|
||||||
|
eq(1, meths.get_option('cmdheight'))
|
||||||
|
end)
|
||||||
|
|
||||||
|
it('mouse dragging can reduce cmdheight to 1', function()
|
||||||
|
command('set mouse=a')
|
||||||
|
meths.input_mouse('left', 'press', '', 0, 14, 10)
|
||||||
|
eq(1, meths.get_option('cmdheight'))
|
||||||
|
meths.input_mouse('left', 'drag', '', 0, 13, 10)
|
||||||
|
eq(2, meths.get_option('cmdheight'))
|
||||||
|
meths.input_mouse('left', 'drag', '', 0, 12, 10)
|
||||||
|
eq(3, meths.get_option('cmdheight'))
|
||||||
|
meths.input_mouse('left', 'drag', '', 0, 13, 10)
|
||||||
|
eq(2, meths.get_option('cmdheight'))
|
||||||
|
meths.input_mouse('left', 'drag', '', 0, 14, 10)
|
||||||
|
eq(1, meths.get_option('cmdheight'))
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user