Browse Source

TabStrip rendering again now at least.

pull/4/head
Steven Kirk 12 years ago
parent
commit
4a42a9e692
  1. 16
      Perspex.Controls.UnitTests/ContentControlTests.cs
  2. 11
      Perspex.Controls.UnitTests/ControlTests.cs
  3. 5
      Perspex.Controls/ItemsPresenter.cs
  4. 1
      Perspex.Direct2D1/Direct2D1Platform.cs
  5. 5
      Perspex.SceneGraph.UnitTests/TestVisual.cs
  6. 23
      Perspex.SceneGraph.UnitTests/VisualTests.cs
  7. 2
      Perspex.SceneGraph/Rendering/IRenderManager.cs
  8. 2
      Perspex.SceneGraph/Visual.cs
  9. 13
      Perspex.Windows/Window.cs
  10. 2
      TestApplication/Program.cs
  11. 4
      TestApplication/TestApplication.csproj

16
Perspex.Controls.UnitTests/ContentControlTests.cs

@ -144,14 +144,16 @@ namespace Perspex.Controls.UnitTests
private ControlTemplate GetTemplate()
{
return new ControlTemplate(parent =>
return ControlTemplate.Create<ContentControl>(parent =>
{
Border border = new Border();
border.Background = new Perspex.Media.SolidColorBrush(0xffffffff);
ContentPresenter contentPresenter = new ContentPresenter();
////contentPresenter[~ContentPresenter.ContentProperty] = parent[~ContentPresenter.ContentProperty];
border.Content = contentPresenter;
return border;
return new Border
{
Background = new Perspex.Media.SolidColorBrush(0xffffffff),
Content = new ContentPresenter
{
[~ContentPresenter.ContentProperty] = parent[~ContentControl.ContentProperty],
}
};
});
}
}

11
Perspex.Controls.UnitTests/ControlTests.cs

@ -6,11 +6,13 @@
namespace Perspex.Controls.UnitTests
{
using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using Perspex.Controls;
using Perspex.Layout;
using Perspex.Rendering;
using Perspex.Styling;
using Splat;
@ -26,7 +28,7 @@ namespace Perspex.Controls.UnitTests
}
[TestMethod]
public void Adding_Control_To_ILayoutRoot_Should_Style_Control()
public void Adding_Control_To_IRenderRoot_Should_Style_Control()
{
using (Locator.CurrentMutable.WithResolver())
{
@ -68,7 +70,7 @@ namespace Perspex.Controls.UnitTests
}
}
private class TestRoot : Decorator, ILayoutRoot
private class TestRoot : Decorator, ILayoutRoot, IRenderRoot
{
public Size ClientSize
{
@ -79,6 +81,11 @@ namespace Perspex.Controls.UnitTests
{
get { throw new System.NotImplementedException(); }
}
public IRenderManager RenderManager
{
get { throw new NotImplementedException(); }
}
}
}
}

5
Perspex.Controls/ItemsPresenter.cs

