diff --git a/samples/ControlCatalog.Desktop/Program.cs b/samples/ControlCatalog.Desktop/Program.cs index d039cce83c..b67c5ea51d 100644 --- a/samples/ControlCatalog.Desktop/Program.cs +++ b/samples/ControlCatalog.Desktop/Program.cs @@ -16,8 +16,8 @@ namespace ControlCatalog // TODO: Make this work with GTK/Skia/Cairo depending on command-line args // again. - AppBuilder.Configure().UseGtk().UseCairo() - //.UsePlatformDetect() + AppBuilder.Configure() + .UsePlatformDetect() .Start(); } diff --git a/samples/ControlCatalog/ControlCatalog.csproj b/samples/ControlCatalog/ControlCatalog.csproj index 7761d792ad..63c82d9e8a 100644 --- a/samples/ControlCatalog/ControlCatalog.csproj +++ b/samples/ControlCatalog/ControlCatalog.csproj @@ -38,7 +38,7 @@ Designer - + Designer @@ -88,8 +88,8 @@ App.xaml - - ControlCatalogControl.xaml + + MainView.xaml MainWindow.xaml diff --git a/samples/ControlCatalog/ControlCatalogControl.xaml b/samples/ControlCatalog/MainView.xaml similarity index 100% rename from samples/ControlCatalog/ControlCatalogControl.xaml rename to samples/ControlCatalog/MainView.xaml diff --git a/samples/ControlCatalog/ControlCatalogControl.xaml.cs b/samples/ControlCatalog/MainView.xaml.cs similarity index 75% rename from samples/ControlCatalog/ControlCatalogControl.xaml.cs rename to samples/ControlCatalog/MainView.xaml.cs index 062a6665a8..2e1f7d38b2 100644 --- a/samples/ControlCatalog/ControlCatalogControl.xaml.cs +++ b/samples/ControlCatalog/MainView.xaml.cs @@ -4,9 +4,9 @@ using Avalonia.Markup.Xaml; namespace ControlCatalog { - public class ControlCatalogControl : UserControl + public class MainView : UserControl { - public ControlCatalogControl() + public MainView() { this.InitializeComponent(); } diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index a46a0bfdd9..f39beced1a 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -2,5 +2,5 @@ Title="Avalonia Control Gallery" Icon="resm:ControlCatalog.Assets.test_icon.ico?assembly=ControlCatalog" xmlns:local="clr-namespace:ControlCatalog;assembly=ControlCatalog"> - + \ No newline at end of file diff --git a/samples/ControlCatalog/MainWindow.xaml.cs b/samples/ControlCatalog/MainWindow.xaml.cs index c7c61e2b4e..41ba013c16 100644 --- a/samples/ControlCatalog/MainWindow.xaml.cs +++ b/samples/ControlCatalog/MainWindow.xaml.cs @@ -20,6 +20,8 @@ namespace ControlCatalog var theme = new Avalonia.Themes.Default.DefaultTheme(); theme.FindResource("Button"); AvaloniaXamlLoader.Load(this); + + PointerPressed += delegate { Measure(new Size(1, 1)); }; } } } diff --git a/samples/interop/GtkInteropDemo/MainWindow.cs b/samples/interop/GtkInteropDemo/MainWindow.cs index 2d7521cd8c..2c193f24e8 100644 --- a/samples/interop/GtkInteropDemo/MainWindow.cs +++ b/samples/interop/GtkInteropDemo/MainWindow.cs @@ -19,7 +19,9 @@ namespace GtkInteropDemo left.Add(new Button("I'm GTK button")); left.Add(new Calendar()); root.PackEnd(left, false, false, 0); - root.PackStart(new GtkAvaloniaControlHost() {Content = new ControlCatalogControl()}, true, true, 0); + var host = new GtkAvaloniaControlHost() {Content = new MainView()}; + host.SetSizeRequest(600, 600); + root.PackStart(host, true, true, 0); Add(root); ShowAll(); diff --git a/samples/interop/WindowsInteropTest/EmbedToWinFormsDemo.cs b/samples/interop/WindowsInteropTest/EmbedToWinFormsDemo.cs index 1aa271d9b1..bc627f57ce 100644 --- a/samples/interop/WindowsInteropTest/EmbedToWinFormsDemo.cs +++ b/samples/interop/WindowsInteropTest/EmbedToWinFormsDemo.cs @@ -17,7 +17,7 @@ namespace WindowsInteropTest public EmbedToWinFormsDemo() { InitializeComponent(); - avaloniaHost.Content = new ControlCatalogControl(); + avaloniaHost.Content = new MainView(); } } } diff --git a/samples/interop/WindowsInteropTest/EmbedToWpfDemo.xaml.cs b/samples/interop/WindowsInteropTest/EmbedToWpfDemo.xaml.cs index 2486bc932d..e60c9ced0a 100644 --- a/samples/interop/WindowsInteropTest/EmbedToWpfDemo.xaml.cs +++ b/samples/interop/WindowsInteropTest/EmbedToWpfDemo.xaml.cs @@ -25,7 +25,7 @@ namespace WindowsInteropTest public EmbedToWpfDemo() { InitializeComponent(); - Host.Content = new ControlCatalogControl(); + Host.Content = new MainView(); } } } diff --git a/src/Avalonia.Controls/Avalonia.Controls.csproj b/src/Avalonia.Controls/Avalonia.Controls.csproj index 925b38ec9d..86c2fe2408 100644 --- a/src/Avalonia.Controls/Avalonia.Controls.csproj +++ b/src/Avalonia.Controls/Avalonia.Controls.csproj @@ -56,7 +56,7 @@ - + diff --git a/src/Avalonia.Controls/EmbeddableControlRoot.cs b/src/Avalonia.Controls/Embedding/EmbeddableControlRoot.cs similarity index 94% rename from src/Avalonia.Controls/EmbeddableControlRoot.cs rename to src/Avalonia.Controls/Embedding/EmbeddableControlRoot.cs index fa0d7ab6e7..fc58e751f4 100644 --- a/src/Avalonia.Controls/EmbeddableControlRoot.cs +++ b/src/Avalonia.Controls/Embedding/EmbeddableControlRoot.cs @@ -1,15 +1,11 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using Avalonia.Controls.Platform; using Avalonia.Input; using Avalonia.Layout; using Avalonia.Platform; using Avalonia.Styling; -namespace Avalonia.Controls +namespace Avalonia.Controls.Embedding { public class EmbeddableControlRoot : TopLevel, IStyleable, IFocusScope, INameScope, IDisposable { @@ -33,7 +29,6 @@ namespace Avalonia.Controls LayoutManager.Instance.ExecuteInitialLayoutPass(this); } - private void EnsureInitialized() { if (!this.IsInitialized) diff --git a/src/Avalonia.Controls/Properties/AssemblyInfo.cs b/src/Avalonia.Controls/Properties/AssemblyInfo.cs index f87897267b..ae8c88f7e8 100644 --- a/src/Avalonia.Controls/Properties/AssemblyInfo.cs +++ b/src/Avalonia.Controls/Properties/AssemblyInfo.cs @@ -11,6 +11,7 @@ using Avalonia.Metadata; [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls")] +[assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls.Embedding")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls.Presenters")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls.Primitives")] [assembly: XmlnsDefinition("https://github.com/avaloniaui", "Avalonia.Controls.Shapes")] diff --git a/src/Gtk/Avalonia.Cairo/RenderTarget.cs b/src/Gtk/Avalonia.Cairo/RenderTarget.cs index cfa51852d9..d285986762 100644 --- a/src/Gtk/Avalonia.Cairo/RenderTarget.cs +++ b/src/Gtk/Avalonia.Cairo/RenderTarget.cs @@ -49,17 +49,18 @@ namespace Avalonia.Cairo /// /// A surface wrapped in an . public DrawingContext CreateDrawingContext() => new DrawingContext(CreateMediaDrawingContext()); + public IDrawingContextImpl CreateMediaDrawingContext() { - if(_window!=null) + if (_window != null) return new Media.DrawingContext(_window.GdkWindow); if (_surface != null) return new Media.DrawingContext(_surface); - if(_area!=null) + if (_area != null) return new Media.DrawingContext(_area.GdkWindow); - throw new InvalidOperationException(); + throw new InvalidOperationException("Unspecified render target"); } - + public void Dispose() => _surface?.Dispose(); } } diff --git a/src/Gtk/Avalonia.Gtk/EmbeddableImpl.cs b/src/Gtk/Avalonia.Gtk/EmbeddableImpl.cs index fdac509e3f..62b2513856 100644 --- a/src/Gtk/Avalonia.Gtk/EmbeddableImpl.cs +++ b/src/Gtk/Avalonia.Gtk/EmbeddableImpl.cs @@ -24,7 +24,6 @@ namespace Avalonia.Gtk public EmbeddableImpl() : this(new PlatformHandleAwareDrawingArea()) { - } private void Plug_SizeAllocated(object o, SizeAllocatedArgs args) @@ -35,45 +34,37 @@ namespace Avalonia.Gtk public override Size ClientSize { get { return new Size(Widget.Allocation.Width, Widget.Allocation.Height); } - set { } + set {} } //Stubs are needed for future GTK designer embedding support public override void SetTitle(string title) { - } public override IDisposable ShowDialog() => Disposable.Create(() => { }); public override void SetSystemDecorations(bool enabled) { - } public override void SetIcon(IWindowIconImpl icon) { - } public override void BeginMoveDrag() { - } public override void BeginResizeDrag(WindowEdge edge) { - } public override Point Position { get { return new Point(); } - set - { - - } + set {} } } } diff --git a/src/Gtk/Avalonia.Gtk/Embedding/GtkAvaloniaControlHost.cs b/src/Gtk/Avalonia.Gtk/Embedding/GtkAvaloniaControlHost.cs index 07c211d32c..b29a5a1be6 100644 --- a/src/Gtk/Avalonia.Gtk/Embedding/GtkAvaloniaControlHost.cs +++ b/src/Gtk/Avalonia.Gtk/Embedding/GtkAvaloniaControlHost.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Avalonia.Controls; +using Avalonia.Controls.Embedding; using Avalonia.Diagnostics; using Avalonia.Layout; using Avalonia.Platform; @@ -38,14 +39,6 @@ namespace Avalonia.Gtk.Embedding } } - protected override void OnSizeRequested(ref Requisition requisition) - { - requisition.Width = 700; - requisition.Height = 500; - - } - - IntPtr IPlatformHandle.Handle => PlatformHandleAwareWindow.GetNativeWindow(GdkWindow); string IPlatformHandle.HandleDescriptor => "HWND"; diff --git a/src/Gtk/Avalonia.Gtk/WindowImplBase.cs b/src/Gtk/Avalonia.Gtk/WindowImplBase.cs index b81387a678..c0020f5e6f 100644 --- a/src/Gtk/Avalonia.Gtk/WindowImplBase.cs +++ b/src/Gtk/Avalonia.Gtk/WindowImplBase.cs @@ -29,8 +29,6 @@ namespace Avalonia.Gtk private uint _lastKeyEventTimestamp; private static readonly Gdk.Cursor DefaultCursor = new Gdk.Cursor(CursorType.LeftPtr); - - protected WindowImplBase(Gtk.Widget window) { @@ -113,10 +111,6 @@ namespace Avalonia.Gtk public double Scaling => 1; - - - - public Action Activated { get; set; } public Action Closed { get; set; } @@ -155,7 +149,6 @@ namespace Avalonia.Gtk { int x, y; _window.GdkWindow.GetDeskrelativeOrigin(out x, out y); - return new Point(point.X + x, point.Y + y); } @@ -182,7 +175,6 @@ namespace Avalonia.Gtk public abstract void BeginResizeDrag(WindowEdge edge); public abstract Point Position { get; set; } - void ITopLevelImpl.Activate() { _window.Activate(); @@ -251,8 +243,6 @@ namespace Avalonia.Gtk Input(e); } - - void OnDestroyed(object sender, EventArgs eventArgs) { Closed(); @@ -278,7 +268,6 @@ namespace Avalonia.Gtk ProcessKeyEvent(args.Event); } - void OnKeyReleaseEvent(object o, Gtk.KeyReleaseEventArgs args) { args.RetVal = true; @@ -313,8 +302,6 @@ namespace Avalonia.Gtk args.RetVal = true; } - - public void Dispose() { _window.Dispose(); diff --git a/src/Windows/Avalonia.Win32/Embedding/WinFormsAvaloniaControlHost.cs b/src/Windows/Avalonia.Win32/Embedding/WinFormsAvaloniaControlHost.cs index fa9f018d18..3b52090493 100644 --- a/src/Windows/Avalonia.Win32/Embedding/WinFormsAvaloniaControlHost.cs +++ b/src/Windows/Avalonia.Win32/Embedding/WinFormsAvaloniaControlHost.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using System.Windows.Forms; using Avalonia.Controls; +using Avalonia.Controls.Embedding; using Avalonia.Input; using Avalonia.VisualTree; using Avalonia.Win32.Interop;