From 63df69ba45734dbca9002c319299ba9d65b0c552 Mon Sep 17 00:00:00 2001 From: Mohamed Elhennawy Date: Mon, 3 Apr 2023 09:46:34 +0200 Subject: [PATCH 1/3] Make use of the virtual method `CretaeControl` on wpf `DrawableHandler` * Make use of the virtual method `CretaeControl` when creating the wpf canvas for the drawable control. * This is required to enable the extending the drawable control when needed by a custom canvas. * That was required in our case because we needed to provide a custom automation peer for the wpf canvas. and we could only do that by providing a custom canvas to the drawable. --- src/Eto.Wpf/Forms/Controls/DrawableHandler.cs | 33 +++++++++++++++---- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs b/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs index f5e0e67dea..a1eda19994 100644 --- a/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs +++ b/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs @@ -11,7 +11,12 @@ namespace Eto.Wpf.Forms.Controls { - public class DrawableHandler : WpfPanel, Drawable.IHandler + public class DrawableHandler : DrawableHandler { } + + public class DrawableHandler : WpfPanel, Drawable.IHandler + where TControl : swc.Canvas + where TWidget : Drawable + where TCallback : Drawable.ICallback { bool tiled; sw.FrameworkElement content; @@ -51,9 +56,12 @@ public Size TileSize } } - class EtoMainCanvas : swc.Canvas + public class EtoMainCanvas : swc.Canvas + where TTControl : swc.Canvas + where TTWidget : Drawable + where TTCallback : Drawable.ICallback { - public DrawableHandler Handler { get; set; } + public DrawableHandler Handler { get; set; } protected override void OnMouseDown(sw.Input.MouseButtonEventArgs e) { @@ -111,7 +119,7 @@ protected override sw.Size ArrangeOverride(sw.Size arrangeSize) class EtoTile : sw.FrameworkElement { Rectangle bounds; - public DrawableHandler Handler { get; set; } + public DrawableHandler Handler { get; set; } public Rectangle Bounds { @@ -163,18 +171,29 @@ public override void OnUnLoad(EventArgs e) UnRegisterScrollable(); } - public void Create() + protected override TControl CreateControl() { - Control = new EtoMainCanvas + return new EtoMainCanvas { Handler = this, SnapsToDevicePixels = true, FocusVisualStyle = null, Background = swm.Brushes.Transparent - }; + } as TControl; + } + + protected override void Initialize() + { + base.Initialize(); + Control.Loaded += Control_Loaded; } + public void Create() + { + CreateControl(); + } + public void Create(bool largeCanvas) { AllowTiling = largeCanvas; From 66299c0caceea7b15894c2b27c95567a9010d852 Mon Sep 17 00:00:00 2001 From: Mohamed Elhennawy Date: Mon, 3 Apr 2023 10:14:17 +0200 Subject: [PATCH 2/3] Revert changes for `EtoMainCanvas` to be non generic again --- src/Eto.Wpf/Forms/Controls/DrawableHandler.cs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs b/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs index a1eda19994..45c13b2be6 100644 --- a/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs +++ b/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs @@ -56,12 +56,9 @@ public Size TileSize } } - public class EtoMainCanvas : swc.Canvas - where TTControl : swc.Canvas - where TTWidget : Drawable - where TTCallback : Drawable.ICallback + public class EtoMainCanvas : swc.Canvas { - public DrawableHandler Handler { get; set; } + public DrawableHandler Handler { get; set; } protected override void OnMouseDown(sw.Input.MouseButtonEventArgs e) { @@ -173,7 +170,7 @@ public override void OnUnLoad(EventArgs e) protected override TControl CreateControl() { - return new EtoMainCanvas + return new EtoMainCanvas { Handler = this, SnapsToDevicePixels = true, From d02c3ba435f581f07fa2b97e5037946b18cbb64d Mon Sep 17 00:00:00 2001 From: Mohamed Elhennawy Date: Fri, 14 Apr 2023 10:18:39 +0200 Subject: [PATCH 3/3] Remove unnecessary call for `CreateControl` --- src/Eto.Wpf/Forms/Controls/DrawableHandler.cs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs b/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs index 45c13b2be6..f5e5b4a5c5 100644 --- a/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs +++ b/src/Eto.Wpf/Forms/Controls/DrawableHandler.cs @@ -186,10 +186,7 @@ protected override void Initialize() Control.Loaded += Control_Loaded; } - public void Create() - { - CreateControl(); - } + public void Create() { } public void Create(bool largeCanvas) {