@ -52,6 +52,11 @@ namespace Perspex.Controls
return finalSize;
}
protected override IEnumerable<Visual> CreateVisualChildren()
{
return Enumerable.Repeat(this.GetPanel(), 1);
}
private Control CreateItemControl(object item)
{
ItemsControl i = this.TemplatedParent as ItemsControl;

1
Perspex.Direct2D1/Direct2D1Platform.cs

@ -28,6 +28,7 @@ namespace Perspex.Direct2D1
{
var locator = Locator.CurrentMutable;
locator.Register(() => instance, typeof(IPlatformRenderInterface));
locator.Register(() => textService, typeof(ITextService));
locator.Register(() => d2d1Factory, typeof(SharpDX.Direct2D1.Factory));
locator.Register(() => dwFactory, typeof(SharpDX.DirectWrite.Factory));
locator.Register(() => imagingFactory, typeof(SharpDX.WIC.ImagingFactory));

5
Perspex.SceneGraph.UnitTests/TestVisual.cs

@ -22,6 +22,11 @@ namespace Perspex.SceneGraph.UnitTests
public class TestVisual : Visual
{
public new PerspexObject InheritanceParent
{
get { return base.InheritanceParent; }
}
public Visual[] InitialChildren { get; set; }
public event EventHandler<ParamEventArgs<Visual>> VisualParentChangedCalled;

23
Perspex.SceneGraph.UnitTests/VisualTests.cs

@ -49,6 +49,17 @@ namespace Perspex.SceneGraph.UnitTests
Assert.AreEqual(target, child.GetVisualParent());
}
[TestMethod]
public void Added_Child_Should_Have_InheritanceParent_Set()
{
var target = new TestVisual();
var child = new TestVisual();
target.AddChild(child);
Assert.AreEqual(target, child.InheritanceParent);
}
[TestMethod]
public void Removed_Child_Should_Have_VisualParent_Cleared()
{
@ -61,6 +72,18 @@ namespace Perspex.SceneGraph.UnitTests
Assert.IsNull(child.GetVisualParent());
}
[TestMethod]
public void Removed_Child_Should_Have_InheritanceParent_Cleared()
{
var target = new TestVisual();
var child = new TestVisual();
target.AddChild(child);
target.RemoveChild(child);
Assert.IsNull(child.InheritanceParent);
}
[TestMethod]
public void Clearing_Children_Should_Clear_VisualParent()
{

2
Perspex.SceneGraph/Rendering/IRenderManager.cs

@ -14,5 +14,7 @@ namespace Perspex.Rendering
IObservable<Unit> RenderNeeded { get; }
void InvalidateRender(IVisual visual);
void RenderFinished();
}
}

2
Perspex.SceneGraph/Visual.cs

@ -214,6 +214,7 @@ namespace Perspex
case NotifyCollectionChangedAction.Add:
foreach (Visual v in e.NewItems)
{
v.InheritanceParent = this;
v.SetVisualParent(this);
}
break;
@ -221,6 +222,7 @@ namespace Perspex
case NotifyCollectionChangedAction.Remove:
foreach (Visual v in e.OldItems)
{
v.InheritanceParent = null;
v.SetVisualParent(null);
}
break;

13
Perspex.Windows/Window.cs

@ -35,8 +35,6 @@ namespace Perspex.Windows
private bool layoutPending;
private bool renderPending;
public Window()
{
IPlatformRenderInterface factory = Locator.Current.GetService<IPlatformRenderInterface>();
@ -62,20 +60,15 @@ namespace Perspex.Windows
});
});
this.RenderManager.RenderNeeded.Where(_ => !layoutPending && !renderPending)
this.RenderManager.RenderNeeded.Where(_ => !layoutPending)
.Subscribe(x =>
{
this.renderPending = true;
WindowsDispatcher.CurrentDispatcher.BeginInvoke(
DispatcherPriority.Render,
() =>
{
if (!this.layoutPending)
{
this.renderer.Render(this);
}
this.renderPending = false;
this.renderer.Render(this);
this.RenderManager.RenderFinished();
});
});
}

2
TestApplication/Program.cs

@ -218,6 +218,8 @@ namespace TestApplication
}
};
System.Console.Write(Perspex.Diagnostics.Debug.PrintVisualTree(window));
////var treeView = window.FindControl<TreeView>("treeView");
////var newTreeViewItemText = window.FindControl<TextBox>("newTreeViewItemText");
////var addTreeViewItem = window.FindControl<Button>("addTreeViewItem");

4
TestApplication/TestApplication.csproj

@ -98,6 +98,10 @@
<Project>{d2221c82-4a25-4583-9b43-d791e3f6820c}</Project>
<Name>Perspex.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\Perspex.Diagnostics\Perspex.Diagnostics.csproj">
<Project>{7062ae20-5dcc-4442-9645-8195bdece63e}</Project>
<Name>Perspex.Diagnostics</Name>
</ProjectReference>
<ProjectReference Include="..\Perspex.Direct2D1\Perspex.Direct2D1.csproj">
<Project>{3e908f67-5543-4879-a1dc-08eace79b3cd}</Project>
<Name>Perspex.Direct2D1</Name>

Loading…
Cancel
Save