// 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); } }
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); } }
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(); }
static void HandleWndVisibleChanged(object sender, EventArgs args) { if (!wnd.Visible) { isShowing = false; ParameterInformationWindowManager.UpdateWindow(wnd.Extension, wnd.CompletionWidget); WindowClosed?.Invoke(null, EventArgs.Empty); } }
static void DestroyWindow() { if (wnd != null) { wnd.Destroy(); ParameterInformationWindowManager.UpdateWindow(wnd.CompletionWidget); wnd = null; } OnWindowClosed(EventArgs.Empty); }
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(); }
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); }
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); } }