mirror of
https://github.com/greenshot/greenshot
synced 2025-08-14 18:57:28 -07:00
Small fixes before removing the Win10 plugins for the RC1
This commit is contained in:
parent
aea11451cf
commit
667669ca3e
3 changed files with 30 additions and 9 deletions
|
@ -13,6 +13,7 @@
|
|||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
<TargetPlatformVersion>8.1</TargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
|
|
|
@ -25,8 +25,13 @@ using Windows.ApplicationModel.DataTransfer;
|
|||
|
||||
namespace GreenshotWin10Plugin.Native
|
||||
{
|
||||
/// <summary>
|
||||
/// Wraps the interop for calling the ShareUI
|
||||
/// </summary>
|
||||
public class DataTransferManagerHelper
|
||||
{
|
||||
private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(DataTransferManagerHelper));
|
||||
|
||||
private const string DataTransferManagerId = "a5caee9b-8708-49d1-8d36-67d25a8da00c";
|
||||
private readonly IDataTransferManagerInterOp _dataTransferManagerInterOp;
|
||||
private readonly IntPtr _windowHandle;
|
||||
|
@ -48,7 +53,11 @@ namespace GreenshotWin10Plugin.Native
|
|||
_windowHandle = handle;
|
||||
var riid = new Guid(DataTransferManagerId);
|
||||
DataTransferManager dataTransferManager;
|
||||
_dataTransferManagerInterOp.GetForWindow(_windowHandle, riid, out dataTransferManager);
|
||||
var hresult = _dataTransferManagerInterOp.GetForWindow(_windowHandle, riid, out dataTransferManager);
|
||||
if (hresult != 0)
|
||||
{
|
||||
Log.WarnFormat("HResult for GetForWindow: {0}", hresult);
|
||||
}
|
||||
DataTransferManager = dataTransferManager;
|
||||
}
|
||||
|
||||
|
@ -57,7 +66,15 @@ namespace GreenshotWin10Plugin.Native
|
|||
/// </summary>
|
||||
public void ShowShareUi()
|
||||
{
|
||||
_dataTransferManagerInterOp.ShowShareUIForWindow(_windowHandle);
|
||||
var hresult = _dataTransferManagerInterOp.ShowShareUIForWindow(_windowHandle);
|
||||
if (hresult != 0)
|
||||
{
|
||||
Log.WarnFormat("HResult for ShowShareUIForWindow: {0}", hresult);
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.Debug("ShowShareUIForWindow called");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -73,6 +73,7 @@ namespace GreenshotWin10Plugin
|
|||
// Create capture for export
|
||||
ImageOutput.SaveToStream(surface, imageStream, new SurfaceOutputSettings());
|
||||
imageStream.Position = 0;
|
||||
Log.Info("Created RandomAccessStreamReference for the image");
|
||||
var imageRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(imageStream);
|
||||
RandomAccessStreamReference thumbnailRandomAccessStreamReference;
|
||||
RandomAccessStreamReference logoRandomAccessStreamReference;
|
||||
|
@ -85,6 +86,7 @@ namespace GreenshotWin10Plugin
|
|||
ImageOutput.SaveToStream(thumbnail, null, thumbnailStream, new SurfaceOutputSettings());
|
||||
thumbnailStream.Position = 0;
|
||||
thumbnailRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(thumbnailStream);
|
||||
Log.Info("Created RandomAccessStreamReference for the thumbnail");
|
||||
}
|
||||
}
|
||||
// Create logo
|
||||
|
@ -95,13 +97,14 @@ namespace GreenshotWin10Plugin
|
|||
ImageOutput.SaveToStream(logoThumbnail, null, logoStream, new SurfaceOutputSettings());
|
||||
logoStream.Position = 0;
|
||||
logoRandomAccessStreamReference = RandomAccessStreamReference.CreateFromStream(logoStream);
|
||||
Log.Info("Created RandomAccessStreamReference for the logo");
|
||||
}
|
||||
}
|
||||
string applicationName = null;
|
||||
var dataTransferManagerHelper = new DataTransferManagerHelper(handle);
|
||||
dataTransferManagerHelper.DataTransferManager.TargetApplicationChosen += (dtm, args) =>
|
||||
{
|
||||
Log.DebugFormat("Trying to share with {0}", args.ApplicationName);
|
||||
Log.InfoFormat("Trying to share with {0}", args.ApplicationName);
|
||||
applicationName = args.ApplicationName;
|
||||
};
|
||||
var filename = FilenameHelper.GetFilename(OutputFormat.png, captureDetails);
|
||||
|
@ -113,8 +116,8 @@ namespace GreenshotWin10Plugin
|
|||
{
|
||||
using (var deferredStream = streamedFileDataRequest.AsStreamForWrite())
|
||||
{
|
||||
await imageStream.CopyToAsync(deferredStream);
|
||||
await imageStream.FlushAsync();
|
||||
await imageStream.CopyToAsync(deferredStream).ConfigureAwait(false);
|
||||
await imageStream.FlushAsync().ConfigureAwait(false);
|
||||
}
|
||||
// Signal that the stream is ready
|
||||
streamedFileDataRequest.Dispose();
|
||||
|
@ -125,8 +128,8 @@ namespace GreenshotWin10Plugin
|
|||
}
|
||||
// Signal transfer ready to the await down below
|
||||
taskCompletionSource.TrySetResult(applicationName);
|
||||
}, imageRandomAccessStreamReference);
|
||||
|
||||
}, imageRandomAccessStreamReference).AsTask().ConfigureAwait(false);
|
||||
|
||||
dataTransferManagerHelper.DataTransferManager.DataRequested += (sender, args) =>
|
||||
{
|
||||
var deferral = args.Request.GetDeferral();
|
||||
|
@ -143,7 +146,7 @@ namespace GreenshotWin10Plugin
|
|||
dataPackage.Properties.Square30x30Logo = logoRandomAccessStreamReference;
|
||||
dataPackage.Properties.LogoBackgroundColor = Color.FromArgb(0xff, 0x3d, 0x3d, 0x3d);
|
||||
dataPackage.SetStorageItems(new List<IStorageItem> { storageFile });
|
||||
//dataPackage.SetBitmap(imageRandomAccessStreamReference);
|
||||
dataPackage.SetBitmap(imageRandomAccessStreamReference);
|
||||
dataPackage.Destroyed += (dp, o) =>
|
||||
{
|
||||
Log.Debug("Destroyed.");
|
||||
|
@ -151,7 +154,7 @@ namespace GreenshotWin10Plugin
|
|||
deferral.Complete();
|
||||
};
|
||||
dataTransferManagerHelper.ShowShareUi();
|
||||
return await taskCompletionSource.Task;
|
||||
return await taskCompletionSource.Task.ConfigureAwait(false);
|
||||
}
|
||||
}).Result;
|
||||
if (string.IsNullOrWhiteSpace(exportTarget))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue