diff options
author | Yatao Li <yatli@microsoft.com> | 2020-03-22 17:27:49 +0800 |
---|---|---|
committer | Yatao Li <yatli@microsoft.com> | 2020-04-28 01:52:01 +0800 |
commit | d372c804aa33a272f6659f6d08d5dfee704d30d9 (patch) | |
tree | 459d0465e0b1d48736770c58ca2630d719c50bf0 | |
parent | ed6230434b2b0a07ece03272b871412929bfcb53 (diff) | |
download | rneovim-d372c804aa33a272f6659f6d08d5dfee704d30d9.tar.gz rneovim-d372c804aa33a272f6659f6d08d5dfee704d30d9.tar.bz2 rneovim-d372c804aa33a272f6659f6d08d5dfee704d30d9.zip |
api/ui: allow set bounds row and col to be less than 0; ui_pum_get_pos: return first extui bounds information instead of reducing
-rw-r--r-- | src/nvim/api/ui.c | 12 | ||||
-rw-r--r-- | src/nvim/ui.c | 20 | ||||
-rw-r--r-- | test/functional/ui/popupmenu_spec.lua | 12 |
3 files changed, 15 insertions, 29 deletions
diff --git a/src/nvim/api/ui.c b/src/nvim/api/ui.c index b10434428c..300f409a0f 100644 --- a/src/nvim/api/ui.c +++ b/src/nvim/api/ui.c @@ -382,17 +382,11 @@ void nvim_ui_pum_set_bounds(uint64_t channel_id, Float width, Float height, return; } - if (row < 0) { - api_set_error(err, kErrorTypeValidation, "Expected pumpos row >= 0"); - return; - } else if (col < 0) { - api_set_error(err, kErrorTypeValidation, "Expected pumpos col >= 0"); - return; - } else if (width <= 0) { - api_set_error(err, kErrorTypeValidation, "Expected pumpos width > 0"); + if (width <= 0) { + api_set_error(err, kErrorTypeValidation, "Expected width > 0"); return; } else if (height <= 0) { - api_set_error(err, kErrorTypeValidation, "Expected pumpos height > 0"); + api_set_error(err, kErrorTypeValidation, "Expected height > 0"); return; } diff --git a/src/nvim/ui.c b/src/nvim/ui.c index cc9bf42bc8..0a8474ff82 100644 --- a/src/nvim/ui.c +++ b/src/nvim/ui.c @@ -237,24 +237,18 @@ int ui_pum_get_height(void) void ui_pum_get_pos(double *pwidth, double *pheight, double *prow, double *pcol) { - double w = 0.0, h = 0.0, r = -1.0, c = -1.0; + double w = 0.0, h = 0.0, r = 0.0, c = 0.0; bool found = false; for (size_t i = 1; i < ui_count; i++) { if (!uis[i]->pum_pos) { continue; } - if (!found) { - w = uis[i]->pum_width; - h = uis[i]->pum_height; - r = uis[i]->pum_row; - c = uis[i]->pum_col; - found = true; - } else { - w = MIN(uis[i]->pum_width, w); - h = MIN(uis[i]->pum_height, h); - r = MIN(uis[i]->pum_row, r); - c = MIN(uis[i]->pum_col, c); - } + w = uis[i]->pum_width; + h = uis[i]->pum_height; + r = uis[i]->pum_row; + c = uis[i]->pum_col; + found = true; + break; } if (found) { *pwidth = w; diff --git a/test/functional/ui/popupmenu_spec.lua b/test/functional/ui/popupmenu_spec.lua index 9b6ca8032a..3108d21508 100644 --- a/test/functional/ui/popupmenu_spec.lua +++ b/test/functional/ui/popupmenu_spec.lua @@ -481,16 +481,14 @@ describe('ui/ext_popupmenu', function() }} end) - it('an error occurs if row or col set less than 0', function() + it('no error occurs if row or col set less than 0', function() local ok, err, _ ok, _ = pcall(meths.ui_pum_set_bounds, 1.0, 1.0, 0.0, 1.5) eq(true, ok) - ok, err = pcall(meths.ui_pum_set_bounds, 1.0, 1.0, -1.0, 0.0) - eq(false, ok) - matches('.*: Expected pumpos row >= 0', err) - ok, err = pcall(meths.ui_pum_set_bounds, 1.0, 1.0, 0.0, -1.0) - eq(false, ok) - matches('.*: Expected pumpos col >= 0', err) + ok, _ = pcall(meths.ui_pum_set_bounds, 1.0, 1.0, -1.0, 0.0) + eq(true, ok) + ok, _ = pcall(meths.ui_pum_set_bounds, 1.0, 1.0, 0.0, -1.0) + eq(true, ok) end) it('an error occurs if width or height set 0 or less', function() |