support for .NET framework 3.5
Still have bugs
This commit is contained in:
1 parent
5878039e21
commit
7d6b491f25
704 files changed
+48273
-33
No files matched your search
@@ -0,0 +1,211 @@
|
||||
namespace Microsoft.Windows.Shell
|
||||
{
|
||||
using Standard;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
public class WindowChrome : Freezable
|
||||
{
|
||||
private static readonly List<_SystemParameterBoundProperty> _BoundProperties;
|
||||
public static readonly DependencyProperty CaptionHeightProperty;
|
||||
public static readonly DependencyProperty CornerRadiusProperty;
|
||||
public static readonly DependencyProperty GlassFrameThicknessProperty;
|
||||
public static readonly DependencyProperty IsHitTestVisibleInChromeProperty = DependencyProperty.RegisterAttached("IsHitTestVisibleInChrome", typeof(bool), typeof(WindowChrome), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.Inherits));
|
||||
public static readonly DependencyProperty ResizeBorderThicknessProperty;
|
||||
public static readonly DependencyProperty WindowChromeProperty = DependencyProperty.RegisterAttached("WindowChrome", typeof(WindowChrome), typeof(WindowChrome), new PropertyMetadata(null, new PropertyChangedCallback(WindowChrome._OnChromeChanged)));
|
||||
|
||||
internal event EventHandler PropertyChangedThatRequiresRepaint;
|
||||
|
||||
static WindowChrome()
|
||||
{
|
||||
CaptionHeightProperty = DependencyProperty.Register("CaptionHeight", typeof(double), typeof(WindowChrome), new PropertyMetadata(0.0, (d, e) => ((WindowChrome) d)._OnPropertyChangedThatRequiresRepaint()), value => ((double) value) >= 0.0);
|
||||
ResizeBorderThicknessProperty = DependencyProperty.Register("ResizeBorderThickness", typeof(Thickness), typeof(WindowChrome), new PropertyMetadata(new Thickness()), value => Standard.Utility.IsThicknessNonNegative((Thickness) value));
|
||||
GlassFrameThicknessProperty = DependencyProperty.Register("GlassFrameThickness", typeof(Thickness), typeof(WindowChrome), new PropertyMetadata(new Thickness(), (d, e) => ((WindowChrome) d)._OnPropertyChangedThatRequiresRepaint(), (d, o) => _CoerceGlassFrameThickness((Thickness) o)));
|
||||
CornerRadiusProperty = DependencyProperty.Register("CornerRadius", typeof(System.Windows.CornerRadius), typeof(WindowChrome), new PropertyMetadata(new System.Windows.CornerRadius(), (d, e) => ((WindowChrome) d)._OnPropertyChangedThatRequiresRepaint()), value => Standard.Utility.IsCornerRadiusValid((System.Windows.CornerRadius) value));
|
||||
List<_SystemParameterBoundProperty> list = new List<_SystemParameterBoundProperty>();
|
||||
_SystemParameterBoundProperty item = new _SystemParameterBoundProperty {
|
||||
DependencyProperty = CornerRadiusProperty,
|
||||
SystemParameterPropertyName = "WindowCornerRadius"
|
||||
};
|
||||
list.Add(item);
|
||||
_SystemParameterBoundProperty property2 = new _SystemParameterBoundProperty {
|
||||
DependencyProperty = CaptionHeightProperty,
|
||||
SystemParameterPropertyName = "WindowCaptionHeight"
|
||||
};
|
||||
list.Add(property2);
|
||||
_SystemParameterBoundProperty property3 = new _SystemParameterBoundProperty {
|
||||
DependencyProperty = ResizeBorderThicknessProperty,
|
||||
SystemParameterPropertyName = "WindowResizeBorderThickness"
|
||||
};
|
||||
list.Add(property3);
|
||||
_SystemParameterBoundProperty property4 = new _SystemParameterBoundProperty {
|
||||
DependencyProperty = GlassFrameThicknessProperty,
|
||||
SystemParameterPropertyName = "WindowNonClientFrameThickness"
|
||||
};
|
||||
list.Add(property4);
|
||||
_BoundProperties = list;
|
||||
}
|
||||
|
||||
public WindowChrome()
|
||||
{
|
||||
foreach (_SystemParameterBoundProperty property in _BoundProperties)
|
||||
{
|
||||
Binding binding = new Binding {
|
||||
Source = SystemParameters2.Current,
|
||||
Path = new PropertyPath(property.SystemParameterPropertyName, new object[0]),
|
||||
Mode = BindingMode.OneWay,
|
||||
UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
|
||||
};
|
||||
BindingOperations.SetBinding(this, property.DependencyProperty, binding);
|
||||
}
|
||||
}
|
||||
|
||||
private static object _CoerceGlassFrameThickness(Thickness thickness)
|
||||
{
|
||||
if (!Standard.Utility.IsThicknessNonNegative(thickness))
|
||||
{
|
||||
return GlassFrameCompleteThickness;
|
||||
}
|
||||
return thickness;
|
||||
}
|
||||
|
||||
private static void _OnChromeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (!DesignerProperties.GetIsInDesignMode(d))
|
||||
{
|
||||
Window window = (Window) d;
|
||||
WindowChrome newValue = (WindowChrome) e.NewValue;
|
||||
WindowChromeWorker windowChromeWorker = WindowChromeWorker.GetWindowChromeWorker(window);
|
||||
if (windowChromeWorker == null)
|
||||
{
|
||||
windowChromeWorker = new WindowChromeWorker();
|
||||
WindowChromeWorker.SetWindowChromeWorker(window, windowChromeWorker);
|
||||
}
|
||||
windowChromeWorker.SetWindowChrome(newValue);
|
||||
}
|
||||
}
|
||||
|
||||
private void _OnPropertyChangedThatRequiresRepaint()
|
||||
{
|
||||
EventHandler propertyChangedThatRequiresRepaint = this.PropertyChangedThatRequiresRepaint;
|
||||
if (propertyChangedThatRequiresRepaint != null)
|
||||
{
|
||||
propertyChangedThatRequiresRepaint(this, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
|
||||
protected override Freezable CreateInstanceCore()
|
||||
{
|
||||
return new WindowChrome();
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters"), SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId="0")]
|
||||
public static bool GetIsHitTestVisibleInChrome(IInputElement inputElement)
|
||||
{
|
||||
Standard.Verify.IsNotNull<IInputElement>(inputElement, "inputElement");
|
||||
DependencyObject obj2 = inputElement as DependencyObject;
|
||||
if (obj2 == null)
|
||||
{
|
||||
throw new ArgumentException("The element must be a DependencyObject", "inputElement");
|
||||
}
|
||||
return (bool) obj2.GetValue(IsHitTestVisibleInChromeProperty);
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters"), SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId="0")]
|
||||
public static WindowChrome GetWindowChrome(Window window)
|
||||
{
|
||||
Standard.Verify.IsNotNull<Window>(window, "window");
|
||||
return (WindowChrome) window.GetValue(WindowChromeProperty);
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters"), SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId="0")]
|
||||
public static void SetIsHitTestVisibleInChrome(IInputElement inputElement, bool hitTestVisible)
|
||||
{
|
||||
Standard.Verify.IsNotNull<IInputElement>(inputElement, "inputElement");
|
||||
DependencyObject obj2 = inputElement as DependencyObject;
|
||||
if (obj2 == null)
|
||||
{
|
||||
throw new ArgumentException("The element must be a DependencyObject", "inputElement");
|
||||
}
|
||||
obj2.SetValue(IsHitTestVisibleInChromeProperty, hitTestVisible);
|
||||
}
|
||||
|
||||
[SuppressMessage("Microsoft.Design", "CA1011:ConsiderPassingBaseTypesAsParameters"), SuppressMessage("Microsoft.Design", "CA1062:Validate arguments of public methods", MessageId="0")]
|
||||
public static void SetWindowChrome(Window window, WindowChrome chrome)
|
||||
{
|
||||
Standard.Verify.IsNotNull<Window>(window, "window");
|
||||
window.SetValue(WindowChromeProperty, chrome);
|
||||
}
|
||||
|
||||
public double CaptionHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
return (double) base.GetValue(CaptionHeightProperty);
|
||||
}
|
||||
set
|
||||
{
|
||||
base.SetValue(CaptionHeightProperty, value);
|
||||
}
|
||||
}
|
||||
|
||||
public System.Windows.CornerRadius CornerRadius
|
||||
{
|
||||
get
|
||||
{
|
||||
return (System.Windows.CornerRadius) base.GetValue(CornerRadiusProperty);
|
||||
}
|
||||
set
|
||||
{
|
||||
base.SetValue(CornerRadiusProperty, value);
|
||||
}
|
||||
}
|
||||
|
||||
public static Thickness GlassFrameCompleteThickness
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Thickness(-1.0);
|
||||
}
|
||||
}
|
||||
|
||||
public Thickness GlassFrameThickness
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Thickness) base.GetValue(GlassFrameThicknessProperty);
|
||||
}
|
||||
set
|
||||
{
|
||||
base.SetValue(GlassFrameThicknessProperty, value);
|
||||
}
|
||||
}
|
||||
|
||||
public Thickness ResizeBorderThickness
|
||||
{
|
||||
get
|
||||
{
|
||||
return (Thickness) base.GetValue(ResizeBorderThicknessProperty);
|
||||
}
|
||||
set
|
||||
{
|
||||
base.SetValue(ResizeBorderThicknessProperty, value);
|
||||
}
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
private struct _SystemParameterBoundProperty
|
||||
{
|
||||
public string SystemParameterPropertyName { get; set; }
|
||||
public System.Windows.DependencyProperty DependencyProperty { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user