// ext may be null, but then parameter completion don't work
        public static bool ShowWindow(CompletionTextEditorExtension ext, char firstChar, ICompletionDataList list, ICompletionWidget completionWidget, CodeCompletionContext completionContext)
        {
            try {
                if (ext != null)
                {
                    int inserted = ext.document.Editor.EnsureCaretIsNotVirtual();
                    if (inserted > 0)
                    {
                        completionContext.TriggerOffset = ext.document.Editor.Caret.Offset;
                    }
                }
                if (wnd == null)
                {
                    wnd = new CompletionListWindow();
                    wnd.WordCompleted += HandleWndWordCompleted;
                }
                if (ext != null)
                {
                    wnd.TransientFor = ext.document.Editor.Parent.Toplevel as Gtk.Window;
                }
                else
                {
                    var widget = completionWidget as Gtk.Widget;
                    if (widget != null)
                    {
                        var window = widget.Toplevel as Gtk.Window;
                        if (window != null)
                        {
                            wnd.TransientFor = window;
                        }
                    }
                }
                wnd.Extension = ext;
                try {
                    if (!wnd.ShowListWindow(firstChar, list, completionWidget, completionContext))
                    {
                        if (list is IDisposable)
                        {
                            ((IDisposable)list).Dispose();
                        }
                        HideWindow();
                        return(false);
                    }

                    if (ForceSuggestionMode)
                    {
                        wnd.AutoSelect = false;
                    }
                    wnd.Show();
                    DesktopService.RemoveWindowShadow(wnd);
                    OnWindowShown(EventArgs.Empty);
                    return(true);
                } catch (Exception ex) {
                    LoggingService.LogError(ex.ToString());
                    return(false);
                }
            } finally {
                ParameterInformationWindowManager.UpdateWindow(ext, completionWidget);
            }
        }
Example #2
0
        public static bool ShowWindow(char firstChar, ICompletionDataList list, ICompletionWidget completionWidget, CodeCompletionContext completionContext, System.Action closedDelegate)
        {
            try {
                if (wnd == null)
                {
                    wnd = new CompletionListWindow();
                    wnd.WordCompleted += HandleWndWordCompleted;
                }
                try {
                    if (!wnd.ShowListWindow(firstChar, list, completionWidget, completionContext, closedDelegate))
                    {
                        if (list is IDisposable)
                        {
                            ((IDisposable)list).Dispose();
                        }
                        DestroyWindow();
                        return(false);
                    }

                    if (ForceSuggestionMode)
                    {
                        wnd.AutoSelect = false;
                    }

                    OnWindowShown(EventArgs.Empty);
                    return(true);
                } catch (Exception ex) {
                    LoggingService.LogError(ex.ToString());
                    return(false);
                }
            } finally {
                ParameterInformationWindowManager.UpdateWindow(completionWidget);
            }
        }
Example #3
0
 protected override bool OnPagerRightClicked()
 {
     if (Ext != null && Widget != null)
     {
         return(ParameterInformationWindowManager.OverloadDown(Ext, Widget));
     }
     return(base.OnPagerRightClicked());
 }
 protected override void OnPagerRightClicked()
 {
     if (Ext != null && Widget != null)
     {
         ParameterInformationWindowManager.OverloadDown(Ext, Widget);
     }
     base.OnPagerRightClicked();
 }
Example #5
0
 static void HandleWndVisibleChanged(object sender, EventArgs args)
 {
     if (!wnd.Visible)
     {
         isShowing = false;
         ParameterInformationWindowManager.UpdateWindow(wnd.Extension, wnd.CompletionWidget);
         WindowClosed?.Invoke(null, EventArgs.Empty);
     }
 }
Example #6
0
 static void DestroyWindow()
 {
     if (wnd != null)
     {
         wnd.Destroy();
         ParameterInformationWindowManager.UpdateWindow(wnd.CompletionWidget);
         wnd = null;
     }
     OnWindowClosed(EventArgs.Empty);
 }
