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:
authorAlan McGovern <alan@xamarin.com>2015-09-18 17:58:27 +0300
committerAlan McGovern <alan@xamarin.com>2015-09-18 17:58:27 +0300
commit1b2f467a7c2fb40b4acb289257259cc8739b8114 (patch)
tree518cb71eb7daabbc9435fb1d9bd5d5061ebbd851
parent8e30c22af0832fc74a6b0e1590545dd85cb6e49a (diff)
parent14311694f23d8fff0914e0649134cad80113a497 (diff)
Merge remote-tracking branch 'origin/master' into roslynroslyn-preview-1
-rw-r--r--main/Makefile.am7
-rw-r--r--main/build/MacOSX/Makefile.am3
-rw-r--r--main/build/MacOSX/monostub.m10
-rw-r--r--main/build/Makefile.am2
-rw-r--r--main/configure.in7
m---------main/external/debugger-libs0
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs149
-rw-r--r--main/src/addins/MacPlatform/MainToolbar/SelectorView.cs132
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs2
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs2
-rw-r--r--main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs21
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs9
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs4
-rw-r--r--main/tests/UserInterfaceTests/LogMessageValidator.cs9
-rwxr-xr-xversion-checks2
15 files changed, 263 insertions, 96 deletions
diff --git a/main/Makefile.am b/main/Makefile.am
index 4f8c22d2a5..195f502fba 100644
--- a/main/Makefile.am
+++ b/main/Makefile.am
@@ -108,7 +108,14 @@ apidocs:
MD_LAUNCH=$(MD_LAUNCH_SETUP) $(MD_LAUNCH_EXTRA_ENV) UBUNTU_MENUPROXY=0 LIBOVERLAY_SCROLLBAR=0 exec -a "monodevelop" $(RUNTIME)
+if ENABLE_MACPLATFORM
+run: run-bundle
+else
run: run-sgen
+endif
+
+run-bundle: $(PROGRAM)
+ $(MD_LAUNCH_SETUP) $(MD_LAUNCH_EXTRA_ENV) $(MD_BIN_PATH)/MonoDevelop --no-redirect
run-boehm: runmd
diff --git a/main/build/MacOSX/Makefile.am b/main/build/MacOSX/Makefile.am
index 9a31efadb3..d0a71d7be7 100644
--- a/main/build/MacOSX/Makefile.am
+++ b/main/build/MacOSX/Makefile.am
@@ -16,7 +16,7 @@ CLEANFILES = render.exe
#DISTCLEANFILES =
EXTRA_DIST = dmg-bg.png DS_Store Info.plist.in make-dmg-bundle.sh render.cs
-all: app
+all: monostub
render.exe: render.cs
gmcs -r:System.Drawing render.cs
@@ -27,6 +27,7 @@ dmg: render.exe app
monostub: monostub.m $(MONOSTUB_EXTRA_SOURCES)
gcc -Wall -mmacosx-version-min=10.10 -m32 -o $@ $^ -framework AppKit
# gcc -Wall -mmacosx-version-min=10.10 -m32 -o $@ $^ -framework AppKit -isysroot $(SDK_PATH)
+ cp monostub ../bin/MonoDevelop
clean-local:
rm -rf MonoDevelop.app
diff --git a/main/build/MacOSX/monostub.m b/main/build/MacOSX/monostub.m
index b38169814d..212abab0f6 100644
--- a/main/build/MacOSX/monostub.m
+++ b/main/build/MacOSX/monostub.m
@@ -381,6 +381,16 @@ int main (int argc, char **argv)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *binDir = [[NSString alloc] initWithUTF8String: "Contents/Resources/lib/monodevelop/bin"];
+
+ // Check if we are running inside an actual app bundle. If we are not, then assume we're being run
+ // as part of `make run` and then binDir should be '.'
+ NSString *entryExecutable = [[NSString alloc] initWithUTF8String: argv[0]];
+ NSArray *components = [NSArray arrayWithObjects:[entryExecutable stringByDeletingLastPathComponent], @"..", @"..", binDir, nil];
+ NSString *binDirFullPath = [NSString pathWithComponents:components];
+ BOOL isDir = NO;
+ if (![[NSFileManager defaultManager] fileExistsAtPath: binDirFullPath isDirectory: &isDir] || !isDir)
+ binDir = [[NSString alloc] initWithUTF8String: "."];
+
NSString *appDir = [[NSBundle mainBundle] bundlePath];
// can be overridden with plist string MonoMinVersion
NSString *req_mono_version = @"3.10";
diff --git a/main/build/Makefile.am b/main/build/Makefile.am
index 9217be1a33..b8863d3775 100644
--- a/main/build/Makefile.am
+++ b/main/build/Makefile.am
@@ -1,5 +1,5 @@
-if ENABLE_MACBUNDLE
+if ENABLE_MACPLATFORM
SUBDIRS = MacOSX
else
diff --git a/main/configure.in b/main/configure.in
index a9371febc3..5f99604a45 100644
--- a/main/configure.in
+++ b/main/configure.in
@@ -213,13 +213,6 @@ fi
AM_CONDITIONAL(ENABLE_MACPLATFORM, [test x$enable_macplatform = xyes])
-# Mac bundle
-AC_ARG_ENABLE(macbundle,
- AC_HELP_STRING([--enable-macbundle],
- [enable Mac bundle packaging [default=no]]),
- enable_macbundle=${enableval}, enable_macbundle=no)
-AM_CONDITIONAL(ENABLE_MACBUNDLE, [test x$enable_macbundle = xyes])
-
# Windows platform addin
AC_ARG_ENABLE(windowsplatform,
AC_HELP_STRING([--enable-windowsplatform],
diff --git a/main/external/debugger-libs b/main/external/debugger-libs
-Subproject 195001e4676f1a99066b6b50616f803da93ae8a
+Subproject a129a42bcdd0f978fbc911b696d323f6911d600
diff --git a/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs b/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
index ff5e092854..0f736344e7 100644
--- a/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/MainToolbar.cs
@@ -33,6 +33,7 @@ using AppKit;
using CoreGraphics;
using Foundation;
using MonoDevelop.Ide;
+using Xwt;
namespace MonoDevelop.MacIntegration.MainToolbar
{
@@ -66,6 +67,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
}
int selectorIdx;
+ SelectorView selector {
+ get { return (SelectorView)widget.Items[selectorIdx].View; }
+ }
+
SelectorView.PathSelectorView selectorView {
get { return (SelectorView.PathSelectorView)widget.Items[selectorIdx].View.Subviews [0]; }
}
@@ -96,6 +101,35 @@ namespace MonoDevelop.MacIntegration.MainToolbar
return item;
}
+ OverflowInfoEventArgs FillOverflowInfo (OverflowInfoEventArgs e)
+ {
+ var visibleItems = widget.VisibleItems;
+ var allItems = widget.Items;
+
+ e.WindowWidth = gtkWindow.Allocation.Width;
+ foreach (var iter in allItems) {
+ e.AllItemsWidth += iter.MinSize.Width;
+ if (!visibleItems.Contains (iter))
+ e.ItemsInOverflowWidth += iter.MinSize.Width;
+ }
+ // Add spacings.
+ nfloat spacing = (allItems.Length - 1) * 16;
+ e.AllItemsWidth += spacing;
+
+ return e;
+ }
+
+ bool IsCorrectNotification (NSView view, NSObject notifObject)
+ {
+ var window = selector.Window;
+
+ // Skip updates with a null Window. Only crashes on Mavericks.
+ // The View gets updated once again when the window resize finishes.
+ // We're getting notified about all windows in the application (for example, NSPopovers) that change size when really we only care about
+ // the window the bar is in.
+ return window != null && notifObject == window;
+ }
+
NSToolbarItem CreateSelectorToolbarItem ()
{
var selector = new SelectorView ();
@@ -109,6 +143,43 @@ namespace MonoDevelop.MacIntegration.MainToolbar
item.MinSize = item.MaxSize = e.Size;
centeringSpace.UpdateWidth ();
};
+ selector.OverflowInfoRequested += (o, e) => {
+ FillOverflowInfo (e);
+ };
+
+ IDisposable resizeTimer = null;
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.WillStartLiveResizeNotification, notif => DispatchService.GuiDispatch (() => {
+ if (!IsCorrectNotification (selector, notif.Object))
+ return;
+
+ if (resizeTimer != null)
+ resizeTimer.Dispose ();
+
+ resizeTimer = Application.TimeoutInvoke (100, () => {
+ if (widget.Items.Length != widget.VisibleItems.Length)
+ selector.RequestResize ();
+ return true;
+ });
+ }));
+
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidResizeNotification, notif => DispatchService.GuiDispatch (() => {
+ if (!IsCorrectNotification (selector, notif.Object))
+ return;
+
+ // Don't check difference in overflow menus. This could cause issues since we're doing resizing of widgets and the views might go in front
+ // or behind while we're doing the resize request.
+ selector.RequestResize ();
+ }));
+
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidEndLiveResizeNotification, notif => DispatchService.GuiDispatch (() => {
+ if (!IsCorrectNotification (selector, notif.Object))
+ return;
+
+ if (resizeTimer != null)
+ resizeTimer.Dispose ();
+
+ resizeTimer = Application.TimeoutInvoke (300, selector.RequestResize);
+ }));
var pathSelector = (SelectorView.PathSelectorView)selector.Subviews [0];
pathSelector.ConfigurationChanged += (sender, e) => {
@@ -143,6 +214,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
nfloat resize = 6 + 33 * bar.SegmentCount;
item.MinSize = new CGSize (resize, bar.FittingSize.Height);
item.MaxSize = new CGSize (resize, bar.FittingSize.Height);
+ selector.RequestResize ();
centeringSpace.UpdateWidth ();
};
return item;
@@ -181,15 +253,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
bar.GainedFocus += (o, e) => IdeApp.Workbench.RootWindow.Focus = null;
viewCache.Add (bar);
- var menuBar = new SearchBar {
- Frame = new CGRect (0, 0, 180, bar.FittingSize.Height),
- };
var item = new NSToolbarItem (SearchBarId) {
View = bar,
- MenuFormRepresentation = new NSMenuItem {
- View = menuBar,
- },
- MinSize = new CGSize (180, bar.FittingSize.Height),
+ MinSize = new CGSize (150, bar.FittingSize.Height),
MaxSize = new CGSize (270, bar.FittingSize.Height),
};
AttachToolbarEvents (bar);
@@ -207,7 +273,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
MaxSize = new CGSize (360, 22),
};
- NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidResizeNotification, notif => DispatchService.GuiDispatch (() => {
+ Action<NSNotification> resizeAction = notif => DispatchService.GuiDispatch (() => {
// Skip updates with a null Window. Only crashes on Mavericks.
// The View gets updated once again when the window resize finishes.
if (bar.Window == null)
@@ -220,10 +286,13 @@ namespace MonoDevelop.MacIntegration.MainToolbar
double maxSize = Math.Round (bar.Window.Frame.Width * 0.30f);
double minSize = Math.Round (bar.Window.Frame.Width * 0.25f);
- item.MinSize = new CGSize ((nfloat)Math.Max (280, minSize), 22);
+ item.MinSize = new CGSize ((nfloat)Math.Max (220, minSize), 22);
item.MaxSize = new CGSize ((nfloat)Math.Min (700, maxSize), 22);
bar.RepositionStatusLayers ();
- }));
+ });
+
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidResizeNotification, resizeAction);
+ NSNotificationCenter.DefaultCenter.AddObserver (NSWindow.DidEndLiveResizeNotification, resizeAction);
return item;
}
@@ -284,32 +353,12 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public event EventHandler SearchEntryResized;
#pragma warning restore 0067
- bool IsSearchEntryInOverflow {
- get { return widget.Items.Length != widget.VisibleItems.Length; }
- }
-
public void FocusSearchBar ()
{
searchEntry.Focus ();
var entry = searchEntry;
- if (!IsSearchEntryInOverflow)
- entry.SelectText (entry);
- else {
- // NSSearchField -> NSToolbarItemViewer -> _NSToolbarClipView -> NSToolbarView -> NSToolbarClippedItemsIndicator
- var clipItem = (NSButton)searchEntry.Superview.Superview.Superview.Subviews [1];
- var sel = new ObjCRuntime.Selector ("_computeMenuForClippedItemsIfNeeded");
- if (!clipItem.RespondsToSelector (sel))
- throw new Exception ("Cocoa selector changed for clipped items menu.");
-
- clipItem.PerformSelector (sel);
- var menu = clipItem.Menu;
- var searchItem = menu.ItemAt (0);
- var searchView = (SearchBar)searchItem.View;
- AttachToolbarEvents (searchView);
- menu.PopUpMenu (menu.ItemAt (0), new CGPoint (0, -5), clipItem);
- searchView.SelectText (searchView);
- }
+ entry.SelectText (entry);
}
List<IButtonBarButton> barItems = new List<IButtonBarButton> ();
@@ -409,44 +458,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
public string SearchText {
get {
- if (!IsSearchEntryInOverflow) {
- return searchEntry.StringValue;
- }
-
- // NSSearchField -> NSToolbarItemViewer -> _NSToolbarClipView -> NSToolbarView -> NSToolbarClippedItemsIndicator
- var clipItem = (NSButton)searchEntry.Superview.Superview.Superview.Subviews [1];
- var sel = new ObjCRuntime.Selector ("_computeMenuForClippedItemsIfNeeded");
- if (!clipItem.RespondsToSelector (sel))
- throw new Exception ("Cocoa selector changed for clipped items menu.");
-
- clipItem.PerformSelector (sel);
-
- var menuBar = (SearchBar)clipItem.Menu.ItemAt (0).View;
- AttachToolbarEvents (menuBar);
- return menuBar.StringValue;
+ return searchEntry.StringValue;
}
set {
- if (!IsSearchEntryInOverflow) {
- searchEntry.StringValue = value;
- return;
- }
-
- // NSSearchField -> NSToolbarItemViewer -> _NSToolbarClipView -> NSToolbarView -> NSToolbarClippedItemsIndicator
- var clipItem = (NSButton)searchEntry.Superview.Superview.Superview.Subviews [1];
- var sel = new ObjCRuntime.Selector ("_computeMenuForClippedItemsIfNeeded");
- if (!clipItem.RespondsToSelector (sel))
- throw new Exception ("Cocoa selector changed for clipped items menu.");
-
- clipItem.PerformSelector (sel);
-
- foreach (NSMenuItem item in clipItem.Menu.ItemArray ()) {
- if (item.View is SearchBar) {
- var menuBar = (SearchBar)item.View;
- AttachToolbarEvents (menuBar);
- menuBar.StringValue = value;
- break;
- }
- }
+ searchEntry.StringValue = value;
}
}
diff --git a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
index a2f3cd79cc..3c4c4fbfc4 100644
--- a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
+++ b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs
@@ -45,10 +45,18 @@ namespace MonoDevelop.MacIntegration.MainToolbar
}
}
+ class OverflowInfoEventArgs : EventArgs
+ {
+ public nfloat WindowWidth { get; set; }
+ public nfloat AllItemsWidth { get; set; }
+ public nfloat ItemsInOverflowWidth { get; set; }
+ }
+
[Register]
class SelectorView : NSButton
{
public event EventHandler<SizeRequestedEventArgs> ResizeRequested;
+ public event EventHandler<OverflowInfoEventArgs> OverflowInfoRequested;
internal const int ConfigurationIdx = 0;
internal const int RuntimeIdx = 1;
@@ -61,28 +69,104 @@ namespace MonoDevelop.MacIntegration.MainToolbar
AddSubview (pathSelectorView);
}
- public override void DrawRect (CGRect dirtyRect)
+ public bool RequestResize ()
{
- var p = (NSPathControl)Subviews [0];
- var size = new CGSize (10 +
- p.PathComponentCells [ConfigurationIdx].CellSize.Width +
- p.PathComponentCells [RuntimeIdx].CellSize.Width + p.Frame.Left,
- Frame.Size.Height);
- if (ResizeRequested != null)
- ResizeRequested (this, new SizeRequestedEventArgs (size));
-
- SetFrameSize (size);
- p.SetFrameSize (size);
- p.SetNeedsDisplay ();
- base.DrawRect (new CGRect (CGPoint.Empty, size));
+ var p = (PathSelectorView)Subviews [0];
+ var overflowInfo = new OverflowInfoEventArgs ();
+ if (OverflowInfoRequested != null)
+ OverflowInfoRequested (this, overflowInfo);
+
+ var size = new CGSize (p.ResizeIfNeeded (overflowInfo), Frame.Height);
+
+ if (size != Frame.Size) {
+ if (ResizeRequested != null)
+ ResizeRequested (this, new SizeRequestedEventArgs (size));
+
+ SetFrameSize (size);
+ p.SetFrameSize (size);
+
+ SetNeedsDisplay ();
+ p.SetNeedsDisplay ();
+ return true;
+ }
+ return false;
+ }
+
+ public override void ViewWillDraw ()
+ {
+ RequestResize ();
+ base.ViewWillDraw ();
}
#region PathSelectorView
[Register]
public class PathSelectorView : NSPathControl
{
+ [Flags]
+ enum CellState
+ {
+ AllHidden = 0x0,
+ RuntimeShown = 0x1,
+ ConfigurationShown = 0x2,
+ AllShown = 0x3,
+ }
+
static readonly string ConfigurationPlaceholder = GettextCatalog.GetString ("Default");
static readonly string RuntimePlaceholder = GettextCatalog.GetString ("Default");
+ CellState state = CellState.AllShown;
+
+ nfloat UpdatePathCellForSize (int idx, nfloat remaining, CellState newStateIfEnoughSize)
+ {
+ var cell = PathComponentCells [idx];
+ string text;
+ if (idx == ConfigurationIdx) {
+ if (ActiveConfiguration != null)
+ text = ActiveConfiguration.DisplayString;
+ else
+ text = ConfigurationPlaceholder;
+ } else {
+ if (ActiveRuntime != null) {
+ using (var mutableModel = ActiveRuntime.GetMutableModel ())
+ text = mutableModel.FullDisplayString;
+ } else
+ text = RuntimePlaceholder;
+ }
+ var size = new NSAttributedString (text, new NSStringAttributes { Font = cell.Font }).Size.Width + 20;
+ if (size < remaining) {
+ state |= newStateIfEnoughSize;
+ UpdatePathText (idx, text);
+ }
+ return remaining - size;
+ }
+
+ internal nfloat ResizeIfNeeded (OverflowInfoEventArgs args)
+ {
+ var remaining = args.WindowWidth - args.AllItemsWidth;
+ if (remaining < 0 || args.ItemsInOverflowWidth > 0) {
+ var cell = PathComponentCells [RuntimeIdx];
+ var size = new NSAttributedString (cell.Title, new NSStringAttributes { Font = cell.Font }).Size.Width;
+ remaining += size;
+ args.ItemsInOverflowWidth -= size;
+ if ((state & CellState.RuntimeShown) != 0) {
+ state &= ~CellState.RuntimeShown;
+ UpdatePathText (RuntimeIdx, string.Empty);
+ }
+ if ((remaining < 0 || args.ItemsInOverflowWidth > 0) && (state & CellState.ConfigurationShown) != 0) {
+ state &= ~CellState.ConfigurationShown;
+ UpdatePathText (ConfigurationIdx, string.Empty);
+ }
+ } else {
+ remaining = remaining - args.ItemsInOverflowWidth;
+ if ((state & CellState.ConfigurationShown) == 0)
+ remaining = UpdatePathCellForSize (ConfigurationIdx, remaining, CellState.ConfigurationShown);
+ if ((state & CellState.RuntimeShown) == 0)
+ UpdatePathCellForSize (RuntimeIdx, remaining, CellState.RuntimeShown);
+ }
+
+ return 10 +
+ PathComponentCells [ConfigurationIdx].CellSize.Width +
+ PathComponentCells [RuntimeIdx].CellSize.Width + Frame.Left;
+ }
NSMenu CreateSubMenuForRuntime (IRuntimeModel runtime)
{
@@ -184,6 +268,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
Font = NSFont.MenuFontOfSize (12),
};
if (object.ReferenceEquals (ClickedPathComponentCell, PathComponentCells [ConfigurationIdx])) {
+ if (ActiveConfiguration == null)
+ return;
+
foreach (var configuration in ConfigurationModel) {
if (idx == -1 && configuration.OriginalId == ActiveConfiguration.OriginalId)
idx = i;
@@ -201,6 +288,9 @@ namespace MonoDevelop.MacIntegration.MainToolbar
++i;
}
} else if (object.ReferenceEquals (ClickedPathComponentCell, PathComponentCells [RuntimeIdx])) {
+ if (ActiveRuntime == null)
+ return;
+
using (var activeMutableModel = ActiveRuntime.GetMutableModel ()) {
foreach (var runtime in RuntimeModel) {
using (var mutableModel = runtime.GetMutableModel ()) {
@@ -254,7 +344,8 @@ namespace MonoDevelop.MacIntegration.MainToolbar
void UpdatePathText (int idx, string text)
{
- PathComponentCells [idx].Title = text;
+ bool showText = (idx == ConfigurationIdx && (state & CellState.ConfigurationShown) != 0) || (idx == RuntimeIdx && (state & CellState.RuntimeShown) != 0);
+ PathComponentCells [idx].Title = showText ? text : "\u00A0";
PathComponentCells [ConfigurationIdx].Image = ImageService.GetIcon ("project").ToNSImage ();
PathComponentCells [RuntimeIdx].Image = ImageService.GetIcon ("device").ToNSImage ();
@@ -266,6 +357,7 @@ namespace MonoDevelop.MacIntegration.MainToolbar
get { return activeConfiguration; }
set {
activeConfiguration = value;
+ state |= CellState.ConfigurationShown;
UpdatePathText (ConfigurationIdx, value.DisplayString);
}
}
@@ -275,8 +367,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
get { return activeRuntime; }
set {
activeRuntime = value;
- using (var mutableModel = value.GetMutableModel ())
+ using (var mutableModel = value.GetMutableModel ()) {
+ state |= CellState.RuntimeShown;
UpdatePathText (RuntimeIdx, mutableModel.FullDisplayString);
+ }
}
}
@@ -286,8 +380,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
set {
configurationModel = value;
int count = value.Count ();
- if (count == 0)
+ if (count == 0) {
+ state |= CellState.ConfigurationShown;
UpdatePathText (ConfigurationIdx, ConfigurationPlaceholder);
+ }
PathComponentCells [ConfigurationIdx].Enabled = count > 1;
}
}
@@ -298,8 +394,10 @@ namespace MonoDevelop.MacIntegration.MainToolbar
set {
runtimeModel = value;
int count = value.Count ();
- if (count == 0)
+ if (count == 0) {
+ state |= CellState.RuntimeShown;
UpdatePathText (RuntimeIdx, RuntimePlaceholder);
+ }
PathComponentCells [RuntimeIdx].Enabled = count > 1;
}
}
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
index 0fb2f42f16..a17a83ce5d 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPad.cs
@@ -387,6 +387,8 @@ namespace MonoDevelop.Debugger
if (breakpoints != null) {
lock (breakpoints) {
foreach (BreakEvent be in breakpoints.GetBreakevents ()) {
+ if (be.NonUserBreakpoint)
+ continue;
string hitCount = be.HitCountMode != HitCountMode.None ? be.CurrentHitCount.ToString () : "";
string traceExp = (be.HitAction & HitAction.PrintExpression) != HitAction.None ? be.TraceExpression : "";
string traceVal = (be.HitAction & HitAction.PrintExpression) != HitAction.None ? be.LastTraceValue : "";
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
index 742bd9c4b5..1a0e0c06f2 100644
--- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
+++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggingService.cs
@@ -748,6 +748,8 @@ namespace MonoDevelop.Debugger
static void OnTargetEvent (object sender, TargetEventArgs args)
{
+ if (args.BreakEvent != null && args.BreakEvent.NonUserBreakpoint)
+ return;
nextStatementLocations.Clear ();
try {
diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs
index 0a95a9c589..b8d923df82 100644
--- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs
+++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs
@@ -31,16 +31,34 @@ using System.ComponentModel;
using MonoDevelop.Projects;
using MonoDevelop.Core;
using MonoDevelop.Ide;
+using System.Linq;
namespace MonoDevelop.DesignerSupport
{
- class ProjectFileDescriptor: CustomDescriptor
+ class ProjectFileDescriptor: CustomDescriptor, IDisposable
{
ProjectFile file;
public ProjectFileDescriptor (ProjectFile file)
{
this.file = file;
+ file.Project.FilePropertyChangedInProject += OnFilePropertyChangedInProject;
+ }
+
+ void OnFilePropertyChangedInProject (object sender, ProjectFileEventArgs args)
+ {
+ var pad = IdeApp.Workbench.GetPad <PropertyPad> ();
+ if (pad == null)
+ return;
+
+ var grid = ((PropertyPad)pad.Content).PropertyGrid;
+ if (args.Any (arg => arg.ProjectFile == file))
+ grid.Refresh ();
+ }
+
+ void IDisposable.Dispose ()
+ {
+ file.Project.FilePropertyChangedInProject -= OnFilePropertyChangedInProject;
}
[LocalizedCategory ("Misc")]
@@ -71,6 +89,7 @@ namespace MonoDevelop.DesignerSupport
[LocalizedDisplayName ("Build action")]
[LocalizedDescription ("Action to perform when building this file.")]
[TypeConverter (typeof (BuildActionStringsConverter))]
+ [RefreshProperties(RefreshProperties.All)]
public string BuildAction {
get { return file.BuildAction; }
set { file.BuildAction = value; }
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs
index 085c1cba86..6edbd7c063 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AutoTestClientSession.cs
@@ -65,6 +65,15 @@ namespace MonoDevelop.Components.AutoTest
if (file == null) {
var binDir = Path.GetDirectoryName (typeof(AutoTestClientSession).Assembly.Location);
file = Path.Combine (binDir, "MonoDevelop.exe");
+ if (!File.Exists (file)) {
+ file = Path.Combine (binDir, "XamarinStudio.exe");
+ }
+ } else if (!File.Exists (file)) {
+ file = file.Replace ("MonoDevelop.exe", "XamarinStudio.exe");
+ }
+
+ if (!File.Exists (file)) {
+ throw new FileNotFoundException (file);
}
MonoDevelop.Core.Execution.RemotingService.RegisterRemotingChannel ();
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs
index 5f5e6d9e95..b3914cc0ec 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.PropertyGrid/PropertyGrid.cs
@@ -252,6 +252,10 @@ namespace MonoDevelop.Components.PropertyGrid
{
if (this.currentObject == obj)
return;
+ if (this.propertyProviders != null) {
+ foreach (var old in this.propertyProviders.OfType<IDisposable> ())
+ old.Dispose ();
+ }
this.currentObject = obj;
this.propertyProviders = propertyProviders;
UpdateTabs ();
diff --git a/main/tests/UserInterfaceTests/LogMessageValidator.cs b/main/tests/UserInterfaceTests/LogMessageValidator.cs
index 3089c76271..fc2f875f14 100644
--- a/main/tests/UserInterfaceTests/LogMessageValidator.cs
+++ b/main/tests/UserInterfaceTests/LogMessageValidator.cs
@@ -38,7 +38,14 @@ namespace UserInterfaceTests
public static void Validate (string fileName)
{
- var readIdeLog = File.ReadAllText (fileName);
+ string readIdeLog = string.Empty;
+ using (FileStream fileStream = new FileStream (fileName, FileMode.Open,
+ FileAccess.Read, FileShare.ReadWrite)) {
+ using (StreamReader streamReader = new StreamReader (fileStream)) {
+ readIdeLog = streamReader.ReadToEnd ();
+ }
+ }
+
foreach (var error in invalidLogStrings) {
Assert.IsFalse (readIdeLog.Contains (error),
string.Format ("GTK Error detected in Ide.log file:\n\t{0}",error));
diff --git a/version-checks b/version-checks
index be8df640a5..7a6e7405d7 100755
--- a/version-checks
+++ b/version-checks
@@ -17,7 +17,7 @@ DEP[0]=md-addins
DEP_NAME[0]=MDADDINS
DEP_PATH[0]=${top_srcdir}/../md-addins
DEP_MODULE[0]=git@github.com:xamarin/md-addins.git
-DEP_NEEDED_VERSION[0]=82287cf970ad11bf5921ca53253e3e0af80bd048
+DEP_NEEDED_VERSION[0]=09938395efd431a36dc96dbdff1d53a4b8255691
DEP_BRANCH_AND_REMOTE[0]="roslyn origin/roslyn"
# heap-shot