mirror of
https://github.com/neovim/neovim.git
synced 2025-09-28 05:58:33 +00:00
FOR_ALL_WINDOWS_IN_TAB and local variables in FOR_ALL_TAB_WINDOWS
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include "nvim/api/private/defs.h"
|
||||
#include "nvim/api/private/helpers.h"
|
||||
#include "nvim/memory.h"
|
||||
#include "nvim/window.h"
|
||||
|
||||
/// Gets the number of windows in a tabpage
|
||||
///
|
||||
@@ -18,27 +19,18 @@ ArrayOf(Window) tabpage_get_windows(Tabpage tabpage, Error *err)
|
||||
Array rv = ARRAY_DICT_INIT;
|
||||
tabpage_T *tab = find_tab_by_handle(tabpage, err);
|
||||
|
||||
if (!tab) {
|
||||
if (!tab || !valid_tabpage(tab)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
tabpage_T *tp;
|
||||
win_T *wp;
|
||||
|
||||
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
||||
if (tp != tab) {
|
||||
break;
|
||||
}
|
||||
FOR_ALL_WINDOWS_IN_TAB(wp, tab) {
|
||||
rv.size++;
|
||||
}
|
||||
|
||||
rv.items = xmalloc(sizeof(Object) * rv.size);
|
||||
size_t i = 0;
|
||||
|
||||
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
||||
if (tp != tab) {
|
||||
break;
|
||||
}
|
||||
FOR_ALL_WINDOWS_IN_TAB(wp, tab) {
|
||||
rv.items[i++] = WINDOW_OBJ(wp->handle);
|
||||
}
|
||||
|
||||
@@ -90,18 +82,15 @@ Window tabpage_get_window(Tabpage tabpage, Error *err)
|
||||
Window rv = 0;
|
||||
tabpage_T *tab = find_tab_by_handle(tabpage, err);
|
||||
|
||||
if (!tab) {
|
||||
if (!tab || !valid_tabpage(tab)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (tab == curtab) {
|
||||
return vim_get_current_window();
|
||||
} else {
|
||||
tabpage_T *tp;
|
||||
win_T *wp;
|
||||
|
||||
FOR_ALL_TAB_WINDOWS(tp, wp) {
|
||||
if (tp == tab && wp == tab->tp_curwin) {
|
||||
FOR_ALL_WINDOWS_IN_TAB(wp, tab) {
|
||||
if (wp == tab->tp_curwin) {
|
||||
return wp->handle;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user