diff options
author | Mike Krüger <mkrueger@novell.com> | 2010-04-21 15:05:34 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@novell.com> | 2010-04-21 15:05:34 +0400 |
commit | 860004152c40422e65d9b59ce89e8eb9138b534f (patch) | |
tree | fc802482d7430f2836bc7d64e6fa3cb10f8c80ef /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion | |
parent | 83acf0fdede1ecb415c9c9b35d5d7f0e1a4790cc (diff) |
* MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs:
* MonoDevelop.Ide.CodeFormatting/CodeFormattingCommands.cs:
* MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs:
* MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs:
Fixed 'Bug 598199 - Parameters tooltip shows over completion list'.
svn path=/trunk/monodevelop/; revision=155861
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion')
3 files changed, 48 insertions, 20 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs index b10feb9b59..275f4b7530 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs @@ -56,6 +56,9 @@ namespace MonoDevelop.Ide.CodeCompletion set; } + public int X { get; private set; } + public int Y { get; private set; } + IMutableCompletionDataList mutableList; ICompletionDataList completionDataList; public ICompletionDataList CompletionDataList { @@ -261,8 +264,8 @@ namespace MonoDevelop.Ide.CodeCompletion void Reposition (bool force) { - int x = CodeCompletionContext.TriggerXCoord - TextOffset; - int y = CodeCompletionContext.TriggerYCoord; + X = CodeCompletionContext.TriggerXCoord - TextOffset; + Y = CodeCompletionContext.TriggerYCoord; int w, h; GetSize (out w, out h); @@ -273,15 +276,15 @@ namespace MonoDevelop.Ide.CodeCompletion previousHeight = h; previousWidth = w; - if (x + w > Screen.Width) - x = Screen.Width - w; + if (X + w > Screen.Width) + X = Screen.Width - w; - if (y + h > Screen.Height) { - y = y - CodeCompletionContext.TriggerTextHeight - h; + if (Y + h > Screen.Height) { + Y = Y - CodeCompletionContext.TriggerTextHeight - h; } - curXPos = x; - curYPos = y; - Move (x, y); + curXPos = X; + curYPos = Y; + Move (X, Y); UpdateDeclarationView (); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs index 8ba9b47298..394c1e643c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs @@ -47,6 +47,18 @@ namespace MonoDevelop.Ide.CodeCompletion get { return wnd; } } + public static int X { + get { + return wnd.X; + } + } + + public static int Y { + get { + return wnd.Y; + } + } + public static CodeCompletionContext CodeCompletionContext { get { return wnd.CodeCompletionContext; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs index 35aea8be42..5caeb33bc5 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs @@ -30,6 +30,7 @@ using System; using System.Collections; using System.Collections.Generic; using Gtk; +using Gdk; namespace MonoDevelop.Ide.CodeCompletion { @@ -170,6 +171,8 @@ namespace MonoDevelop.Ide.CodeCompletion md.CurrentOverload = bestOverload; } } + public static int X { get; private set; } + public static int Y { get; private set; } internal static void UpdateWindow () { @@ -188,27 +191,37 @@ namespace MonoDevelop.Ide.CodeCompletion MethodData md = methods[methods.Count - 1]; int cparam = md.MethodProvider.GetCurrentParameterIndex (md.CompletionContext); Gtk.Requisition reqSize = window.ShowParameterInfo (md.MethodProvider, md.CurrentOverload, cparam - 1); - - int x = md.CompletionContext.TriggerXCoord; - int y; - + X = md.CompletionContext.TriggerXCoord; if (CompletionWindowManager.IsVisible) { // place above - y = CurrentCodeCompletionContext.TriggerYCoord - md.CompletionContext.TriggerTextHeight - reqSize.Height - 10; + Y = CurrentCodeCompletionContext.TriggerYCoord - md.CompletionContext.TriggerTextHeight - reqSize.Height - 10; } else { // place below - y = CurrentCodeCompletionContext.TriggerYCoord; + Y = CurrentCodeCompletionContext.TriggerYCoord; } + if (X + reqSize.Width > window.Screen.Width) + X = window.Screen.Width - reqSize.Width; + if (Y < 0) + Y = CurrentCodeCompletionContext.TriggerYCoord; - if (x + reqSize.Width > window.Screen.Width) - x = window.Screen.Width - reqSize.Width; + if (Y + reqSize.Height > window.Screen.Height) { + Y = Y - CurrentCodeCompletionContext.TriggerTextHeight - reqSize.Height - 4; + } - if (y < 0) - y = CurrentCodeCompletionContext.TriggerYCoord; + if (CompletionWindowManager.IsVisible) { + Rectangle completionWindow = new Rectangle (CompletionWindowManager.X, CompletionWindowManager.Y, + CompletionWindowManager.Wnd.Allocation.Width, CompletionWindowManager.Wnd.Allocation.Height); + if (completionWindow.IntersectsWith (new Rectangle (X, Y, reqSize.Width, reqSize.Height))) { + X = completionWindow.X; + Y = completionWindow.Y - reqSize.Height - 6; + if (Y < 0) + Y = completionWindow.Bottom + 6; + } + } - window.Move (x, y); + window.Move (X, Y); window.Show (); } |