Browse Source

Fixes to get it working again after merge

pull/1016/head
Nikita Tsukanov 9 years ago
parent
commit
abf866cf61
  1. 3
      samples/interop/WindowsInteropTest/EmbedToWpfDemo.xaml.cs
  2. 4
      src/Avalonia.Diagnostics/DevTools.xaml.cs
  3. 10
      src/Avalonia.Layout/IEmbeddedLayoutRoot.cs
  4. 10
      src/Avalonia.Layout/LayoutManager.cs
  5. 4
      src/Windows/Avalonia.Win32.Interop/Wpf/WpfTopLevelImpl.cs

3
samples/interop/WindowsInteropTest/EmbedToWpfDemo.xaml.cs

@ -27,11 +27,12 @@ namespace WindowsInteropTest
{
InitializeComponent();
var view = new MainView();
Host.Content = view;
view.AttachedToVisualTree += delegate
{
view.AttachDevTools();
};
Host.Content = view;
var btn = (Avalonia.Controls.Button) RightBtn.Content;
btn.Click += delegate
{

4
src/Avalonia.Diagnostics/DevTools.xaml.cs

@ -88,9 +88,7 @@ namespace Avalonia.Diagnostics
{
var devToolsWindow = (Window)sender;
var devTools = (DevTools)devToolsWindow.Content;
var window = (Window)devTools.Root;
s_open.Remove(window);
s_open.Remove((TopLevel)devTools.Root);
_keySubscription.Dispose();
devToolsWindow.Closed -= DevToolsClosed;
}

10
src/Avalonia.Layout/IEmbeddedLayoutRoot.cs

@ -0,0 +1,10 @@
namespace Avalonia.Layout
{
/// <summary>
/// A special layout root with enforced size for Arrange pass
/// </summary>
public interface IEmbeddedLayoutRoot : ILayoutRoot
{
Size AllocatedSize { get; }
}
}

10
src/Avalonia.Layout/LayoutManager.cs

@ -186,14 +186,12 @@ namespace Avalonia.Layout
if (!control.IsArrangeValid && control.IsAttachedToVisualTree)
{
if (control is ILayoutRoot root)
{
root.Arrange(new Rect(root.ClientSize));
}
if (control is IEmbeddedLayoutRoot embeddedRoot)
control.Arrange(new Rect(embeddedRoot.AllocatedSize));
else if (control is ILayoutRoot root)
control.Arrange(new Rect(root.DesiredSize));
else
{
control.Arrange(control.PreviousArrange.Value);
}
}
}

4
src/Windows/Avalonia.Win32.Interop/Wpf/WpfTopLevelImpl.cs

@ -33,7 +33,7 @@ namespace Avalonia.Win32.Interop.Wpf
public EmbeddableControlRoot ControlRoot { get; }
internal ImageSource ImageSource { get; set; }
public class CustomControlRoot : EmbeddableControlRoot
public class CustomControlRoot : EmbeddableControlRoot, IEmbeddedLayoutRoot
{
public CustomControlRoot(WpfTopLevelImpl impl) : base(impl)
{
@ -52,6 +52,8 @@ namespace Avalonia.Win32.Interop.Wpf
LayoutManager.Instance.ExecuteLayoutPass();
Renderer?.Resized(clientSize);
}
public Size AllocatedSize => ClientSize;
}
public WpfTopLevelImpl()

Loading…
Cancel
Save