Comments (5)
This line is responsible for attaching embeddable control to the parent: https://github.com/AvaloniaUI/Avalonia/blob/master/src/Windows/Avalonia.Win32.Interoperability/WinForms/WinFormsAvaloniaControlHost.cs#L60
It never really did set CHILD style on parent though, so regression must come from something else. On other hand, this style would make sense anyway.
from avalonia.
@fitdev a PR is welcome if you know how to improve it.
from avalonia.
It never really did set CHILD style on parent though, so regression must come from something else. On other hand, this style would make sense anyway.
I know, in fact I was using own implementation of WinFormsAvaloniaControlHost
, so it is not WinFormsAvaloniaControlHost
that is the culprit.
The real cause is that the "embedded window" created by EmbeddableControlRoot
's constructor through IWindowingPlatform.CreateEmbeddableWindow()
implemented in Win32Platform.CreateEmbeddableWindow
via EmbeddedWindowImpl
does not set correct styles, as expected by Windows OS for the embedding use case.
I am not Windows expert by any means, so don't really know which styles and/or extended styles should be set for such a case. But, WS_CHILD
should certainly be one of them and solves this issue. Strange: it seems the style does get set in the EmbeddedWindowImpl.CreateWindowOverride
, but for some reason it does not translate into actual window instance having that style in either Beta 2 or RC1.
from avalonia.
After some more digging, the culprit seems in the WindowImpl.UpdateWindowProperties which unconditionally does this WindowStyles style = WindowStyles.WS_CLIPCHILDREN | WindowStyles.WS_OVERLAPPEDWINDOW | WindowStyles.WS_CLIPSIBLINGS;
and then modifies that style, without taking into account the already existing style (i.e. throws away WS_CHILD
that was set by EmbeddedWindowImpl.CreateWindowOverride
.
The WindowImpl.UpdateWindowProperties
itself is called through:
Win32Platform.CreateEmbeddableWindow
WindowImpl.Show
WindowImpl.ShowWindow
So, the bottom line is that this gets screwed up in the WindowImpl.UpdateWindowProperties
routine which does not preserve the initially correctly set WS_CHILD
flag. So someone who owns this area should look into how best to pass the information to the UpdateWindowProperties that it should preserve certain window styles (perhaps via WindowProperties struct, a field, a parameter, or a check within the routine itself)
from avalonia.
Submitted PR. Can someone review it please? @timunie , @maxkatz6
from avalonia.
Related Issues (20)
- DataGrid performance on attached to visual tree. HOT 2
- Window animation lost when set SystemDecorations and other properties HOT 1
- ListBox selection not working correctly with CompileBinding HOT 6
- Crash (IndexOutOfRangeException) at Avalonia.Media.GlyphRun.CreateGlyphRunMetrics When Selecting "Marlett" font
- 11.1.0-rc1. TrayIcon is not working on Windows 7. Unable to load DLL 'shcore.dll' or one of its dependencies. HOT 1
- Allow GradientBrush's GradientStops to be unordered HOT 4
- Avalonia.Android 11.0.10 [启用修整]Release勾上,发布APK, 使用Assembly.LoadFrom异常 HOT 1
- Multiple gesture interaction HOT 5
- ArgumentOutOfRangeException when selecting a DataGrid item, after changing DataGrid.ItemsSource HOT 1
- Wrapped RTL text has extra bottom padding
- Ellipsis character does not use font fallback
- ListBox AlwaysSelected issue when selected item is not visible during removal
- InputPane reports incorrect keyboard height HOT 1
- Items appear constricted or squeezed within itself when in itemsRepeater using UniformGridLayout HOT 2
- Button does not accept clicks on its entire size HOT 2
- Text-bound Runs inside of a TextBlock are invisible (not rendered) half the time when their Text changes HOT 1
- Button should check `RoutedEventArgs.Source` before handling keys
- WrapPanel autowrap sorting problem HOT 6
- Row selection issue in DataGrid HOT 2
- System.NullReferenceException in Avalonia.Controls.Utils.KeyboardHelper HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from avalonia.