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:
-rwxr-xr-xextras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dllbin4522496 -> 4601856 bytes
-rw-r--r--extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll.mdbbin1452486 -> 1491838 bytes
-rw-r--r--extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMacBuildExtension.cs3
-rw-r--r--main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs8
-rw-r--r--main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs8
-rw-r--r--main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StepEventRequest.cs21
-rw-r--r--main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs48
-rw-r--r--main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerBacktrace.cs49
-rw-r--r--main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs89
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs4
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs21
-rw-r--r--main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs104
-rw-r--r--main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic31
-rw-r--r--main/src/addins/MonoDevelop.MacDev/AppleSdkSettings.cs77
-rw-r--r--main/src/addins/MonoDevelop.MacDev/AppleSdkSettingsPanel.cs4
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Makefile.am2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/FilteredStatus.cs80
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs33
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs12
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/RepositoryStatus.cs348
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs15
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs2
-rw-r--r--main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic4
-rw-r--r--main/src/core/Mono.Debugging/Mono.Debugging.Client/DebuggerSessionOptions.cs1
-rw-r--r--main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkAlertDialog.cs11
-rw-r--r--main/src/tools/MacCrashLogger/Makefile.am6
28 files changed, 444 insertions, 541 deletions
diff --git a/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll b/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll
index 4be0ac4e78..d845e06167 100755
--- a/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll
+++ b/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll
Binary files differ
diff --git a/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll.mdb b/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll.mdb
index 8a67860d96..b1fad54ad6 100644
--- a/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll.mdb
+++ b/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMac.dll.mdb
Binary files differ
diff --git a/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMacBuildExtension.cs b/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMacBuildExtension.cs
index 963d744e6a..65fde0d050 100644
--- a/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMacBuildExtension.cs
+++ b/extras/MonoDevelop.MonoMac/MonoDevelop.MonoMac/MonoMacBuildExtension.cs
@@ -263,7 +263,8 @@ namespace MonoDevelop.MonoMac
args.AddQuoted (file.Input);
args.Add ("--compile");
args.AddQuoted (file.Output);
- var psi = new ProcessStartInfo ("ibtool", args.ToString ());
+ var ibtoolPath = AppleSdkSettings.DeveloperRoot.Combine ("usr", "bin", "ibtool");
+ var psi = new ProcessStartInfo (ibtoolPath, args.ToString ());
monitor.Log.WriteLine (psi.FileName + " " + psi.Arguments);
int code;
try {
diff --git a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
index 57150de807..c194ebb071 100644
--- a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
+++ b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
@@ -242,6 +242,10 @@ namespace Mono.Debugger.Soft
public int Size {
get; set;
}
+
+ public int Filter {
+ get; set;
+ }
}
class ThreadModifier : Modifier {
@@ -370,7 +374,7 @@ namespace Mono.Debugger.Soft
* with newer runtimes, and vice versa.
*/
internal const int MAJOR_VERSION = 2;
- internal const int MINOR_VERSION = 15;
+ internal const int MINOR_VERSION = 16;
enum WPSuspendPolicy {
NONE = 0,
@@ -2039,6 +2043,8 @@ namespace Mono.Debugger.Soft
w.WriteId ((mod as StepModifier).Thread);
w.WriteInt ((mod as StepModifier).Size);
w.WriteInt ((mod as StepModifier).Depth);
+ if (Version.AtLeast (2, 16))
+ w.WriteInt ((mod as StepModifier).Filter);
} else if (mod is ThreadModifier) {
w.WriteByte ((byte)ModifierKind.THREAD_ONLY);
w.WriteId ((mod as ThreadModifier).Thread);
diff --git a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
index 614b236638..3e69d95c6d 100644
--- a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
+++ b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
@@ -168,13 +168,11 @@ namespace Mono.Debugger.Soft
}
}
+ // Since protocol version 2.12
public bool IsGenericMethod {
get {
- if (vm.Version.AtLeast (2, 12)) {
- return GetInfo ().is_generic_method;
- } else {
- return Name.IndexOf ('`') != -1;
- }
+ vm.CheckProtocolVersion (2, 12);
+ return GetInfo ().is_generic_method;
}
}
diff --git a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StepEventRequest.cs b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StepEventRequest.cs
index e33486e80f..b193a05c9b 100644
--- a/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StepEventRequest.cs
+++ b/main/contrib/Mono.Debugger.Soft/Mono.Debugger.Soft/StepEventRequest.cs
@@ -14,11 +14,20 @@ namespace Mono.Debugger.Soft
Line = 1
}
+ /*
+ * Filter which kinds of methods to skip during single stepping
+ */
+ public enum StepFilter {
+ None = 0,
+ StaticCtor = 1
+ }
+
public sealed class StepEventRequest : EventRequest {
ThreadMirror step_thread;
StepDepth depth;
StepSize size;
+ StepFilter filter;
internal StepEventRequest (VirtualMachine vm, ThreadMirror thread) : base (vm, EventType.Step) {
if (thread == null)
@@ -31,7 +40,7 @@ namespace Mono.Debugger.Soft
public override void Enable () {
var mods = new List <Modifier> ();
- mods.Add (new StepModifier () { Thread = step_thread.Id, Depth = (int)Depth, Size = (int)Size });
+ mods.Add (new StepModifier () { Thread = step_thread.Id, Depth = (int)Depth, Size = (int)Size, Filter = (int)Filter });
SendReq (mods);
}
@@ -60,5 +69,15 @@ namespace Mono.Debugger.Soft
size = value;
}
}
+
+ public StepFilter Filter {
+ get {
+ return filter;
+ }
+ set {
+ CheckDisabled ();
+ filter = value;
+ }
+ }
}
} \ No newline at end of file
diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs
index f1b6f377ed..15b11450cf 100644
--- a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs
+++ b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerAdaptor.cs
@@ -49,7 +49,7 @@ namespace Mono.Debugging.Soft
SoftEvaluationContext cx = (SoftEvaluationContext) ctx;
if (obj == null)
- return string.Empty;
+ return null;
if (obj is StringMirror)
return ((StringMirror)obj).Value;
@@ -70,7 +70,7 @@ namespace Mono.Debugging.Soft
MethodMirror method = OverloadResolve (cx, "ToString", ob.Type, new TypeMirror[0], true, false, false);
if (method != null && method.DeclaringType.FullName != "System.Object") {
StringMirror res = cx.RuntimeInvoke (method, obj, new Value[0]) as StringMirror;
- return res != null ? res.Value : string.Empty;
+ return res != null ? res.Value : null;
}
}
else if ((obj is StructMirror) && cx.Options.AllowTargetInvoke) {
@@ -78,7 +78,7 @@ namespace Mono.Debugging.Soft
MethodMirror method = OverloadResolve (cx, "ToString", ob.Type, new TypeMirror[0], true, false, false);
if (method != null && method.DeclaringType.FullName != "System.ValueType") {
StringMirror res = cx.RuntimeInvoke (method, obj, new Value[0]) as StringMirror;
- return res != null ? res.Value : string.Empty;
+ return res != null ? res.Value : null;
}
}
@@ -267,26 +267,30 @@ namespace Mono.Debugging.Soft
if (cx.Frame.Method.IsStatic)
return false;
TypeMirror tm = cx.Frame.Method.DeclaringType;
- return IsGeneratedClosureOrIteratorType (tm);
- }
-
- static bool IsGeneratedClosureOrIteratorType (TypeMirror tm)
- {
- return IsGeneratedClosureType (tm) || IsGeneratedIteratorType (tm);
+ return IsGeneratedType (tm);
}
- static bool IsGeneratedClosureType (TypeMirror tm)
- {
- return tm.Name.IndexOf (">c__") != -1;
+ internal static bool IsGeneratedType (TypeMirror tm)
+ {
+ //
+ // This should cover all C# generated special containers
+ // - anonymous methods
+ // - lambdas
+ // - iterators
+ // - async methods
+ //
+ // which allow stepping into
+ //
+ return tm.Name[0] == '<' &&
+ // mcs is of the form <${NAME}>.c__{KIND}${NUMBER}
+ (tm.Name.IndexOf (">c__") > 0 ||
+ // csc is of form <${NAME}>d__${NUMBER}
+ tm.Name.IndexOf (">d__") > 0);
}
-
- static bool IsGeneratedIteratorType (TypeMirror tm)
+
+ internal static string GetNameFromGeneratedType (TypeMirror tm)
{
- return
- //mcs
- tm.Name.IndexOf (">c__Iterator") != -1
- //csc is of form <NAME>d__NUMBER
- || (tm.Name.StartsWith ("<") && tm.Name.IndexOf (">d__") > -1);
+ return tm.Name.Substring (1, tm.Name.IndexOf ('>') - 1);
}
static bool IsHoistedThisReference (FieldInfoMirror field)
@@ -310,7 +314,7 @@ namespace Mono.Debugging.Soft
return
// mcs
- local.Name.Length == 0 || local.Name.StartsWith ("<") || local.Name.StartsWith ("$locvar")
+ local.Name.Length == 0 || local.Name[0] == '<' || local.Name.StartsWith ("$locvar")
// csc
|| local.Name.StartsWith ("CS$<>");
}
@@ -347,7 +351,7 @@ namespace Mono.Debugging.Soft
return new ValueReference [0];
TypeMirror tm = (TypeMirror) vthis.Type;
- bool isIterator = IsGeneratedIteratorType (tm);
+ bool isIterator = IsGeneratedType (tm);
var list = new List<ValueReference> ();
TypeMirror type = (TypeMirror) vthis.Type;
@@ -457,7 +461,7 @@ namespace Mono.Debugging.Soft
foreach (LocalVariable local in locals) {
if (local.IsArg)
continue;
- if (IsClosureReferenceLocal (local) && IsGeneratedClosureType (local.Type)) {
+ if (IsClosureReferenceLocal (local) && IsGeneratedType (local.Type)) {
foreach (var gv in GetHoistedLocalVariables (cx, new VariableValueReference (cx, local.Name, local))) {
yield return gv;
}
diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerBacktrace.cs b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerBacktrace.cs
index add869a4cd..c0521becd9 100644
--- a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerBacktrace.cs
+++ b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerBacktrace.cs
@@ -35,6 +35,18 @@ using Mono.Debugging.Evaluation;
namespace Mono.Debugging.Soft
{
+ internal class SoftDebuggerStackFrame : Mono.Debugging.Client.StackFrame {
+ public Mono.Debugger.Soft.StackFrame StackFrame {
+ get; private set;
+ }
+
+ public SoftDebuggerStackFrame (Mono.Debugger.Soft.StackFrame frame, string addressSpace, SourceLocation location, string language, bool isExternalCode, bool hasDebugInfo, string fullModuleName, string fullTypeName)
+ : base (frame.ILOffset, addressSpace, location, language, isExternalCode, hasDebugInfo, fullModuleName, fullTypeName)
+ {
+ StackFrame = frame;
+ }
+ }
+
public class SoftDebuggerBacktrace: BaseBacktrace
{
MDB.StackFrame[] frames;
@@ -113,17 +125,48 @@ namespace Mono.Debugging.Soft
methodName = method.Name;
}
+ // Compiler generated anonymous/lambda methods
+ bool special_method = false;
+ if (methodName [0] == '<' && methodName.Contains (">m__")) {
+ int nidx = methodName.IndexOf (">m__") + 2;
+ methodName = "AnonymousMethod" + methodName.Substring (nidx, method.Name.Length - nidx);
+ special_method = true;
+ }
+
if (type != null) {
- methodName = session.Adaptor.GetDisplayTypeName (type.FullName) + "." + methodName;
+ string typeDisplayName = session.Adaptor.GetDisplayTypeName (type.FullName);
+
+ if (SoftDebuggerAdaptor.IsGeneratedType (type)) {
+ // The user-friendly method name is embedded in the generated type name
+ var mn = SoftDebuggerAdaptor.GetNameFromGeneratedType (type);
+
+ // Strip off the generated type name
+ int dot = typeDisplayName.LastIndexOf ('.');
+ var tname = typeDisplayName.Substring (0, dot);
+
+ // Keep any type arguments
+ int targs = typeDisplayName.LastIndexOf ('<');
+ if (targs > dot + 1)
+ mn += typeDisplayName.Substring (targs, typeDisplayName.Length - targs);
+
+ typeDisplayName = tname;
+
+ if (special_method)
+ typeDisplayName += "." + mn;
+ else
+ methodName = mn;
+ }
+
+ methodName = typeDisplayName + "." + methodName;
+
typeFQN = type.Module.FullyQualifiedName;
typeFullName = type.FullName;
}
var location = new DC.SourceLocation (methodName, fileName, frame.LineNumber);
- var lang = frame.Method != null ? "Managed" : "Native";
var external = session.IsExternalCode (frame);
- return new DC.StackFrame (frame.ILOffset, method.FullName, location, lang, external, true, typeFQN, typeFullName);
+ return new SoftDebuggerStackFrame (frame, method.FullName, location, "Managed", external, true, typeFQN, typeFullName);
}
protected override EvaluationContext GetEvaluationContext (int frameIndex, EvaluationOptions options)
diff --git a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs
index 32688cebfe..a2c3a08329 100644
--- a/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs
+++ b/main/src/addins/MonoDevelop.Debugger.Soft/Mono.Debugging.Soft/SoftDebuggerSession.cs
@@ -57,6 +57,7 @@ namespace Mono.Debugging.Soft
ThreadInfo[] current_threads;
bool exited;
bool started;
+ bool autoStepInto;
internal int StackVersion;
StepEventRequest currentStepRequest;
ExceptionEventRequest unhandledExceptionRequest;
@@ -1030,6 +1031,7 @@ namespace Mono.Debugging.Soft
var req = vm.CreateStepRequest (current_thread);
req.Depth = depth;
req.Size = size;
+ req.Filter = StepFilter.StaticCtor;
if (assemblyFilters != null && assemblyFilters.Count > 0)
req.AssemblyFilter = assemblyFilters;
req.Enabled = true;
@@ -1125,12 +1127,31 @@ namespace Mono.Debugging.Soft
}
}
+ static bool IsStepIntoRequest (StepEventRequest stepRequest)
+ {
+ return stepRequest.Depth == StepDepth.Into;
+ }
+
+ static bool IsStepOutRequest (StepEventRequest stepRequest)
+ {
+ return stepRequest.Depth == StepDepth.Out;
+ }
+
+ static bool IsPropertyOrOperatorMethod (MDB.MethodMirror method)
+ {
+ string name = method.Name;
+
+ return method.IsSpecialName && name.StartsWith ("get_") || name.StartsWith ("set_") || name.StartsWith ("op_");
+ }
+
void HandleBreakEventSet (Event[] es, bool dequeuing)
{
if (dequeuing && exited)
return;
bool resume = true;
+ bool steppedOut = false;
+ bool steppedInto = false;
ObjectMirror exception = null;
TargetEventType etype = TargetEventType.TargetStopped;
BreakEvent breakEvent = null;
@@ -1158,13 +1179,18 @@ namespace Mono.Debugging.Soft
BreakInfo binfo;
if (breakpoints.TryGetValue (be.Request, out binfo))
breakEvent = binfo.BreakEvent;
+ autoStepInto = false;
resume = false;
}
} else if (e.EventType == EventType.Step) {
+ var stepRequest = e.Request as StepEventRequest;
+ steppedInto = IsStepIntoRequest (stepRequest);
+ steppedOut = IsStepOutRequest (stepRequest);
etype = TargetEventType.TargetStopped;
resume = false;
} else if (e.EventType == EventType.UserBreak) {
etype = TargetEventType.TargetStopped;
+ autoStepInto = false;
resume = false;
} else {
throw new Exception ("Break eventset had unexpected event type " + e.GetType ());
@@ -1181,17 +1207,37 @@ namespace Mono.Debugging.Soft
currentStepRequest.Enabled = false;
currentStepRequest = null;
}
+
current_thread = recent_thread = es[0].Thread;
- var args = new TargetEventArgs (etype);
- args.Process = OnGetProcesses () [0];
- args.Thread = GetThread (args.Process, current_thread);
- args.Backtrace = GetThreadBacktrace (current_thread);
- args.BreakEvent = breakEvent;
if (exception != null)
activeExceptionsByThread [current_thread.ThreadId] = exception;
- OnTargetEvent (args);
+ var backtrace = GetThreadBacktrace (current_thread);
+ bool stepOut = false;
+
+ if (steppedInto && Options.StepOverPropertiesAndOperators && backtrace.FrameCount > 0) {
+ var frame = backtrace.GetFrame (0) as SoftDebuggerStackFrame;
+
+ stepOut = frame != null && IsPropertyOrOperatorMethod (frame.StackFrame.Method);
+ }
+
+ if (stepOut) {
+ // We will want to call StepInto once StepOut returns...
+ autoStepInto = true;
+ Step (StepDepth.Out, StepSize.Min);
+ } else if (steppedOut && autoStepInto) {
+ autoStepInto = false;
+ Step (StepDepth.Into, StepSize.Min);
+ } else {
+ var args = new TargetEventArgs (etype);
+ args.Process = OnGetProcesses () [0];
+ args.Thread = GetThread (args.Process, current_thread);
+ args.Backtrace = backtrace;
+ args.BreakEvent = breakEvent;
+
+ OnTargetEvent (args);
+ }
}
}
@@ -1683,21 +1729,30 @@ namespace Mono.Debugging.Soft
string srcFile = location.SourceFile;
if (srcFile != null && PathComparer.Compare (PathToFileName (NormalizePath (srcFile)), file) == 0) {
+ rangeLastLine = location.LineNumber;
+ if (rangeFirstLine == -1)
+ rangeFirstLine = location.LineNumber;
+
// If we are inserting a breakpoint in line L, but L+1 has the same IL offset as L,
// pick the L+1 location, since that's where the debugger is going to stop.
- if (location.LineNumber == line) {
- if (target_loc == null)
+ if (location.LineNumber >= line && line >= rangeFirstLine) {
+ if (target_loc != null) {
+ if (location.LineNumber > line) {
+ if (target_loc.LineNumber - line > location.LineNumber - line) {
+ // Grab the location closest to the requested line
+ target_loc = location;
+ } else if (location.ILOffset == target_loc.ILOffset) {
+ // Grab the last location with the same ILOffset
+ target_loc = location;
+ }
+ } else {
+ // Line number matches exactly
+ target_loc = location;
+ }
+ } else {
target_loc = location;
+ }
}
- else if (target_loc != null) {
- if (target_loc.ILOffset == location.ILOffset)
- target_loc = location;
- else
- break;
- }
- rangeLastLine = location.LineNumber;
- if (rangeFirstLine == -1)
- rangeFirstLine = location.LineNumber;
} else {
if (rangeFirstLine != -1 && line >= rangeFirstLine && line <= rangeLastLine)
insideTypeRange = true;
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs
index f735c45aff..96b2f9e47d 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs
@@ -56,6 +56,7 @@ namespace MonoDevelop.Debugger
this.Build ();
options = DebuggingService.GetUserOptions ();
projectCodeOnly.Active = options.ProjectAssembliesOnly;
+ stepOverPropertiesAndOperators.Active = options.StepOverPropertiesAndOperators;
checkAllowEval.Active = options.EvaluationOptions.AllowTargetInvoke;
checkToString.Active = options.EvaluationOptions.AllowToStringCalls;
checkShowBaseGroup.Active = !options.EvaluationOptions.FlattenHierarchy;
@@ -83,7 +84,8 @@ namespace MonoDevelop.Debugger
ops.GroupStaticMembers = checkGroupStatic.Active;
int t = (int) spinTimeout.Value;
ops.EvaluationTimeout = t;
-
+
+ options.StepOverPropertiesAndOperators = stepOverPropertiesAndOperators.Active;
options.ProjectAssembliesOnly = projectCodeOnly.Active;
options.EvaluationOptions = ops;
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
index 84652280a3..2bb7636f0f 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
@@ -446,23 +446,26 @@ namespace MonoDevelop.Debugger
public static DebuggerSessionOptions GetUserOptions ()
{
- EvaluationOptions eops = EvaluationOptions.DefaultOptions;
- eops.AllowTargetInvoke = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.AllowTargetInvoke", true);
- eops.AllowToStringCalls = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.AllowToStringCalls", true);
- eops.EvaluationTimeout = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.EvaluationTimeout", 2500);
- eops.FlattenHierarchy = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.FlattenHierarchy", false);
- eops.GroupPrivateMembers = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.GroupPrivateMembers", true);
- eops.GroupStaticMembers = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.GroupStaticMembers", true);
- eops.MemberEvaluationTimeout = eops.EvaluationTimeout * 2;
+ EvaluationOptions eval = EvaluationOptions.DefaultOptions;
+ eval.AllowTargetInvoke = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.AllowTargetInvoke", true);
+ eval.AllowToStringCalls = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.AllowToStringCalls", true);
+ eval.EvaluationTimeout = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.EvaluationTimeout", 2500);
+ eval.FlattenHierarchy = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.FlattenHierarchy", false);
+ eval.GroupPrivateMembers = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.GroupPrivateMembers", true);
+ eval.GroupStaticMembers = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.GroupStaticMembers", true);
+ eval.MemberEvaluationTimeout = eval.EvaluationTimeout * 2;
return new DebuggerSessionOptions () {
+ StepOverPropertiesAndOperators = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.StepOverPropertiesAndOperators", true),
ProjectAssembliesOnly = PropertyService.Get ("MonoDevelop.Debugger.DebuggingService.ProjectAssembliesOnly", true),
- EvaluationOptions = eops,
+ EvaluationOptions = eval,
};
}
public static void SetUserOptions (DebuggerSessionOptions options)
{
+ PropertyService.Set ("MonoDevelop.Debugger.DebuggingService.StepOverPropertiesAndOperators", options.StepOverPropertiesAndOperators);
PropertyService.Set ("MonoDevelop.Debugger.DebuggingService.ProjectAssembliesOnly", options.ProjectAssembliesOnly);
+
PropertyService.Set ("MonoDevelop.Debugger.DebuggingService.AllowTargetInvoke", options.EvaluationOptions.AllowTargetInvoke);
PropertyService.Set ("MonoDevelop.Debugger.DebuggingService.AllowToStringCalls", options.EvaluationOptions.AllowToStringCalls);
PropertyService.Set ("MonoDevelop.Debugger.DebuggingService.EvaluationTimeout", options.EvaluationOptions.EvaluationTimeout);
diff --git a/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs b/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs
index 11fe84d30e..431616def3 100644
--- a/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs
+++ b/main/src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebuggerOptionsPanelWidget.cs
@@ -7,6 +7,7 @@ namespace MonoDevelop.Debugger
private global::Gtk.Notebook notebook1;
private global::Gtk.VBox vbox3;
private global::Gtk.CheckButton projectCodeOnly;
+ private global::Gtk.CheckButton stepOverPropertiesAndOperators;
private global::Gtk.CheckButton checkAllowEval;
private global::Gtk.CheckButton checkToString;
private global::Gtk.CheckButton checkShowBaseGroup;
@@ -52,6 +53,19 @@ namespace MonoDevelop.Debugger
w1.Expand = false;
w1.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
+ this.stepOverPropertiesAndOperators = new global::Gtk.CheckButton ();
+ this.stepOverPropertiesAndOperators.CanFocus = true;
+ this.stepOverPropertiesAndOperators.Name = "stepOverPropertiesAndOperators";
+ this.stepOverPropertiesAndOperators.Label = global::Mono.Unix.Catalog.GetString ("Step over properties and operators");
+ this.stepOverPropertiesAndOperators.Active = true;
+ this.stepOverPropertiesAndOperators.DrawIndicator = true;
+ this.stepOverPropertiesAndOperators.UseUnderline = true;
+ this.vbox3.Add (this.stepOverPropertiesAndOperators);
+ global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.stepOverPropertiesAndOperators]));
+ w2.Position = 1;
+ w2.Expand = false;
+ w2.Fill = false;
+ // Container child vbox3.Gtk.Box+BoxChild
this.checkAllowEval = new global::Gtk.CheckButton ();
this.checkAllowEval.CanFocus = true;
this.checkAllowEval.Name = "checkAllowEval";
@@ -60,10 +74,10 @@ namespace MonoDevelop.Debugger
this.checkAllowEval.DrawIndicator = true;
this.checkAllowEval.UseUnderline = true;
this.vbox3.Add (this.checkAllowEval);
- global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkAllowEval]));
- w2.Position = 1;
- w2.Expand = false;
- w2.Fill = false;
+ global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkAllowEval]));
+ w3.Position = 2;
+ w3.Expand = false;
+ w3.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.checkToString = new global::Gtk.CheckButton ();
this.checkToString.CanFocus = true;
@@ -72,10 +86,10 @@ namespace MonoDevelop.Debugger
this.checkToString.DrawIndicator = true;
this.checkToString.UseUnderline = true;
this.vbox3.Add (this.checkToString);
- global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkToString]));
- w3.Position = 2;
- w3.Expand = false;
- w3.Fill = false;
+ global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkToString]));
+ w4.Position = 3;
+ w4.Expand = false;
+ w4.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.checkShowBaseGroup = new global::Gtk.CheckButton ();
this.checkShowBaseGroup.CanFocus = true;
@@ -84,10 +98,10 @@ namespace MonoDevelop.Debugger
this.checkShowBaseGroup.DrawIndicator = true;
this.checkShowBaseGroup.UseUnderline = true;
this.vbox3.Add (this.checkShowBaseGroup);
- global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkShowBaseGroup]));
- w4.Position = 3;
- w4.Expand = false;
- w4.Fill = false;
+ global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkShowBaseGroup]));
+ w5.Position = 4;
+ w5.Expand = false;
+ w5.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.checkGroupPrivate = new global::Gtk.CheckButton ();
this.checkGroupPrivate.CanFocus = true;
@@ -96,10 +110,10 @@ namespace MonoDevelop.Debugger
this.checkGroupPrivate.DrawIndicator = true;
this.checkGroupPrivate.UseUnderline = true;
this.vbox3.Add (this.checkGroupPrivate);
- global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkGroupPrivate]));
- w5.Position = 4;
- w5.Expand = false;
- w5.Fill = false;
+ global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkGroupPrivate]));
+ w6.Position = 5;
+ w6.Expand = false;
+ w6.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.checkGroupStatic = new global::Gtk.CheckButton ();
this.checkGroupStatic.CanFocus = true;
@@ -108,10 +122,10 @@ namespace MonoDevelop.Debugger
this.checkGroupStatic.DrawIndicator = true;
this.checkGroupStatic.UseUnderline = true;
this.vbox3.Add (this.checkGroupStatic);
- global::Gtk.Box.BoxChild w6 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkGroupStatic]));
- w6.Position = 5;
- w6.Expand = false;
- w6.Fill = false;
+ global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.checkGroupStatic]));
+ w7.Position = 6;
+ w7.Expand = false;
+ w7.Fill = false;
// Container child vbox3.Gtk.Box+BoxChild
this.tableEval = new global::Gtk.Table (((uint)(1)), ((uint)(3)), false);
this.tableEval.Name = "tableEval";
@@ -122,20 +136,20 @@ namespace MonoDevelop.Debugger
this.label3.Name = "label3";
this.label3.LabelProp = global::Mono.Unix.Catalog.GetString ("ms");
this.tableEval.Add (this.label3);
- global::Gtk.Table.TableChild w7 = ((global::Gtk.Table.TableChild)(this.tableEval [this.label3]));
- w7.LeftAttach = ((uint)(2));
- w7.RightAttach = ((uint)(3));
- w7.XOptions = ((global::Gtk.AttachOptions)(4));
- w7.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.tableEval [this.label3]));
+ w8.LeftAttach = ((uint)(2));
+ w8.RightAttach = ((uint)(3));
+ w8.XOptions = ((global::Gtk.AttachOptions)(4));
+ w8.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child tableEval.Gtk.Table+TableChild
this.label60 = new global::Gtk.Label ();
this.label60.Name = "label60";
this.label60.Xalign = 0F;
this.label60.LabelProp = global::Mono.Unix.Catalog.GetString ("Evaluation Timeout:");
this.tableEval.Add (this.label60);
- global::Gtk.Table.TableChild w8 = ((global::Gtk.Table.TableChild)(this.tableEval [this.label60]));
- w8.XOptions = ((global::Gtk.AttachOptions)(4));
- w8.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.tableEval [this.label60]));
+ w9.XOptions = ((global::Gtk.AttachOptions)(4));
+ w9.YOptions = ((global::Gtk.AttachOptions)(4));
// Container child tableEval.Gtk.Table+TableChild
this.spinTimeout = new global::Gtk.SpinButton (0, 1000000, 100);
this.spinTimeout.CanFocus = true;
@@ -144,16 +158,16 @@ namespace MonoDevelop.Debugger
this.spinTimeout.ClimbRate = 100;
this.spinTimeout.Numeric = true;
this.tableEval.Add (this.spinTimeout);
- global::Gtk.Table.TableChild w9 = ((global::Gtk.Table.TableChild)(this.tableEval [this.spinTimeout]));
- w9.LeftAttach = ((uint)(1));
- w9.RightAttach = ((uint)(2));
- w9.XOptions = ((global::Gtk.AttachOptions)(4));
- w9.YOptions = ((global::Gtk.AttachOptions)(4));
+ global::Gtk.Table.TableChild w10 = ((global::Gtk.Table.TableChild)(this.tableEval [this.spinTimeout]));
+ w10.LeftAttach = ((uint)(1));
+ w10.RightAttach = ((uint)(2));
+ w10.XOptions = ((global::Gtk.AttachOptions)(4));
+ w10.YOptions = ((global::Gtk.AttachOptions)(4));
this.vbox3.Add (this.tableEval);
- global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.tableEval]));
- w10.Position = 6;
- w10.Expand = false;
- w10.Fill = false;
+ global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox3 [this.tableEval]));
+ w11.Position = 7;
+ w11.Expand = false;
+ w11.Fill = false;
this.notebook1.Add (this.vbox3);
// Notebook tab
this.label4 = new global::Gtk.Label ();
@@ -174,19 +188,19 @@ namespace MonoDevelop.Debugger
this.label2.LabelProp = global::Mono.Unix.Catalog.GetString ("This priority list will be used by MonoDevelop when selecting the engine to be used for debugging an application.");
this.label2.Wrap = true;
this.vbox2.Add (this.label2);
- global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label2]));
- w12.Position = 0;
- w12.Expand = false;
- w12.Fill = false;
+ global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.label2]));
+ w13.Position = 0;
+ w13.Expand = false;
+ w13.Fill = false;
// Container child vbox2.Gtk.Box+BoxChild
this.prioritylist = new global::MonoDevelop.Ide.Gui.Components.PriorityList ();
this.prioritylist.Name = "prioritylist";
this.vbox2.Add (this.prioritylist);
- global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.prioritylist]));
- w13.Position = 1;
- this.notebook1.Add (this.vbox2);
- global::Gtk.Notebook.NotebookChild w14 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.vbox2]));
+ global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.prioritylist]));
w14.Position = 1;
+ this.notebook1.Add (this.vbox2);
+ global::Gtk.Notebook.NotebookChild w15 = ((global::Gtk.Notebook.NotebookChild)(this.notebook1 [this.vbox2]));
+ w15.Position = 1;
// Notebook tab
this.label1 = new global::Gtk.Label ();
this.label1.Name = "label1";
diff --git a/main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic b/main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
index ce0a036834..c00dfb31f7 100644
--- a/main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
+++ b/main/src/addins/MonoDevelop.Debugger/gtk-gui/gui.stetic
@@ -1275,7 +1275,7 @@
</widget>
</child>
</widget>
- <widget class="Gtk.Bin" id="MonoDevelop.Debugger.DebuggerOptionsPanelWidget" design-size="523 250">
+ <widget class="Gtk.Bin" id="MonoDevelop.Debugger.DebuggerOptionsPanelWidget" design-size="523 270">
<property name="MemberName" />
<property name="Visible">False</property>
<child>
@@ -1306,6 +1306,23 @@
</packing>
</child>
<child>
+ <widget class="Gtk.CheckButton" id="stepOverPropertiesAndOperators">
+ <property name="MemberName" />
+ <property name="CanFocus">True</property>
+ <property name="Label" translatable="yes">Step over properties and operators</property>
+ <property name="Active">True</property>
+ <property name="DrawIndicator">True</property>
+ <property name="HasLabel">True</property>
+ <property name="UseUnderline">True</property>
+ </widget>
+ <packing>
+ <property name="Position">1</property>
+ <property name="AutoSize">True</property>
+ <property name="Expand">False</property>
+ <property name="Fill">False</property>
+ </packing>
+ </child>
+ <child>
<widget class="Gtk.CheckButton" id="checkAllowEval">
<property name="MemberName" />
<property name="CanFocus">True</property>
@@ -1317,7 +1334,7 @@
<signal name="Toggled" handler="OnCheckAllowEvalToggled" />
</widget>
<packing>
- <property name="Position">1</property>
+ <property name="Position">2</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -1333,7 +1350,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">2</property>
+ <property name="Position">3</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -1349,7 +1366,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">3</property>
+ <property name="Position">4</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -1365,7 +1382,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">4</property>
+ <property name="Position">5</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -1381,7 +1398,7 @@
<property name="UseUnderline">True</property>
</widget>
<packing>
- <property name="Position">5</property>
+ <property name="Position">6</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
@@ -1456,7 +1473,7 @@
</child>
</widget>
<packing>
- <property name="Position">6</property>
+ <property name="Position">7</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
diff --git a/main/src/addins/MonoDevelop.MacDev/AppleSdkSettings.cs b/main/src/addins/MonoDevelop.MacDev/AppleSdkSettings.cs
index 5f1a857704..3be40ae38c 100644
--- a/main/src/addins/MonoDevelop.MacDev/AppleSdkSettings.cs
+++ b/main/src/addins/MonoDevelop.MacDev/AppleSdkSettings.cs
@@ -51,7 +51,7 @@ namespace MonoDevelop.MacDev
// Put newer SDKs at the top as we scan from 0 -> List.Count
static readonly IList<string> DefaultRoots = new List<string> {
- "/Applications/Xcode.app/Contents/Developer",
+ "/Applications/Xcode.app",
"/Developer"
};
static DateTime lastWritten;
@@ -61,20 +61,41 @@ namespace MonoDevelop.MacDev
return Environment.GetEnvironmentVariable ("MD_APPLE_SDK_ROOT");
}
- internal static bool ValidateSdkLocation (FilePath location, out FilePath versionPlist)
+ static void GetNewPaths (FilePath root, out FilePath xcode, out FilePath vplist, out FilePath devroot)
{
- versionPlist = location.Combine ("..", "version.plist");
- if (System.IO.File.Exists (versionPlist))
+ xcode = root;
+ vplist = root.Combine ("Contents", "version.plist");
+ devroot = root.Combine ("Contents", "Developer");
+ }
+
+ static void GetOldPaths (FilePath root, out FilePath xcode, out FilePath vplist, out FilePath devroot)
+ {
+ xcode = root.Combine ("Applications", "Xcode.app");
+ vplist = root.Combine ("Library", "version.plist");
+ devroot = root;
+ }
+
+ static bool ValidatePaths (FilePath xcode, FilePath vplist, FilePath devroot)
+ {
+ return Directory.Exists (xcode)
+ && Directory.Exists (devroot)
+ && File.Exists (vplist)
+ && File.Exists (xcode.Combine ("Contents", "Info.plist"));
+ }
+
+ internal static bool ValidateSdkLocation (FilePath location, out FilePath xcode, out FilePath vplist, out FilePath devroot)
+ {
+ GetNewPaths (location, out xcode, out vplist, out devroot);
+ if (ValidatePaths (xcode, vplist, devroot))
return true;
- versionPlist = location.Combine ("Library", "version.plist");
- if (System.IO.File.Exists (versionPlist))
+ GetOldPaths (location, out xcode, out vplist, out devroot);
+ if (ValidatePaths (xcode, vplist, devroot))
return true;
- versionPlist = FilePath.Empty;
return false;
}
-
+
internal static void SetConfiguredSdkLocation (FilePath location)
{
if (location.IsNullOrEmpty || location == DefaultRoots.First ())
@@ -114,43 +135,33 @@ namespace MonoDevelop.MacDev
{
SetInvalid ();
- var versionInfo = FilePath.Empty;
DeveloperRoot = Environment.GetEnvironmentVariable ("MD_APPLE_SDK_ROOT");
if (DeveloperRoot.IsNullOrEmpty) {
DeveloperRoot = GetConfiguredSdkLocation ();
}
+ bool foundSdk = false;
+ FilePath xcode, vplist, devroot;
+
if (DeveloperRoot.IsNullOrEmpty) {
foreach (var v in DefaultRoots) {
- if (ValidateSdkLocation (v, out versionInfo)) {
- DeveloperRootVersionPlist = versionInfo;
- DeveloperRoot = v;
+ if (ValidateSdkLocation (v, out xcode, out vplist, out devroot)) {
+ foundSdk = true;
break;
} else {
- LoggingService.LogDebug ("Apple iOS Sdk not found at '{0}'", v);
+ LoggingService.LogDebug ("Apple iOS SDK not found at '{0}'", v);
}
}
- } else if (DeveloperRoot.FileName == "Xcode.app") {
- // If the user supplied path ends with 'Xcode.app' then we should assume
- // it's the standard one and so need to append 'Contents/Developer'
- DeveloperRoot = DeveloperRoot.Combine ("Contents", "Developer");
- }
-
- var parent = DeveloperRoot;
- while (!parent.IsNullOrEmpty) {
- if (parent.FileName == "Xcode.app") {
- XcodePath = parent;
- break;
- }
- parent = parent.ParentDirectory;
+ } else {
+ foundSdk = ValidateSdkLocation (DeveloperRoot, out xcode, out vplist, out devroot);
}
-
- if (XcodePath.IsNullOrEmpty) {
- XcodePath = DeveloperRoot.Combine ("Applications", "Xcode.app");
- }
-
- if (DeveloperRoot.IsNullOrEmpty || !ValidateSdkLocation (DeveloperRoot, out versionInfo)) {
- DeveloperRootVersionPlist = versionInfo;
+
+ if (foundSdk) {
+ XcodePath = xcode;
+ DeveloperRoot = devroot;
+ DeveloperRootVersionPlist = vplist;
+ } else {
+ SetInvalid ();
return;
}
diff --git a/main/src/addins/MonoDevelop.MacDev/AppleSdkSettingsPanel.cs b/main/src/addins/MonoDevelop.MacDev/AppleSdkSettingsPanel.cs
index ffcd507c15..3807ac93c7 100644
--- a/main/src/addins/MonoDevelop.MacDev/AppleSdkSettingsPanel.cs
+++ b/main/src/addins/MonoDevelop.MacDev/AppleSdkSettingsPanel.cs
@@ -43,8 +43,8 @@ namespace MonoDevelop.MacDev
public override bool ValidateSdkLocation (FilePath location)
{
- FilePath versionInfoPlist;
- return AppleSdkSettings.ValidateSdkLocation (location, out versionInfoPlist);
+ FilePath xcode, vplist, devroot;
+ return AppleSdkSettings.ValidateSdkLocation (location, out xcode, out vplist, out devroot);
}
public override FilePath LoadSdkLocationSetting ()
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Makefile.am b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Makefile.am
index 4b90865bce..1759861107 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Makefile.am
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/Makefile.am
@@ -41,6 +41,7 @@ FILES = \
MonoDevelop.VersionControl.Git/CredentialsDialog.cs \
MonoDevelop.VersionControl.Git/EditBranchDialog.cs \
MonoDevelop.VersionControl.Git/EditRemoteDialog.cs \
+ MonoDevelop.VersionControl.Git/FilteredStatus.cs \
MonoDevelop.VersionControl.Git/GitClient.cs \
MonoDevelop.VersionControl.Git/GitCommitDialogExtension.cs \
MonoDevelop.VersionControl.Git/GitCommitDialogExtensionWidget.cs \
@@ -57,7 +58,6 @@ FILES = \
MonoDevelop.VersionControl.Git/MergeDialog.cs \
MonoDevelop.VersionControl.Git/NewStashDialog.cs \
MonoDevelop.VersionControl.Git/PushDialog.cs \
- MonoDevelop.VersionControl.Git/RepositoryStatus.cs \
MonoDevelop.VersionControl.Git/Stash.cs \
MonoDevelop.VersionControl.Git/StashManagerDialog.cs \
MonoDevelop.VersionControl.Git/UserInfoConflictDialog.cs
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj
index 7fc3fb17d8..0a019b3e54 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.csproj
@@ -61,7 +61,6 @@
<Compile Include="gtk-gui\MonoDevelop.VersionControl.Git.EditRemoteDialog.cs" />
<Compile Include="gtk-gui\MonoDevelop.VersionControl.Git.MergeDialog.cs" />
<Compile Include="MonoDevelop.VersionControl.Git\Change.cs" />
- <Compile Include="MonoDevelop.VersionControl.Git\RepositoryStatus.cs" />
<Compile Include="MonoDevelop.VersionControl.Git\MergeDialog.cs" />
<Compile Include="MonoDevelop.VersionControl.Git\Stash.cs" />
<Compile Include="MonoDevelop.VersionControl.Git\GitUtil.cs" />
@@ -79,6 +78,7 @@
<Compile Include="gtk-gui\MonoDevelop.VersionControl.Git.GitCommitDialogExtensionWidget.cs" />
<Compile Include="MonoDevelop.VersionControl.Git\GitCommitDialogExtension.cs" />
<Compile Include="MonoDevelop.VersionControl.Git\GitSupportFeature.cs" />
+ <Compile Include="MonoDevelop.VersionControl.Git\FilteredStatus.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj">
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/FilteredStatus.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/FilteredStatus.cs
new file mode 100644
index 0000000000..7099028d12
--- /dev/null
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/FilteredStatus.cs
@@ -0,0 +1,80 @@
+//
+// SpecificStatus.cs
+//
+// Author:
+// Alan McGovern <alan@xamarin.com>
+//
+// Copyright (c) 2012 Xamarin Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using NGit;
+using NGit.Treewalk;
+using NGit.Treewalk.Filter;
+
+namespace MonoDevelop.VersionControl.Git
+{
+ class FilteredStatus : NGit.Api.StatusCommand
+ {
+ WorkingTreeIterator iter;
+
+ IEnumerable<string> Files {
+ get; set;
+ }
+
+ public FilteredStatus (NGit.Repository repository)
+ : base (repository)
+ {
+
+ }
+
+ public FilteredStatus (NGit.Repository repository, IEnumerable<string> files)
+ : base (repository)
+ {
+ Files = files;
+ }
+
+ public override NGit.Api.StatusCommand SetWorkingTreeIt (WorkingTreeIterator workingTreeIt)
+ {
+ iter = workingTreeIt;
+ return this;
+ }
+
+ public override NGit.Api.Status Call ()
+ {
+ if (iter == null)
+ iter = new FileTreeIterator(repo);
+
+ IndexDiff diff = new IndexDiff(repo, Constants.HEAD, iter);
+ if (Files != null) {
+ var filters = Files.Where (f => f != ".").ToArray ();
+ if (filters.Length > 0)
+ diff.SetFilter (PathFilterGroup.CreateFromStrings (filters));
+ }
+
+ diff.Diff ();
+ return new NGit.Api.Status(diff);
+ }
+ }
+}
+
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs
index 2850a1f95c..45ade91b23 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs
@@ -266,12 +266,18 @@ namespace MonoDevelop.VersionControl.Git
else
rev = null;
- RepositoryStatus status;
- if (localFileNames != null)
- status = GitUtil.GetFileStatus (repo, localFileNames);
- else
- status = GitUtil.GetDirectoryStatus (repo, localDirectory, recursive);
-
+ IEnumerable<string> paths;
+ if (localFileNames == null) {
+ if (recursive)
+ paths = new [] { (string) localDirectory };
+ else
+ paths = Directory.GetFiles (localDirectory);
+ } else {
+ paths = localFileNames.Select (f => (string)f);
+ }
+ paths = paths.Select (f => ToGitPath (f));
+
+ var status = new FilteredStatus (repo, paths).Call ();
HashSet<string> added = new HashSet<string> ();
Action<IEnumerable<string>, VersionStatus> AddFiles = delegate(IEnumerable<string> files, VersionStatus fstatus) {
foreach (string file in files) {
@@ -284,13 +290,14 @@ namespace MonoDevelop.VersionControl.Git
}
};
- AddFiles (status.Added, VersionStatus.Versioned | VersionStatus.ScheduledAdd);
- AddFiles (status.Modified, VersionStatus.Versioned | VersionStatus.Modified);
- AddFiles (status.Removed, VersionStatus.Versioned | VersionStatus.ScheduledDelete);
- AddFiles (status.Missing, VersionStatus.Versioned | VersionStatus.ScheduledDelete);
- AddFiles (status.MergeConflict, VersionStatus.Versioned | VersionStatus.Conflicted);
- AddFiles (status.Untracked, VersionStatus.Unversioned);
-
+ AddFiles (status.GetAdded (), VersionStatus.Versioned | VersionStatus.ScheduledAdd);
+ AddFiles (status.GetChanged (), VersionStatus.Versioned | VersionStatus.Modified);
+ AddFiles (status.GetModified (), VersionStatus.Versioned | VersionStatus.Modified);
+ AddFiles (status.GetRemoved (), VersionStatus.Versioned | VersionStatus.ScheduledDelete);
+ AddFiles (status.GetMissing (), VersionStatus.Versioned | VersionStatus.ScheduledDelete);
+ AddFiles (status.GetConflicting (), VersionStatus.Versioned | VersionStatus.Conflicted);
+ AddFiles (status.GetUntracked (), VersionStatus.Unversioned);
+
// Existing files for which git did not report an status are supposed to be tracked
foreach (FilePath file in existingFiles) {
VersionInfo vi = new VersionInfo (file, "", false, VersionStatus.Versioned, rev, VersionStatus.Versioned, null);
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs
index 8f9912e4ec..367faeac92 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitUtil.cs
@@ -164,17 +164,7 @@ namespace MonoDevelop.VersionControl.Git
}
}
}
-
- public static RepositoryStatus GetDirectoryStatus (NGit.Repository repo, string dir, bool recursive)
- {
- return new RepositoryStatus (repo, null, repo.ToGitPath (dir), recursive);
- }
-
- public static RepositoryStatus GetFileStatus (NGit.Repository repo, IEnumerable<FilePath> fileNames)
- {
- return new RepositoryStatus (repo, repo.ToGitPath (fileNames), null, false);
- }
-
+
public static ObjectId CreateCommit (NGit.Repository rep, string message, IList<ObjectId> parents, ObjectId indexTreeId, PersonIdent author, PersonIdent committer)
{
try {
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/RepositoryStatus.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/RepositoryStatus.cs
deleted file mode 100644
index 43d216dbba..0000000000
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/RepositoryStatus.cs
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Copyright (C) 2007, Dave Watson <dwatson@mimvista.com>
- * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com>
- * Copyright (C) 2010, Henon <meinrad.recheis@gmail.com>
- *
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or
- * without modification, are permitted provided that the following
- * conditions are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided
- * with the distribution.
- *
- * - Neither the name of the Git Development Community nor the
- * names of its contributors may be used to endorse or promote
- * products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
- * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Linq;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using NGit;
-using NGit.Revwalk;
-using NGit.Treewalk;
-using NGit.Dircache;
-using NGit.Treewalk.Filter;
-
-namespace MonoDevelop.VersionControl.Git
-{
- class SpecificStatus : NGit.Api.StatusCommand
- {
- WorkingTreeIterator iter;
- IEnumerable<string> Files {
- get; set;
- }
-
- public SpecificStatus (NGit.Repository repository)
- : base (repository)
- {
- }
-
- public SpecificStatus (NGit.Repository repository, IEnumerable<string> files)
- : base (repository)
- {
- Files = files;
- }
-
- public override NGit.Api.StatusCommand SetWorkingTreeIt (WorkingTreeIterator workingTreeIt)
- {
- iter = workingTreeIt;
- return this;
- }
-
- public override NGit.Api.Status Call ()
- {
- if (iter == null)
- iter = new FileTreeIterator(repo);
-
- IndexDiff diff = new IndexDiff(repo, Constants.HEAD, iter);
- if (Files != null) {
- var filters = Files.Select (PathFilter.Create).ToArray ();
- if (filters.Length > 1)
- diff.SetFilter (OrTreeFilter.Create (filters));
- else
- diff.SetFilter (filters [0]);
- }
-
- diff.Diff ();
- return new NGit.Api.Status(diff);
- }
- }
-
- public class RepositoryStatus
- {
- private string _root_path;
- private bool _recursive;
- private IEnumerable<string> _file_paths;
- private bool changesExist;
-
- internal RepositoryStatus(NGit.Repository repository, IEnumerable<string> singleFiles, string rootDir, bool recursive)
- {
- Repository = repository;
- _root_path = rootDir;
- _recursive = recursive;
- _file_paths = singleFiles;
- Update();
- }
-
- public NGit.Repository Repository
- {
- get;
- private set;
- }
-
- public bool ChangesExist {
- get { return changesExist; }
- }
-
- /// <summary>
- /// List of files added to the index, which are not in the current commit
- /// </summary>
- public HashSet<string> Added { get; private set; }
-
- /// <summary>
- /// List of files added to the index, which are already in the current commit with different content
- /// </summary>
- public HashSet<string> Staged { get; private set; }
-
- /// <summary>
- /// List of files removed from the index but are existent in the current commit
- /// </summary>
- public HashSet<string> Removed { get; private set; }
-
- /// <summary>
- /// List of files existent in the index but are missing in the working directory
- /// </summary>
- public HashSet<string> Missing { get; private set; }
-
- /// <summary>
- /// List of files with unstaged modifications. A file may be modified and staged at the same time if it has been modified after adding.
- /// </summary>
- public HashSet<string> Modified { get; private set; }
-
- /// <summary>
- /// List of files existing in the working directory but are neither tracked in the index nor in the current commit.
- /// </summary>
- public HashSet<string> Untracked { get; private set; }
-
- /// <summary>
- /// List of files with staged modifications that conflict.
- /// </summary>
- public HashSet<string> MergeConflict { get; private set; }
-
- ///// <summary>
- ///// Returns the number of files checked into the git repository
- ///// </summary>
- //public int IndexSize { get { return _index.Members.Count; } }
-
- public bool AnyDifferences { get; private set; }
-
- /// <summary>
- /// Recalculates the status
- /// </summary>
- public void Update()
- {
- AnyDifferences = false;
- Added = new HashSet<string>();
- Staged = new HashSet<string>();
- Removed = new HashSet<string>();
- Missing = new HashSet<string>();
- Modified = new HashSet<string>();
- Untracked = new HashSet<string>();
- MergeConflict = new HashSet<string>();
-
- if (_file_paths != null)
- UpdateSingleFiles (_file_paths.ToList ());
- else if (_recursive)
- UpdateDirectory (new string[] { _root_path }, true);
- else
- UpdateDirectory (new string[] { _root_path }, false);
- }
-
- void UpdateSingleFiles (List<string> singleFiles)
- {
- // NGIT HACK: We verify that all the files listed in the result of
- // the GitStatus call are actually in the list of files we're interested
- // in. This is because NGit cannot properly filter the git tree and
- // incorrectly includes extra directories. See bug #
- var status = new SpecificStatus (Repository, singleFiles).Call ();
-
- foreach (var v in status.GetAdded ())
- if (singleFiles.Contains (v))
- Added.Add (v);
-
- foreach (var v in status.GetChanged ())
- if (singleFiles.Contains (v))
- Modified.Add (v);
-
- foreach (var v in status.GetConflicting ())
- if (singleFiles.Contains (v))
- MergeConflict.Add (v);
-
- foreach (var v in status.GetMissing ())
- if (singleFiles.Contains (v))
- Missing.Add (v);
-
- foreach (var v in status.GetModified ())
- if (singleFiles.Contains (v))
- Modified.Add (v);
-
- foreach (var v in status.GetRemoved ())
- if (singleFiles.Contains (v))
- Removed.Add (v);
-
- foreach (var v in status.GetUntracked ())
- if (singleFiles.Contains (v))
- Untracked.Add (v);
- }
-
- /// <summary>
- /// Run the diff operation. Until this is called, all lists will be empty
- /// </summary>
- /// <returns>true if anything is different between index, tree, and workdir</returns>
- private void UpdateDirectory (IEnumerable<string> paths, bool recursive)
- {
- RevWalk rw = new RevWalk (Repository);
- ObjectId id = Repository.Resolve (Constants.HEAD);
- var commit = id != null ? rw.ParseCommit (id) : null;
-
- TreeWalk treeWalk = new TreeWalk (Repository);
- treeWalk.Reset ();
- treeWalk.Recursive = recursive;
-
- if (commit != null)
- treeWalk.AddTree (commit.Tree);
- else
- treeWalk.AddTree (new EmptyTreeIterator());
-
- DirCache dc = Repository.ReadDirCache ();
- treeWalk.AddTree (new DirCacheIterator (dc));
-
- FileTreeIterator workTree = new FileTreeIterator (Repository.WorkTree, Repository.FileSystem, WorkingTreeOptions.KEY.Parse(Repository.GetConfig()));
- treeWalk.AddTree (workTree);
-
- List<TreeFilter> filters = new List<TreeFilter> ();
- filters.Add (new SkipWorkTreeFilter(1));
-
- var pathFilters = paths.Where (p => p != ".").Select (p => PathFilter.Create (p)).ToArray ();
- if (pathFilters.Length > 1) {
- filters.Add (OrTreeFilter.Create (pathFilters)); // Use an OR to join all path filters
- } else if (pathFilters.Length == 1)
- filters.Add (pathFilters[0]);
-
- if (filters.Count > 1)
- treeWalk.Filter = AndTreeFilter.Create(filters);
- else
- treeWalk.Filter = filters[0];
-
- while (treeWalk.Next())
- {
- AbstractTreeIterator treeIterator = treeWalk.GetTree<AbstractTreeIterator>(0);
- DirCacheIterator dirCacheIterator = treeWalk.GetTree<DirCacheIterator>(1);
- WorkingTreeIterator workingTreeIterator = treeWalk.GetTree<WorkingTreeIterator>(2);
- NGit.FileMode fileModeTree = treeWalk.GetFileMode(0);
-
- if (treeWalk.IsSubtree) {
- treeWalk.EnterSubtree ();
- continue;
- }
-
- int stage = dirCacheIterator != null ? dirCacheIterator.GetDirCacheEntry ().Stage : 0;
- if (stage > 1)
- continue;
- else if (stage == 1) {
- MergeConflict.Add(dirCacheIterator.EntryPathString);
- changesExist = true;
- continue;
- }
-
- if (treeIterator != null)
- {
- if (dirCacheIterator != null)
- {
- if (!treeIterator.EntryObjectId.Equals(dirCacheIterator.EntryObjectId))
- {
- // in repo, in index, content diff => changed
- Modified.Add(dirCacheIterator.EntryPathString);
- changesExist = true;
- }
- }
- else
- {
- // in repo, not in index => removed
- if (!fileModeTree.Equals(NGit.FileMode.TYPE_TREE))
- {
- Removed.Add(treeIterator.EntryPathString);
- changesExist = true;
- }
- }
- }
- else
- {
- if (dirCacheIterator != null)
- {
- // not in repo, in index => added
- Added.Add(dirCacheIterator.EntryPathString);
- changesExist = true;
- }
- else
- {
- // not in repo, not in index => untracked
- if (workingTreeIterator != null && !workingTreeIterator.IsEntryIgnored())
- {
- Untracked.Add(workingTreeIterator.EntryPathString);
- changesExist = true;
- }
- }
- }
- if (dirCacheIterator != null)
- {
- if (workingTreeIterator == null)
- {
- // in index, not in workdir => missing
- Missing.Add(dirCacheIterator.EntryPathString);
- changesExist = true;
- }
- else
- {
- // Workaround to file time resolution issues
- long itime = dirCacheIterator.GetDirCacheEntry ().LastModified;
- long ftime = workingTreeIterator.GetEntryLastModified ();
- if (itime / 1000 != ftime / 1000) {
- if (!dirCacheIterator.IdEqual(workingTreeIterator))
- {
- // in index, in workdir, content differs => modified
- Modified.Add(dirCacheIterator.EntryPathString);
- changesExist = true;
- }
- }
- }
- }
- }
- }
- }
-}
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs
index 75eab0ff56..becc721ecb 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/StatusView.cs
@@ -446,12 +446,17 @@ namespace MonoDevelop.VersionControl.Views
diffRenderer.Reset ();
if (statuses.Count > 0) {
- foreach (VersionInfo n in statuses) {
- if (FileVisible (n)) {
- if (firstLoad)
- changeSet.AddFile (n);
- AppendFileInfo (n);
+ try {
+ filelist.FreezeChildNotify ();
+ foreach (VersionInfo n in statuses) {
+ if (FileVisible (n)) {
+ if (firstLoad)
+ changeSet.AddFile (n);
+ AppendFileInfo (n);
+ }
}
+ } finally {
+ filelist.ThawChildNotify ();
}
}
UpdateControlStatus ();
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs
index 0db51e582f..3b37dd72b3 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/MonoDevelop.VersionControl.Dialogs.CommitDialog.cs
@@ -82,8 +82,6 @@ namespace MonoDevelop.VersionControl.Dialogs
global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.mainBox [this.scrolledwindow2]));
w7.PackType = ((global::Gtk.PackType)(1));
w7.Position = 3;
- w7.Expand = false;
- w7.Fill = false;
// Container child mainBox.Gtk.Box+BoxChild
this.label2 = new global::Gtk.Label ();
this.label2.Name = "label2";
diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic
index 1a570cd459..6d4283d615 100644
--- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic
+++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/gtk-gui/gui.stetic
@@ -1131,9 +1131,7 @@
<packing>
<property name="PackType">End</property>
<property name="Position">3</property>
- <property name="AutoSize">False</property>
- <property name="Expand">False</property>
- <property name="Fill">False</property>
+ <property name="AutoSize">True</property>
</packing>
</child>
<child>
diff --git a/main/src/core/Mono.Debugging/Mono.Debugging.Client/DebuggerSessionOptions.cs b/main/src/core/Mono.Debugging/Mono.Debugging.Client/DebuggerSessionOptions.cs
index 5993a61f71..695d0093a5 100644
--- a/main/src/core/Mono.Debugging/Mono.Debugging.Client/DebuggerSessionOptions.cs
+++ b/main/src/core/Mono.Debugging/Mono.Debugging.Client/DebuggerSessionOptions.cs
@@ -32,6 +32,7 @@ namespace Mono.Debugging.Client
public class DebuggerSessionOptions
{
public EvaluationOptions EvaluationOptions { get; set; }
+ public bool StepOverPropertiesAndOperators { get; set; }
public bool ProjectAssembliesOnly { get; set; }
}
}
diff --git a/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs b/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs
index 5359cc15cf..ddadf6b18b 100644
--- a/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs
+++ b/main/src/core/Mono.Debugging/Mono.Debugging.Evaluation/ObjectValueAdaptor.cs
@@ -851,7 +851,7 @@ namespace Mono.Debugging.Evaluation
if (ctx.Options.AllowToStringCalls) {
string res = CallToString (ctx, obj);
- if (string.IsNullOrEmpty (res))
+ if (res == null)
return new EvaluationResult ("null");
return new EvaluationResult ("{" + res + "}");
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkAlertDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkAlertDialog.cs
index 8050967734..675a012a3d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkAlertDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/GtkAlertDialog.cs
@@ -74,12 +74,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs
// Table 3.3
this.hbox.Spacing = 12;
this.hbox.BorderWidth = 6;
-
- // Table 3.4
- if (this.image != null)
- this.image.Yalign = 0.00f;
- //this.image.IconSize = Gtk.IconSize.Dialog;
-
+
// Table 3.5
this.label.UseMarkup = true;
this.label.Wrap = true;
@@ -105,6 +100,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs
if (!string.IsNullOrEmpty (message.Icon)) {
image = new Image ();
+ image.Yalign = 0.00f;
image.Pixbuf = ImageService.GetPixbuf (message.Icon, IconSize.Dialog);
hbox.PackStart (image, false, false, 0);
hbox.ReorderChild (image, 0);
@@ -162,8 +158,7 @@ namespace MonoDevelop.Ide.Gui.Dialogs
buttonNumber = ActionArea.Children.Length - 1;
ActionArea.Children[buttonNumber].GrabFocus ();
}
-
-
+
void ButtonClicked (object sender, EventArgs e)
{
Gtk.Button clickButton = (Gtk.Button)sender;
diff --git a/main/src/tools/MacCrashLogger/Makefile.am b/main/src/tools/MacCrashLogger/Makefile.am
index 65c32c8ca2..ea4d04e571 100644
--- a/main/src/tools/MacCrashLogger/Makefile.am
+++ b/main/src/tools/MacCrashLogger/Makefile.am
@@ -27,6 +27,10 @@ BUNDLE_MONOMAC = $(APP_BUNDLE_RESOURCES)/MonoMac.dll
BUNDLE_CRASHLOG = $(APP_BUNDLE_RESOURCES)/MonoDevelop.CrashLog.dll
BUNDLE_MONO = $(APP_BUNDLE)/$(APP_NAME)
+#after upgrading to xcode 4.3, the /usr/bin/ibtool link is broken, so override PATH
+XC43_TOOLS=/Applications/Xcode.app/Contents/Developer/usr/bin
+IBTOOL=PATH='$(XC43_TOOLS):$(PATH)' ibtool
+
INFOPLIST = $(srcdir)/Info.plist
MAINXIB = $(srcdir)/MainMenu.xib
SCRIPT = $(srcdir)/MonoMacLaunchScript.sh
@@ -43,7 +47,7 @@ $(ASSEMBLY): $(build_sources) $(DEPS)
$(BUNDLE_MAINNIB): $(MAINXIB)
mkdir -p $(APP_BUNDLE_RESOURCES)
- ibtool "$^" --compile "$@"
+ $(IBTOOL) "$^" --compile "$@"
$(BUNDLE_INFOPLIST): $(INFOPLIST)
mkdir -p $(APP_BUNDLE_MACOS)