Example #7
0
        public static void HideWindow()
        {
            if (!IsVisible)
            {
                return;
            }
            ParameterInformationWindowManager.UpdateWindow(wnd.Extension, wnd.CompletionWidget);
            if (wnd.Extension != null)
            {
                wnd.Extension.document.Editor.FixVirtualIndentation();
            }
//			wnd.HideWindow ();
//			OnWindowClosed (EventArgs.Empty);
            DestroyWindow();
        }
Example #8
0
 public static void HideWindow()
 {
     isShowing = false;
     if (!IsVisible)
     {
         return;
     }
     if (wnd == null)
     {
         return;
     }
     ParameterInformationWindowManager.UpdateWindow(wnd.Extension, wnd.CompletionWidget);
     wnd.HideWindow();
     OnWindowClosed(EventArgs.Empty);
     //DestroyWindow ();
 }
        void Reposition(bool force)
        {
            X = CodeCompletionContext.TriggerXCoord - TextOffset;
            Y = CodeCompletionContext.TriggerYCoord;

            int w, h;

            GetSize(out w, out h);

            if (!force && previousHeight != h && previousWidth != w)
            {
                return;
            }

            // Note: we add back the TextOffset here in case X and X+TextOffset are on different monitors.
            Gdk.Rectangle geometry = DesktopService.GetUsableMonitorGeometry(Screen, Screen.GetMonitorAtPoint(X + TextOffset, Y));

            previousHeight = h;
            previousWidth  = w;

            if (X + w > geometry.Right)
            {
                X = geometry.Right - w;
            }
            else if (X < geometry.Left)
            {
                X = geometry.Left;
            }

            if (Y + h > geometry.Bottom || yPosition == WindowPositonY.Top)
            {
                // Put the completion-list window *above* the cursor
                Y         = Y - CodeCompletionContext.TriggerTextHeight - h;
                yPosition = WindowPositonY.Top;
            }
            else
            {
                yPosition = WindowPositonY.Bottom;
            }

            curXPos = X;
            curYPos = Y;
            Move(X, Y);
            UpdateDeclarationView();
            ParameterInformationWindowManager.UpdateWindow(CompletionWidget);
        }
Example #10
0
        void Reposition(bool force)
        {
            X = CodeCompletionContext.TriggerXCoord - TextOffset;
            Y = CodeCompletionContext.TriggerYCoord;

            int w, h;

            GetSize(out w, out h);

            if (!force && previousHeight != h && previousWidth != w)
            {
                return;
            }

            Gdk.Rectangle geometry = Screen.GetMonitorGeometry(Screen.GetMonitorAtPoint(X, Y));

            previousHeight = h;
            previousWidth  = w;
            if (X + w > geometry.Right)
            {
                X = geometry.Right - w;
            }

            if (Y + h > geometry.Bottom || yPosition == WindowPositonY.Top)
            {
                Y         = Y - CodeCompletionContext.TriggerTextHeight - h;
                yPosition = WindowPositonY.Top;
            }
            else
            {
                yPosition = WindowPositonY.Bottom;
            }

            curXPos = X;
            curYPos = Y;
            Move(X, Y);
            UpdateDeclarationView();
            ParameterInformationWindowManager.UpdateWindow(CompletionWidget);
        }
        internal static bool ShowWindow(ICompletionDataList list, CodeCompletionContext completionContext)
        {
            if (wnd == null || !isShowing)
            {
                return(false);
            }

            var completionWidget = wnd.CompletionWidget;
            var ext = wnd.Extension;

            try {
                try {
                    isShowing = false;
                    if (!wnd.ShowListWindow(list, completionContext))
                    {
                        if (list is IDisposable)
                        {
                            ((IDisposable)list).Dispose();
                        }
                        HideWindow();
                        return(false);
                    }

                    if (IdeApp.Preferences.ForceSuggestionMode)
                    {
                        wnd.AutoSelect = false;
                    }
                    wnd.Show();
                    DesktopService.RemoveWindowShadow(wnd);
                    OnWindowShown(EventArgs.Empty);
                    return(true);
                } catch (Exception ex) {
                    LoggingService.LogError(ex.ToString());
                    return(false);
                }
            } finally {
                ParameterInformationWindowManager.UpdateWindow(ext, completionWidget);
            }
        }