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)
- Dinamicaly adding/removing MenuItem-s in Menu leads to memory leaks HOT 8
- AffectsRender<TVisual> only seems to work with properties defined in TVisual class HOT 1
- Transitions on some StyledProperties fail to trigger after running once
- Detect FlowDirection from text content HOT 3
- TextAlignment.DetectFromContent with an RTL line and TextWrapping produces a width of 0 HOT 3
- Artifacts when using BoxShadow and CornerRadius with positive spreadradius HOT 1
- Upgrading from 11.0.2 to 11.0.10 results in transparent window and high memory usage HOT 3
- Glitchy ListBox when adding items & setting SelectedIndex HOT 6
- When DataGrid is not set to a height, dynamically adding rows will not widen the height HOT 4
- Application doesn't terminate when unhandled exception is thrown from ReactiveCommand handler HOT 3
- EagerParentStackEnumerator is incompatible with XAML built with older avalonia versions HOT 2
- DataGridCollectionView with Filter items dissapear or duplicate
- DataGridTextColumn IsReadOnly will be True after AOT HOT 2
- CustomDrawOperation.Render won't be called if only drawingContext.Custom is present in override Render method HOT 1
- Showing Window from WinForms app doesn't allow text input HOT 3
- PointerTouchPadGestureSwipe not work in macos
- AvaloniaResource inclusion results in erroneous embedding when resources are outside of project folder HOT 2
- Changing the resolution of headless rendering
- D3D11CreateDevice+Hardware crashes and fallback doesn't work HOT 1
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.