diff --git a/Greenshot/Drawing/TextContainer.cs b/Greenshot/Drawing/TextContainer.cs
index 1a6d4655a..4bb5ebdf6 100644
--- a/Greenshot/Drawing/TextContainer.cs
+++ b/Greenshot/Drawing/TextContainer.cs
@@ -247,7 +247,7 @@ namespace Greenshot.Drawing {
rect = GuiRectangle.GetGuiRectangle(Left, Top, Width, Height);
int pixelsAfter = rect.Width * rect.Height;
- float factor = pixelsAfter / pixelsBefore;
+ float factor = pixelsAfter / (float)pixelsBefore;
float fontSize = GetFieldValueAsFloat(FieldType.FONT_SIZE);
fontSize *= factor;
diff --git a/Greenshot/releases/additional_files/readme.txt.template b/Greenshot/releases/additional_files/readme.txt.template
index 10be70420..b962c5edd 100644
--- a/Greenshot/releases/additional_files/readme.txt.template
+++ b/Greenshot/releases/additional_files/readme.txt.template
@@ -9,6 +9,14 @@ All details to our tickets can be found here: https://greenshot.atlassian.net
@DETAILVERSION@
+Bugs Resolved:
+* BUG-1655: Greenshot uses the default proxy, even if the "use default proxy" check-box is not checked.
+* BUG-1730: File type in the Save-As dialog doesn't default to configured output format.
+* BUG-1735: Editor crashed when trying to scale down a screenshot with text element
+
+
+1.2.4.10-RELEASE-94d66e09eb89
+
Bugs Resolved:
* BUG-1724: Error when using "Alt + PrintScreen" after clicking system tray
diff --git a/GreenshotPlugin/Controls/SaveImageFileDialog.cs b/GreenshotPlugin/Controls/SaveImageFileDialog.cs
index c3acb785b..41a4c2d60 100644
--- a/GreenshotPlugin/Controls/SaveImageFileDialog.cs
+++ b/GreenshotPlugin/Controls/SaveImageFileDialog.cs
@@ -90,10 +90,12 @@ namespace GreenshotPlugin.Controls {
prepareFilterOptions();
string fdf = "";
int preselect = 0;
+ var outputFileFormatAsString = Enum.GetName(typeof(OutputFormat), conf.OutputFileFormat);
for(int i=0; i
+
diff --git a/GreenshotPlugin/Interop/COMWrapper.cs b/GreenshotPlugin/Interop/COMWrapper.cs
index 956a79915..3a4f9f8c4 100644
--- a/GreenshotPlugin/Interop/COMWrapper.cs
+++ b/GreenshotPlugin/Interop/COMWrapper.cs
@@ -18,6 +18,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
+
using System;
using System.Reflection;
using System.Runtime.InteropServices;
@@ -49,17 +50,17 @@ namespace Greenshot.Interop {
///
/// Type of the COM object, set on constructor after getting the COM reference
///
- private Type _COMType;
+ private readonly Type _COMType;
///
/// The type of which method calls are intercepted and executed on the COM object.
///
- private Type _InterceptType;
+ private readonly Type _InterceptType;
///
/// The humanly readable target name
///
- private string _TargetName;
+ private readonly string _TargetName;
#endregion
[DllImport("ole32.dll")]
@@ -73,7 +74,7 @@ namespace Greenshot.Interop {
///
/// Gets a COM object and returns the transparent proxy which intercepts all calls to the object
///
- /// Interface which defines the method and properties to intercept
+ /// Interface which defines the method and properties to intercept
/// Transparent proxy to the real proxy for the object
/// The must be an interface decorated with the attribute.
public static T GetInstance() {
@@ -183,6 +184,7 @@ namespace Greenshot.Interop {
}
} catch (Exception e) {
LOG.WarnFormat("Error {1} creating object for {0}", progId, e.Message);
+ throw;
}
}
if (comObject != null) {
@@ -290,6 +292,25 @@ namespace Greenshot.Interop {
return default(T);
}
+ ///
+ /// Wrap a com object as COMWrapper
+ ///
+ /// An object to intercept
+ /// Interface which defines the method and properties to intercept
+ /// Transparent proxy to the real proxy for the object
+ public static T Wrap(object comObject) {
+ Type type = typeof (T);
+ if (null == comObject) {
+ throw new ArgumentNullException("comObject");
+ }
+ if (null == type) {
+ throw new ArgumentNullException("type");
+ }
+
+ COMWrapper wrapper = new COMWrapper(comObject, type, type.FullName);
+ return (T)wrapper.GetTransparentProxy();
+ }
+
///
/// Wrap an object and return the transparent proxy which intercepts all calls to the object
///
diff --git a/GreenshotPlugin/Interop/IDispatch.cs b/GreenshotPlugin/Interop/IDispatch.cs
index a9f53a6c0..db8139b52 100644
--- a/GreenshotPlugin/Interop/IDispatch.cs
+++ b/GreenshotPlugin/Interop/IDispatch.cs
@@ -1,14 +1,44 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2014 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/greenshot/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+using System;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.CustomMarshalers;
+
namespace Greenshot.Interop {
- [ComImport, Guid("00020400-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
- public interface IDispatch {
- void Reserved();
+ [ComImport, Guid("00020400-0000-0000-C000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsDual)]
+ public interface IDispatch : IUnknown {
[PreserveSig]
- int GetTypeInfo(uint nInfo, int lcid, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(TypeToTypeInfoMarshaler))] out Type typeInfo);
+ int GetTypeInfoCount(out int count);
+
+ [PreserveSig]
+ int GetTypeInfo([MarshalAs(UnmanagedType.U4)] int iTInfo, [MarshalAs(UnmanagedType.U4)] int lcid, [MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(TypeToTypeInfoMarshaler))] out Type typeInfo);
+
+ [PreserveSig]
+ int GetIDsOfNames(ref Guid riid, [MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.LPWStr)]
+ string[] rgsNames, int cNames, int lcid, [MarshalAs(UnmanagedType.LPArray)] int[] rgDispId);
+
+ [PreserveSig]
+ int Invoke(int dispIdMember, ref Guid riid, uint lcid, ushort wFlags, ref System.Runtime.InteropServices.ComTypes.DISPPARAMS pDispParams,
+ out object pVarResult, ref System.Runtime.InteropServices.ComTypes.EXCEPINFO pExcepInfo, IntPtr[] pArgErr);
}
}
diff --git a/GreenshotPlugin/Interop/IOleWindow.cs b/GreenshotPlugin/Interop/IOleWindow.cs
index b71b52b5c..f08150497 100644
--- a/GreenshotPlugin/Interop/IOleWindow.cs
+++ b/GreenshotPlugin/Interop/IOleWindow.cs
@@ -18,6 +18,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
+
using System;
using System.Runtime.InteropServices;
diff --git a/GreenshotPlugin/Interop/IUnknown.cs b/GreenshotPlugin/Interop/IUnknown.cs
new file mode 100644
index 000000000..1974ce5cd
--- /dev/null
+++ b/GreenshotPlugin/Interop/IUnknown.cs
@@ -0,0 +1,36 @@
+/*
+ * Greenshot - a free and open source screenshot tool
+ * Copyright (C) 2007-2014 Thomas Braun, Jens Klingen, Robin Krom
+ *
+ * For more information see: http://getgreenshot.org/
+ * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/greenshot/
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Greenshot.Interop {
+ [ComImport, InterfaceType(ComInterfaceType.InterfaceIsIUnknown), Guid("00000000-0000-0000-C000-000000000046")]
+ public interface IUnknown {
+ IntPtr QueryInterface(ref Guid riid);
+
+ [PreserveSig]
+ UInt32 AddRef();
+
+ [PreserveSig]
+ UInt32 Release();
+ }
+}