Browse Source

Merge branch 'feature/ImageScaleMode' of https://github.com/Gillibald/Avalonia into feature/ImageScaleMode

pull/1762/head
Benedikt Schroeder 8 years ago
parent
commit
f071c58f6f
  1. 2
      src/Avalonia.Controls/TextBox.cs
  2. 11
      src/Avalonia.Styling/Styling/Setter.cs
  3. 4
      src/Skia/Avalonia.Skia/DrawingContextImpl.cs
  4. 2
      src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs
  5. 18
      src/Windows/Avalonia.Win32/SystemDialogImpl.cs
  6. 18
      tests/Avalonia.RenderTests/Media/ImageBrushTests.cs
  7. BIN
      tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_NullSource.expected.png
  8. BIN
      tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_NullSource.expected.png

2
src/Avalonia.Controls/TextBox.cs

@ -557,7 +557,7 @@ namespace Avalonia.Controls
var index = CaretIndex = _presenter.GetCaretIndex(point);
var text = Text;
if (text != null)
if (text != null && e.MouseButton == MouseButton.Left)
{
switch (e.ClickCount)
{

11
src/Avalonia.Styling/Styling/Setter.cs

@ -158,18 +158,11 @@ namespace Avalonia.Styling
var activated = new ActivatedObservable(activator, sourceInstance.Observable, description);
return InstancedBinding.OneWay(activated, BindingPriority.StyleTrigger);
}
case BindingMode.OneWayToSource:
{
var activated = new ActivatedSubject(activator, sourceInstance.Subject, description);
return InstancedBinding.OneWayToSource(activated, BindingPriority.StyleTrigger);
}
case BindingMode.TwoWay:
default:
{
var activated = new ActivatedSubject(activator, sourceInstance.Subject, description);
return InstancedBinding.TwoWay(activated, BindingPriority.StyleTrigger);
return new InstancedBinding(activated, sourceInstance.Mode, BindingPriority.StyleTrigger);
}
default:
throw new NotSupportedException("Unsupported BindingMode.");
}
}

4
src/Skia/Avalonia.Skia/DrawingContextImpl.cs

@ -513,6 +513,10 @@ namespace Avalonia.Skia
{
ConfigureTileBrush(ref paintWrapper, targetSize, tileBrush, tileBrushImage);
}
else
{
paint.Color = new SKColor(255, 255, 255, 0);
}
return paintWrapper;
}

2
src/Windows/Avalonia.Direct2D1/Media/DrawingContextImpl.cs

@ -423,7 +423,7 @@ namespace Avalonia.Direct2D1.Media
{
return new RadialGradientBrushImpl(radialGradientBrush, _renderTarget, destinationSize);
}
else if (imageBrush != null)
else if (imageBrush?.Source != null)
{
return new ImageBrushImpl(
imageBrush,

18
src/Windows/Avalonia.Win32/SystemDialogImpl.cs

@ -13,6 +13,9 @@ namespace Avalonia.Win32
class SystemDialogImpl : ISystemDialogImpl
{
private const UnmanagedMethods.FOS DefaultDialogOptions = UnmanagedMethods.FOS.FOS_FORCEFILESYSTEM | UnmanagedMethods.FOS.FOS_NOVALIDATE |
UnmanagedMethods.FOS.FOS_NOTESTFILECREATE | UnmanagedMethods.FOS.FOS_DONTADDTORECENT;
public unsafe Task<string[]> ShowFileDialogAsync(FileDialog dialog, IWindowImpl parent)
{
var hWnd = parent?.Handle?.Handle ?? IntPtr.Zero;
@ -29,7 +32,7 @@ namespace Avalonia.Win32
uint options;
frm.GetOptions(out options);
options |= (uint)(UnmanagedMethods.FOS.FOS_NOVALIDATE | UnmanagedMethods.FOS.FOS_NOTESTFILECREATE | UnmanagedMethods.FOS.FOS_DONTADDTORECENT);
options |= (uint)(DefaultDialogOptions);
if (openDialog?.AllowMultiple == true)
options |= (uint)UnmanagedMethods.FOS.FOS_ALLOWMULTISELECT;
frm.SetOptions(options);
@ -37,13 +40,16 @@ namespace Avalonia.Win32
var defaultExtension = (dialog as SaveFileDialog)?.DefaultExtension ?? "";
frm.SetDefaultExtension(defaultExtension);
frm.SetFileName(dialog.InitialFileName ?? "");
frm.SetTitle(dialog.Title);
frm.SetTitle(dialog.Title ?? "");
var filters = new List<UnmanagedMethods.COMDLG_FILTERSPEC>();
foreach (var filter in dialog.Filters)
if (dialog.Filters != null)
{
var extMask = string.Join(";", filter.Extensions.Select(e => "*." + e));
filters.Add(new UnmanagedMethods.COMDLG_FILTERSPEC { pszName = filter.Name, pszSpec = extMask });
foreach (var filter in dialog.Filters)
{
var extMask = string.Join(";", filter.Extensions.Select(e => "*." + e));
filters.Add(new UnmanagedMethods.COMDLG_FILTERSPEC { pszName = filter.Name, pszSpec = extMask });
}
}
if (filters.Count == 0)
filters.Add(new UnmanagedMethods.COMDLG_FILTERSPEC { pszName = "All files", pszSpec = "*.*" });
@ -106,7 +112,7 @@ namespace Avalonia.Win32
var frm = (UnmanagedMethods.IFileDialog)unk;
uint options;
frm.GetOptions(out options);
options |= (uint)(UnmanagedMethods.FOS.FOS_PICKFOLDERS | UnmanagedMethods.FOS.FOS_FORCEFILESYSTEM | UnmanagedMethods.FOS.FOS_NOVALIDATE | UnmanagedMethods.FOS.FOS_NOTESTFILECREATE | UnmanagedMethods.FOS.FOS_DONTADDTORECENT);
options |= (uint)(UnmanagedMethods.FOS.FOS_PICKFOLDERS | DefaultDialogOptions);
frm.SetOptions(options);
if (dialog.InitialDirectory != null)

18
tests/Avalonia.RenderTests/Media/ImageBrushTests.cs

@ -32,6 +32,24 @@ namespace Avalonia.Direct2D1.RenderTests.Media
get { return System.IO.Path.Combine(OutputPath, "github_icon_small.png"); }
}
[Fact]
public async Task ImageBrush_NullSource()
{
Decorator target = new Decorator
{
Width = 200,
Height = 200,
Child = new Rectangle
{
Margin = new Thickness(8),
Fill = new ImageBrush()
}
};
await RenderToFile(target);
CompareImages();
}
[Fact]
public async Task ImageBrush_Tile_Fill()
{

BIN
tests/TestFiles/Direct2D1/Media/ImageBrush/ImageBrush_NullSource.expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

BIN
tests/TestFiles/Skia/Media/ImageBrush/ImageBrush_NullSource.expected.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Loading…
Cancel
Save