Browse Source

fix osx managed file dialogs.

pull/2947/head
Dan Walmsley 7 years ago
parent
commit
f56a47ed49
  1. 19
      src/Avalonia.Native/MacOSMountedVolumeInfoProvider.cs

19
src/Avalonia.Native/MacOSMountedVolumeInfoProvider.cs

@ -8,16 +8,16 @@ using Avalonia.Controls.Platform;
namespace Avalonia.Native namespace Avalonia.Native
{ {
internal class WindowsMountedVolumeInfoListener : IDisposable internal class MacOSMountedVolumeInfoListener : IDisposable
{ {
private readonly CompositeDisposable _disposables; private readonly CompositeDisposable _disposables;
private readonly ObservableCollection<MountedVolumeInfo> _targetObs;
private bool _beenDisposed = false; private bool _beenDisposed = false;
private ObservableCollection<MountedVolumeInfo> mountedDrives; private ObservableCollection<MountedVolumeInfo> mountedDrives;
public WindowsMountedVolumeInfoListener(ObservableCollection<MountedVolumeInfo> mountedDrives) public MacOSMountedVolumeInfoListener(ObservableCollection<MountedVolumeInfo> mountedDrives)
{ {
this.mountedDrives = mountedDrives; this.mountedDrives = mountedDrives;
_disposables = new CompositeDisposable(); _disposables = new CompositeDisposable();
var pollTimer = Observable.Interval(TimeSpan.FromSeconds(1)) var pollTimer = Observable.Interval(TimeSpan.FromSeconds(1))
@ -30,7 +30,8 @@ namespace Avalonia.Native
private void Poll(long _) private void Poll(long _)
{ {
var mountVolInfos = Directory.GetDirectories("/Volumes") var mountVolInfos = Directory.GetDirectories("/Volumes/")
.Where(p=> p != null)
.Select(p => new MountedVolumeInfo() .Select(p => new MountedVolumeInfo()
{ {
VolumeLabel = Path.GetFileName(p), VolumeLabel = Path.GetFileName(p),
@ -38,15 +39,15 @@ namespace Avalonia.Native
VolumeSizeBytes = 0 VolumeSizeBytes = 0
}) })
.ToArray(); .ToArray();
if (_targetObs.SequenceEqual(mountVolInfos)) if (mountedDrives.SequenceEqual(mountVolInfos))
return; return;
else else
{ {
_targetObs.Clear(); mountedDrives.Clear();
foreach (var i in mountVolInfos) foreach (var i in mountVolInfos)
_targetObs.Add(i); mountedDrives.Add(i);
} }
} }
@ -72,7 +73,7 @@ namespace Avalonia.Native
public IDisposable Listen(ObservableCollection<MountedVolumeInfo> mountedDrives) public IDisposable Listen(ObservableCollection<MountedVolumeInfo> mountedDrives)
{ {
Contract.Requires<ArgumentNullException>(mountedDrives != null); Contract.Requires<ArgumentNullException>(mountedDrives != null);
return new WindowsMountedVolumeInfoListener(mountedDrives); return new MacOSMountedVolumeInfoListener(mountedDrives);
} }
} }
} }

Loading…
Cancel
Save