diff --git a/src/Perspex.HtmlRenderer/HtmlControl.cs b/src/Perspex.HtmlRenderer/HtmlControl.cs
index a9f9dc9d9a..87d06a1864 100644
--- a/src/Perspex.HtmlRenderer/HtmlControl.cs
+++ b/src/Perspex.HtmlRenderer/HtmlControl.cs
@@ -56,8 +56,6 @@ namespace Perspex.Controls
public class HtmlControl : Control
{
- #region Fields and Consts
-
///
/// Underline html container instance.
///
@@ -73,11 +71,6 @@ namespace Perspex.Controls
///
protected Point _lastScrollOffset;
- #endregion
-
-
- #region Dependency properties / routed events
-
public static readonly PerspexProperty AvoidImagesLateLoadingProperty =
PropertyHelper.Register("AvoidImagesLateLoading", false, OnPerspexProperty_valueChanged);
public static readonly PerspexProperty IsSelectionEnabledProperty =
@@ -106,19 +99,18 @@ namespace Perspex.Controls
public static readonly RoutedEvent LoadCompleteEvent =
RoutedEvent.Register("LoadComplete", RoutingStrategies.Bubble, typeof(HtmlControl));
public static readonly RoutedEvent LinkClickedEvent =
- RoutedEvent.Register>("LinkClicked", RoutingStrategies.Bubble, typeof(HtmlControl));
+ RoutedEvent.Register>("LinkClicked", RoutingStrategies.Bubble, typeof(HtmlControl));
public static readonly RoutedEvent RenderErrorEvent
- = RoutedEvent.Register>("RenderError", RoutingStrategies.Bubble, typeof(HtmlControl));
+ = RoutedEvent.Register>("RenderError", RoutingStrategies.Bubble, typeof(HtmlControl));
public static readonly RoutedEvent RefreshEvent
- = RoutedEvent.Register< RoutedEventArgsWrapper>("Refresh", RoutingStrategies.Bubble, typeof(HtmlControl));
+ = RoutedEvent.Register>("Refresh", RoutingStrategies.Bubble, typeof(HtmlControl));
public static readonly RoutedEvent StylesheetLoadEvent
- = RoutedEvent.Register>("StylesheetLoad", RoutingStrategies.Bubble, typeof(HtmlControl));
+ = RoutedEvent.Register>("StylesheetLoad", RoutingStrategies.Bubble, typeof(HtmlControl));
public static readonly RoutedEvent ImageLoadEvent
- = RoutedEvent.Register>("ImageLoad", RoutingStrategies.Bubble,
+ = RoutedEvent.Register>("ImageLoad", RoutingStrategies.Bubble,
typeof (HtmlControl));
- #endregion
///
@@ -126,20 +118,20 @@ namespace Perspex.Controls
///
protected HtmlControl()
{
- _htmlContainer = new HtmlContainer();/*
- _htmlContainer.LoadComplete += OnLoadComplete;
- _htmlContainer.LinkClicked += OnLinkClicked;
- _htmlContainer.RenderError += OnRenderError;
- _htmlContainer.Refresh += OnRefresh;
- _htmlContainer.StylesheetLoad += OnStylesheetLoad;
- _htmlContainer.ImageLoad += OnImageLoad;*/
+ _htmlContainer = new HtmlContainer();
+ _htmlContainer.LoadComplete += (_, e) => OnLoadComplete(e);
+ _htmlContainer.LinkClicked += (_, e) => OnLinkClicked(e);
+ _htmlContainer.RenderError += (_, e) => OnRenderError(e);
+ _htmlContainer.Refresh += (_, e) => OnRefresh(e);
+ _htmlContainer.StylesheetLoad += (_, e) => OnStylesheetLoad(e);
+ _htmlContainer.ImageLoad += (_, e) => OnImageLoad(e);
}
///
/// Raised when the set html document has been fully loaded.
/// Allows manipulation of the html dom, scroll position, etc.
///
- public event EventHandler LoadComplete
+ public event EventHandler> LoadComplete
{
add { AddHandler(LoadCompleteEvent, value); }
remove { RemoveHandler(LoadCompleteEvent, value); }
@@ -149,7 +141,7 @@ namespace Perspex.Controls
/// Raised when the user clicks on a link in the html.
/// Allows canceling the execution of the link.
///
- public event EventHandler LinkClicked
+ public event EventHandler> LinkClicked
{
add { AddHandler(LinkClickedEvent, value); }
remove { RemoveHandler(LinkClickedEvent, value); }
@@ -158,7 +150,7 @@ namespace Perspex.Controls
///
/// Raised when an error occurred during html rendering.
///
- public event EventHandler RenderError
+ public event EventHandler> RenderError
{
add { AddHandler(RenderErrorEvent, value); }
remove { RemoveHandler(RenderErrorEvent, value); }
@@ -169,7 +161,7 @@ namespace Perspex.Controls
/// This event allows to provide the stylesheet manually or provide new source (file or uri) to load from.
/// If no alternative data is provided the original source will be used.
///
- public event EventHandler StylesheetLoad
+ public event EventHandler> StylesheetLoad
{
add { AddHandler(StylesheetLoadEvent, value); }
remove { RemoveHandler(StylesheetLoadEvent, value); }
@@ -179,7 +171,7 @@ namespace Perspex.Controls
/// Raised when an image is about to be loaded by file path or URI.
/// This event allows to provide the image manually, if not handled the image will be loaded from file or download from URI.
///
- public event EventHandler ImageLoad
+ public event EventHandler> ImageLoad
{
add { AddHandler(ImageLoadEvent, value); }
remove { RemoveHandler(ImageLoadEvent, value); }
@@ -322,8 +314,7 @@ namespace Perspex.Controls
_htmlContainer.ClearSelection();
}
-
- #region Private methods
+
//HACK: We don't have support for RenderSize for now
private Size RenderSize => new Size(Bounds.Width, Bounds.Height);
@@ -443,50 +434,42 @@ namespace Perspex.Controls
_htmlContainer.HandleKeyDown(this, e);
}
+ void RaiseRouted(RoutedEvent ev, T arg)
+ {
+ var e =new HtmlRendererRoutedEventArgs
+ {
+ Event = arg,
+ Source = this,
+ RoutedEvent = ev,
+ Route = ev.RoutingStrategies
+ };
+ RaiseEvent(e);
+ }
+
///
/// Propagate the LoadComplete event from root container.
///
- protected virtual void OnLoadComplete(EventArgs e)
- {
- //RoutedEventArgs newEventArgs = new RoutedEventArgs(LoadCompleteEvent, this, e);
- //RaiseEvent(newEventArgs);
- }
+ protected virtual void OnLoadComplete(EventArgs e) => RaiseRouted(LoadCompleteEvent, e);
///
/// Propagate the LinkClicked event from root container.
///
- protected virtual void OnLinkClicked(HtmlLinkClickedEventArgs e)
- {
- //RoutedEventArgs newEventArgs = new RoutedEvenArgs(LinkClickedEvent, this, e);
- //RaiseEvent(newEventArgs);
- }
+ protected virtual void OnLinkClicked(HtmlLinkClickedEventArgs e) => RaiseRouted(LinkClickedEvent, e);
///
/// Propagate the Render Error event from root container.
///
- protected virtual void OnRenderError(HtmlRenderErrorEventArgs e)
- {
- //RoutedEventArgs newEventArgs = new RoutedEvenArgs(RenderErrorEvent, this, e);
- //RaiseEvent(newEventArgs);
- }
+ protected virtual void OnRenderError(HtmlRenderErrorEventArgs e) => RaiseRouted(RenderErrorEvent, e);
///
/// Propagate the stylesheet load event from root container.
///
- protected virtual void OnStylesheetLoad(HtmlStylesheetLoadEventArgs e)
- {
- //RoutedEventArgs newEventArgs = new RoutedEvenArgs(StylesheetLoadEvent, this, e);
- //RaiseEvent(newEventArgs);
- }
+ protected virtual void OnStylesheetLoad(HtmlStylesheetLoadEventArgs e) => RaiseRouted(StylesheetLoadEvent, e);
///
/// Propagate the image load event from root container.
///
- protected virtual void OnImageLoad(HtmlImageLoadEventArgs e)
- {
- //RoutedEventArgs newEventArgs = new RoutedEvenArgs(ImageLoadEvent, this, e);
- //RaiseEvent(newEventArgs);
- }
+ protected virtual void OnImageLoad(HtmlImageLoadEventArgs e) => RaiseRouted(ImageLoadEvent, e);
///
/// Handle html renderer invalidate and re-layout as requested.
@@ -526,7 +509,8 @@ namespace Perspex.Controls
///
/// Handle when dependency property value changes to update the underline HtmlContainer with the new value.
///
- private static void OnPerspexProperty_valueChanged(PerspexObject PerspexObject, PerspexPropertyChangedEventArgs e)
+ private static void OnPerspexProperty_valueChanged(PerspexObject PerspexObject,
+ PerspexPropertyChangedEventArgs e)
{
var control = PerspexObject as HtmlControl;
if (control != null)
@@ -534,26 +518,26 @@ namespace Perspex.Controls
var htmlContainer = control._htmlContainer;
if (e.Property == AvoidImagesLateLoadingProperty)
{
- htmlContainer.AvoidImagesLateLoading = (bool)e.NewValue;
+ htmlContainer.AvoidImagesLateLoading = (bool) e.NewValue;
}
else if (e.Property == IsSelectionEnabledProperty)
{
- htmlContainer.IsSelectionEnabled = (bool)e.NewValue;
+ htmlContainer.IsSelectionEnabled = (bool) e.NewValue;
}
else if (e.Property == IsContextMenuEnabledProperty)
{
- htmlContainer.IsContextMenuEnabled = (bool)e.NewValue;
+ htmlContainer.IsContextMenuEnabled = (bool) e.NewValue;
}
else if (e.Property == BaseStylesheetProperty)
{
- var baseCssData = CssData.Parse(PerspexAdapter.Instance, (string)e.NewValue);
+ var baseCssData = CssData.Parse(PerspexAdapter.Instance, (string) e.NewValue);
control._baseCssData = baseCssData;
htmlContainer.SetHtml(control.Text, baseCssData);
}
else if (e.Property == TextProperty)
{
htmlContainer.ScrollOffset = new Point(0, 0);
- htmlContainer.SetHtml((string)e.NewValue, control._baseCssData);
+ htmlContainer.SetHtml((string) e.NewValue, control._baseCssData);
control.InvalidateMeasure();
control.InvalidateVisual();
control.InvokeMouseMove();
@@ -562,10 +546,8 @@ namespace Perspex.Controls
}
- #region Private event handlers
-
-
- /* TODO: Implement events
+ //TODO: Implement CheckAccess calls
+ /*
private void OnLoadComplete(object sender, EventArgs e)
{
@@ -616,10 +598,5 @@ namespace Perspex.Controls
Dispatcher.Invoke(new Action(OnRefresh), e);
}
*/
-
- #endregion
-
-
- #endregion
}
}
\ No newline at end of file
diff --git a/src/Perspex.HtmlRenderer/RoutedEventArgsWrapper.cs b/src/Perspex.HtmlRenderer/HtmlRendererRoutedEventArgs.cs
similarity index 77%
rename from src/Perspex.HtmlRenderer/RoutedEventArgsWrapper.cs
rename to src/Perspex.HtmlRenderer/HtmlRendererRoutedEventArgs.cs
index 625c296d00..61f2ccb1fa 100644
--- a/src/Perspex.HtmlRenderer/RoutedEventArgsWrapper.cs
+++ b/src/Perspex.HtmlRenderer/HtmlRendererRoutedEventArgs.cs
@@ -7,7 +7,7 @@ using Perspex.Interactivity;
namespace Perspex.HtmlRenderer
{
- public class RoutedEventArgsWrapper : RoutedEventArgs
+ public class HtmlRendererRoutedEventArgs : RoutedEventArgs
{
public T Event { get; set; }
}
diff --git a/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj b/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj
index 47e6491bf0..197ca7634d 100644
--- a/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj
+++ b/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj
@@ -131,7 +131,7 @@
-
+