コード例 #1
0
        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();
                };
            }
        }