diff --git a/src/Greenshot.Addon.Box/BoxDestination.cs b/src/Greenshot.Addon.Box/BoxDestination.cs
index 8b3276320..e46f4994d 100644
--- a/src/Greenshot.Addon.Box/BoxDestination.cs
+++ b/src/Greenshot.Addon.Box/BoxDestination.cs
@@ -153,7 +153,8 @@ namespace Greenshot.Addon.Box
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
- clipboardAccessToken.SetAsUrl(url);
+ clipboardAccessToken.ClearContents();
+ clipboardAccessToken.SetAsUrl(url);
}
}
diff --git a/src/Greenshot.Addon.Dropbox/DropboxDestination.cs b/src/Greenshot.Addon.Dropbox/DropboxDestination.cs
index 59161485f..8b0ca5ae7 100644
--- a/src/Greenshot.Addon.Dropbox/DropboxDestination.cs
+++ b/src/Greenshot.Addon.Dropbox/DropboxDestination.cs
@@ -134,7 +134,8 @@ namespace Greenshot.Addon.Dropbox
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
- clipboardAccessToken.SetAsUrl(uploadUrl);
+ clipboardAccessToken.ClearContents();
+ clipboardAccessToken.SetAsUrl(uploadUrl);
}
}
}
diff --git a/src/Greenshot.Addon.ExternalCommand/ExternalCommandDestination.cs b/src/Greenshot.Addon.ExternalCommand/ExternalCommandDestination.cs
index 495d012cd..6d366cd81 100644
--- a/src/Greenshot.Addon.ExternalCommand/ExternalCommandDestination.cs
+++ b/src/Greenshot.Addon.ExternalCommand/ExternalCommandDestination.cs
@@ -94,7 +94,8 @@ namespace Greenshot.Addon.ExternalCommand
using (var clipboardAccessToken = ClipboardNative.Access())
{
- clipboardAccessToken.SetAsUrl(exportInformation.Uri);
+ clipboardAccessToken.ClearContents();
+ clipboardAccessToken.SetAsUrl(exportInformation.Uri);
}
}
}
diff --git a/src/Greenshot.Addon.Flickr/FlickrDestination.cs b/src/Greenshot.Addon.Flickr/FlickrDestination.cs
index b2a1ac206..2b65d7769 100644
--- a/src/Greenshot.Addon.Flickr/FlickrDestination.cs
+++ b/src/Greenshot.Addon.Flickr/FlickrDestination.cs
@@ -181,7 +181,8 @@ namespace Greenshot.Addon.Flickr
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
- clipboardAccessToken.SetAsUrl(uploadUrl);
+ clipboardAccessToken.ClearContents();
+ clipboardAccessToken.SetAsUrl(uploadUrl);
}
}
diff --git a/src/Greenshot.Addon.GooglePhotos/GooglePhotosDestination.cs b/src/Greenshot.Addon.GooglePhotos/GooglePhotosDestination.cs
index 64cfe6ac0..2727d841e 100644
--- a/src/Greenshot.Addon.GooglePhotos/GooglePhotosDestination.cs
+++ b/src/Greenshot.Addon.GooglePhotos/GooglePhotosDestination.cs
@@ -148,7 +148,8 @@ namespace Greenshot.Addon.GooglePhotos
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
- clipboardAccessToken.SetAsUrl(url);
+ clipboardAccessToken.ClearContents();
+ clipboardAccessToken.SetAsUrl(url);
}
}
return url;
diff --git a/src/Greenshot.Addon.Imgur/ImgurDestination.cs b/src/Greenshot.Addon.Imgur/ImgurDestination.cs
index 59b130f86..0b8752ae4 100644
--- a/src/Greenshot.Addon.Imgur/ImgurDestination.cs
+++ b/src/Greenshot.Addon.Imgur/ImgurDestination.cs
@@ -163,6 +163,7 @@ namespace Greenshot.Addon.Imgur
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
+ clipboardAccessToken.ClearContents();
clipboardAccessToken.SetAsUrl(uploadUrl.AbsoluteUri);
}
}
diff --git a/src/Greenshot.Addon.Imgur/ViewModels/ImgurHistoryViewModel.cs b/src/Greenshot.Addon.Imgur/ViewModels/ImgurHistoryViewModel.cs
index 5e89b1297..28477d9df 100644
--- a/src/Greenshot.Addon.Imgur/ViewModels/ImgurHistoryViewModel.cs
+++ b/src/Greenshot.Addon.Imgur/ViewModels/ImgurHistoryViewModel.cs
@@ -147,6 +147,7 @@ namespace Greenshot.Addon.Imgur.ViewModels
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
+ clipboardAccessToken.ClearContents();
clipboardAccessToken.SetAsUrl(SelectedImgur.Data.Link?.AbsoluteUri);
}
}
diff --git a/src/Greenshot.Addon.Lutim/LutimDestination.cs b/src/Greenshot.Addon.Lutim/LutimDestination.cs
index 3ac98db81..eb15b5b94 100644
--- a/src/Greenshot.Addon.Lutim/LutimDestination.cs
+++ b/src/Greenshot.Addon.Lutim/LutimDestination.cs
@@ -141,6 +141,7 @@ namespace Greenshot.Addon.Lutim {
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
+ clipboardAccessToken.ClearContents();
clipboardAccessToken.SetAsUrl(uploadUrl);
}
}
diff --git a/src/Greenshot.Addon.Lutim/ViewModels/LutimHistoryViewModel.cs b/src/Greenshot.Addon.Lutim/ViewModels/LutimHistoryViewModel.cs
index ae0b48a04..b0fc70f36 100644
--- a/src/Greenshot.Addon.Lutim/ViewModels/LutimHistoryViewModel.cs
+++ b/src/Greenshot.Addon.Lutim/ViewModels/LutimHistoryViewModel.cs
@@ -148,6 +148,7 @@ namespace Greenshot.Addon.Lutim.ViewModels
// TODO: Build url
using (var clipboardAccessToken = ClipboardNative.Access())
{
+ clipboardAccessToken.ClearContents();
clipboardAccessToken.SetAsUrl(SelectedLutim.LutimInfo.Short);
}
}
diff --git a/src/Greenshot.Addon.OneDrive/OneDriveDestination.cs b/src/Greenshot.Addon.OneDrive/OneDriveDestination.cs
index 3fc357c59..842c33288 100644
--- a/src/Greenshot.Addon.OneDrive/OneDriveDestination.cs
+++ b/src/Greenshot.Addon.OneDrive/OneDriveDestination.cs
@@ -180,6 +180,7 @@ namespace Greenshot.Addon.OneDrive
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
+ clipboardAccessToken.ClearContents();
clipboardAccessToken.SetAsUrl(response.AbsoluteUri);
}
}
diff --git a/src/Greenshot.Addon.Tfs/TfsDestination.cs b/src/Greenshot.Addon.Tfs/TfsDestination.cs
index f99e53091..f415269d1 100644
--- a/src/Greenshot.Addon.Tfs/TfsDestination.cs
+++ b/src/Greenshot.Addon.Tfs/TfsDestination.cs
@@ -197,6 +197,7 @@ namespace Greenshot.Addon.Tfs
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
+ clipboardAccessToken.ClearContents();
clipboardAccessToken.SetAsUrl(response.AbsoluteUri);
}
}
diff --git a/src/Greenshot.Addon.Win10/Win10OcrDestination.cs b/src/Greenshot.Addon.Win10/Win10OcrDestination.cs
index 5a5eab590..a3df5b01a 100644
--- a/src/Greenshot.Addon.Win10/Win10OcrDestination.cs
+++ b/src/Greenshot.Addon.Win10/Win10OcrDestination.cs
@@ -98,7 +98,8 @@ namespace Greenshot.Addon.Win10
// Place the OCR text on the clipboard
using (var clipboardAccessToken = ClipboardNative.Access())
{
- clipboardAccessToken.SetAsUnicodeString(text);
+ clipboardAccessToken.ClearContents();
+ clipboardAccessToken.SetAsUnicodeString(text);
}
}
exportInformation.ExportMade = true;
diff --git a/src/Greenshot.Addons/Controls/AnimatingForm.cs b/src/Greenshot.Addons/Controls/AnimatingForm.cs
index ea82bff00..606f9521d 100644
--- a/src/Greenshot.Addons/Controls/AnimatingForm.cs
+++ b/src/Greenshot.Addons/Controls/AnimatingForm.cs
@@ -47,10 +47,10 @@ namespace Greenshot.Addons.Controls
private Timer _timer;
private int _vRefresh;
- ///
- /// Initialize the animation
- ///
- protected AnimatingForm(ICoreConfiguration coreConfiguration, ILanguage language) : base(language)
+ ///
+ /// Initialize the animation
+ ///
+ protected AnimatingForm(ICoreConfiguration coreConfiguration, ILanguage language) : base(language)
{
_coreConfiguration = coreConfiguration;
Load += (sender, args) =>
diff --git a/src/Greenshot.Addons/Core/ImageOutput.cs b/src/Greenshot.Addons/Core/ImageOutput.cs
index d8573153f..1b6783cfd 100644
--- a/src/Greenshot.Addons/Core/ImageOutput.cs
+++ b/src/Greenshot.Addons/Core/ImageOutput.cs
@@ -853,6 +853,7 @@ namespace Greenshot.Addons.Core
{
using (var clipboardAccessToken = ClipboardNative.Access())
{
+ clipboardAccessToken.ClearContents();
// TODO: File??
clipboardAccessToken.SetAsUnicodeString(fullPath);
}
diff --git a/src/Greenshot/Destinations/ClipboardDestination.cs b/src/Greenshot/Destinations/ClipboardDestination.cs
index ace4bb58c..65873480f 100644
--- a/src/Greenshot/Destinations/ClipboardDestination.cs
+++ b/src/Greenshot/Destinations/ClipboardDestination.cs
@@ -66,7 +66,12 @@ namespace Greenshot.Destinations
using (var clipboardAccessToken = ClipboardNative.Access())
{
clipboardAccessToken.ClearContents();
-
+ // TODO: Test if this works
+ if (!string.IsNullOrEmpty(surface.LastSaveFullPath))
+ {
+ clipboardAccessToken.SetAsUnicodeString(surface.LastSaveFullPath);
+ }
+
foreach (var clipboardFormat in CoreConfiguration.ClipboardFormats)
{
switch (clipboardFormat)
diff --git a/src/Greenshot/Forms/AboutForm.cs b/src/Greenshot/Forms/AboutForm.cs
index 9f6f386fe..30006e3da 100644
--- a/src/Greenshot/Forms/AboutForm.cs
+++ b/src/Greenshot/Forms/AboutForm.cs
@@ -32,10 +32,10 @@ using System.Drawing.Imaging;
using System.Reflection;
using System.Security.Permissions;
using System.Windows.Forms;
+using Dapplo.CaliburnMicro;
using Greenshot.Helpers;
using Dapplo.Ini;
using Dapplo.Log;
-using Dapplo.Windows.Dpi;
using Greenshot.Addons;
using Greenshot.Addons.Animation;
using Greenshot.Addons.Controls;
@@ -135,7 +135,11 @@ namespace Greenshot.Forms
///
/// Constructor
///
- public AboutForm(ICoreConfiguration coreConfiguration, IGreenshotLanguage greenshotlanguage) : base(coreConfiguration, greenshotlanguage)
+ public AboutForm(
+ ICoreConfiguration coreConfiguration,
+ IGreenshotLanguage greenshotlanguage,
+ IVersionProvider versionProvider
+ ) : base(coreConfiguration, greenshotlanguage)
{
_greenshotlanguage = greenshotlanguage;
// Make sure our resources are removed again.
@@ -159,13 +163,14 @@ namespace Greenshot.Forms
pictureBox1.Height = FormDpiHandler.ScaleWithCurrentDpi(90);
});
- var v = Assembly.GetExecutingAssembly().GetName().Version;
-
- // Format is like this: AssemblyVersion("Major.Minor.Build.Revision")]
- lblTitle.Text = $"Greenshot {v.Major}.{v.Minor}.{v.Build} Build {v.Revision}{(coreConfiguration.IsPortable ? " Portable" : "")} ({OsInfo.Bits}) bit)";
-
+ var versionInfo = $@"Greenshot {versionProvider.CurrentVersion} {(coreConfiguration.IsPortable ? " Portable" : "")} ({OsInfo.Bits} bit)";
+ if (versionProvider.IsUpdateAvailable)
+ {
+ versionInfo += $" latest is: {versionProvider.LatestVersion}";
+ }
+ lblTitle.Text = versionInfo;
// Number of frames the pixel animation takes
- var frames = FramesForMillis(2000);
+ var frames = FramesForMillis(2000);
// The number of frames the color-cycle waits before it starts
_waitFrames = FramesForMillis(6000);
diff --git a/src/Greenshot/Forms/MainForm.cs b/src/Greenshot/Forms/MainForm.cs
index 23b431ad7..cdb6c3d01 100644
--- a/src/Greenshot/Forms/MainForm.cs
+++ b/src/Greenshot/Forms/MainForm.cs
@@ -44,6 +44,7 @@ using Dapplo.Log;
using Timer = System.Timers.Timer;
using Dapplo.Windows.Dpi;
using Dapplo.Windows.App;
+using Dapplo.Windows.Clipboard;
using Dapplo.Windows.Common.Structs;
using Dapplo.Windows.DesktopWindowsManager;
using Dapplo.Windows.Dpi.Enums;
@@ -477,7 +478,10 @@ namespace Greenshot.Forms
private void ContextMenuOpening(object sender, CancelEventArgs e)
{
- contextmenu_captureclipboard.Enabled = ClipboardHelper.ContainsImage();
+ using (var clipboardAccessToken = ClipboardNative.Access())
+ {
+ contextmenu_captureclipboard.Enabled = clipboardAccessToken.HasImage();
+ }
contextmenu_capturelastregion.Enabled = _coreConfiguration.LastCapturedRegion != NativeRect.Empty;
// IE context menu code
diff --git a/src/Greenshot/GreenshotAutofacModule.cs b/src/Greenshot/GreenshotAutofacModule.cs
index 05933161d..5742a042f 100644
--- a/src/Greenshot/GreenshotAutofacModule.cs
+++ b/src/Greenshot/GreenshotAutofacModule.cs
@@ -95,6 +95,7 @@ namespace Greenshot
.RegisterAssemblyTypes(ThisAssembly)
.AssignableTo()
.As()
+ .AsImplementedInterfaces()
.SingleInstance();
builder