Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@novell.com>2010-04-21 15:05:34 +0400
committerMike Krüger <mkrueger@novell.com>2010-04-21 15:05:34 +0400
commit860004152c40422e65d9b59ce89e8eb9138b534f (patch)
treefc802482d7430f2836bc7d64e6fa3cb10f8c80ef /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion
parent83acf0fdede1ecb415c9c9b35d5d7f0e1a4790cc (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')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionListWindow.cs21
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/CompletionWindowManager.cs12
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs35
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 ();
}