From 18a03991360d7231ec34604bb84bdedf13b70b93 Mon Sep 17 00:00:00 2001 From: Robin Date: Thu, 7 Jun 2018 12:01:06 +0200 Subject: [PATCH] Small fixes for the clipboard usage, also fixed an autofac issue. --- src/Greenshot.Addon.Box/BoxDestination.cs | 3 ++- .../DropboxDestination.cs | 3 ++- .../ExternalCommandDestination.cs | 3 ++- .../FlickrDestination.cs | 3 ++- .../GooglePhotosDestination.cs | 3 ++- src/Greenshot.Addon.Imgur/ImgurDestination.cs | 1 + .../ViewModels/ImgurHistoryViewModel.cs | 1 + src/Greenshot.Addon.Lutim/LutimDestination.cs | 1 + .../ViewModels/LutimHistoryViewModel.cs | 1 + .../OneDriveDestination.cs | 1 + src/Greenshot.Addon.Tfs/TfsDestination.cs | 1 + .../Win10OcrDestination.cs | 3 ++- .../Controls/AnimatingForm.cs | 8 +++---- src/Greenshot.Addons/Core/ImageOutput.cs | 1 + .../Destinations/ClipboardDestination.cs | 7 ++++++- src/Greenshot/Forms/AboutForm.cs | 21 ++++++++++++------- src/Greenshot/Forms/MainForm.cs | 6 +++++- src/Greenshot/GreenshotAutofacModule.cs | 1 + 18 files changed, 48 insertions(+), 20 deletions(-) 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