void (@NotNull final LightweightWindowEvent windowEvent) { final Lookup activeLookup = LookupManager.getInstance(myProject).getActiveLookup(); if (activeLookup != null) { activeLookup.addLookupListener(new LookupListener() { @Override public void currentItemChanged(@NotNull LookupEvent event) { if (windowEvent.asPopup().isVisible()) { //was not canceled yet final LookupElement item = event.getItem(); if (item != null) { PsiElement targetElement = DocumentationManager.getInstance(myProject).getElementFromLookup(activeLookup.getEditor(), activeLookup.getPsiFile()); updatePopup(targetElement); //open next } } else { activeLookup.removeLookupListener(this); } } }); } else { final Component focusedComponent = WindowManagerEx.getInstanceEx().getFocusedComponent(myProject); QuickSearchComponent quickSearch = findQuickSearchComponent(focusedComponent); if (quickSearch != null) { quickSearch.registerHint(windowEvent.asPopup()); } else if (focusedComponent instanceof JComponent) { HintUpdateSupply supply = HintUpdateSupply.getSupply((JComponent)focusedComponent); if (supply != null) supply.registerHint(windowEvent.asPopup()); } } }