public override void ShowTooltipWindow(Ide.Editor.TextEditor editor, Components.Window tipWindow, TooltipItem item, Xwt.ModifierKeys modifierState, int mouseX, int mouseY) { base.ShowTooltipWindow(editor, tipWindow, item, modifierState, mouseX, mouseY); var info = (TaggedTooltipInformation <CodeActions.CodeActionContainer>)item.Item; var sourceEditorView = editor.GetContent <SourceEditorView> (); var codeActionEditorExtension = editor.GetContent <CodeActionEditorExtension> (); var loc = editor.OffsetToLocation(info.Tag.Span.Start); if (info.Tag?.FloatingWidgetShown == true) { var point = sourceEditorView.TextEditor.TextArea.LocationToPoint(loc.Line, loc.Column); point.Y += (int)editor.GetLineHeight(loc.Line); var window = (LanguageItemWindow)tipWindow; if (floatingWidget != null) { floatingWidget.Destroy(); floatingWidget = null; } floatingWidget = new FloatingQuickFixIconWidget(codeActionEditorExtension, window, sourceEditorView, info.Tag, point); sourceEditorView.TextEditor.GdkWindow.GetOrigin(out int ox, out int oy); floatingWidget.Move(ox + (int)point.X, oy + (int)(point.Y + 4)); window.Tag = floatingWidget; window.EnterNotifyEvent += delegate { floatingWidget.CancelDestroy(); }; window.LeaveNotifyEvent += delegate { floatingWidget.QueueDestroy(); }; } }