void (@Nullable JFrame newFrame) { if (!isAllowedFrame(newFrame) || !JdkEx.isTabbingModeAvailable()) { return; } IdeFrame[] frames = WindowManager.getInstance().getAllProjectFrames(); if (frames.length < 2) { if (frames.length == 1) { updateTabBar(frames[0], 0); if (newFrame == null) { ProjectFrameHelper helper = (ProjectFrameHelper)frames[0]; if (helper.isInFullScreen()) { handleFullScreenResize(helper.getFrame()); } } else { Foundation.executeOnMainThread(true, false, () -> { addTabObserver(MacUtil.getWindowFromJavaWindow(newFrame)); }); } } return; } ApplicationManager.getApplication().invokeLater(() -> { Integer[] visibleAndHeights = new Integer[frames.length]; boolean callInAppkit = false; int newIndex = -1; for (int i = 0; i < frames.length; i++) { ProjectFrameHelper helper = (ProjectFrameHelper)frames[i]; if (helper.rootPane.isCoroutineScopeCancelled$intellij_platform_ide_impl()) { visibleAndHeights[i] = 0; continue; } if (newFrame == helper.getFrame()) { newIndex = i; } else { callInAppkit = true; } } if (callInAppkit) { // call only for shown window and only in Appkit Foundation.executeOnMainThread(true, false, () -> { for (int i = 0; i < frames.length; i++) { ID window = MacUtil.getWindowFromJavaWindow(((ProjectFrameHelper)frames[i]).getFrame()); addTabObserver(window); if (visibleAndHeights[i] == null) { visibleAndHeights[i] = (int)Foundation.invoke_fpret(window, "getTabBarVisibleAndHeight"); if (visibleAndHeights[i] == -1) { visibleAndHeights[i] = DEFAULT_WIN_TAB_HEIGHT(); } } } ApplicationManager.getApplication().invokeLater(() -> { for (int i = 0; i < frames.length; i++) { updateTabBar(frames[i], visibleAndHeights[i]); } }); }); } else { Foundation.executeOnMainThread(true, false, () -> { for (IdeFrame frame : frames) { addTabObserver(MacUtil.getWindowFromJavaWindow(((ProjectFrameHelper)frame).getFrame())); } }); if (newIndex != -1) { visibleAndHeights[newIndex] = 0; } for (int i = 0; i < frames.length; i++) { updateTabBar(frames[i], visibleAndHeights[i]); } } }); }