mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-14 18:05:27 +07:00
[inline-completion] ML-1559 Fix multiple inline tooltips
GitOrigin-RevId: 65de701d336719751abe2520db8b13e766f54f19
This commit is contained in:
committed by
intellij-monorepo-bot
parent
522863b447
commit
b1b266d0de
@@ -12,6 +12,7 @@ import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.command.CommandProcessor
|
||||
import com.intellij.openapi.keymap.KeymapUtil
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.ui.LightweightHint
|
||||
import com.intellij.ui.dsl.builder.RightGap
|
||||
import com.intellij.ui.dsl.builder.panel
|
||||
@@ -20,9 +21,13 @@ import com.intellij.util.concurrency.annotations.RequiresEdt
|
||||
import com.intellij.util.ui.JBUI
|
||||
|
||||
internal object InlineCompletionTooltip {
|
||||
private val tooltipKey = Key<Unit>("EDITOR_HAS_INLINE_TOOLTIP")
|
||||
@RequiresEdt
|
||||
fun enterHover(session: InlineCompletionSession) {
|
||||
val editor = session.context.editor
|
||||
if (tooltipKey.isIn(editor)) {
|
||||
return
|
||||
}
|
||||
val activeLookup = LookupManager.getActiveLookup(editor)
|
||||
|
||||
if (activeLookup?.isPositionedAboveCaret == true) {
|
||||
@@ -54,8 +59,12 @@ internal object InlineCompletionTooltip {
|
||||
setForceShowAsPopup(true)
|
||||
}
|
||||
|
||||
val pos = editor.offsetToLogicalPosition(editor.caretModel.offset)
|
||||
val location = HintManagerImpl.getHintPosition(hint, editor, pos, HintManager.ABOVE)
|
||||
val location = HintManagerImpl.getHintPosition(
|
||||
hint,
|
||||
editor,
|
||||
editor.offsetToLogicalPosition(editor.caretModel.offset),
|
||||
HintManager.ABOVE
|
||||
)
|
||||
location.y -= panel.preferredHeight
|
||||
|
||||
HintManagerImpl.getInstanceImpl().showEditorHint(
|
||||
@@ -67,6 +76,11 @@ internal object InlineCompletionTooltip {
|
||||
false,
|
||||
HintManagerImpl.createHintHint(editor, location, hint, HintManager.ABOVE).setContentActive(false)
|
||||
)
|
||||
editor.putUserData(tooltipKey, Unit)
|
||||
hint.addHintListener {
|
||||
// on hint hide
|
||||
editor.putUserData(tooltipKey, null)
|
||||
}
|
||||
Disposer.register(session) {
|
||||
hint.hide()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user