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)
- Missing methods for DrawingContext HOT 2
- Request to have Visual Tree as default in Avalonia DevTools HOT 1
- Acrylic Blur on windows 11 - while screen sharing.
- Null Tooltip displays a blank tooltip
- Avalonia should not call into the Runtime after the main thread has exited HOT 5
- Mouse-wheel scrolling does not work when cursor is on scroll bar
- `TextLeadingPrefixTrimming` with `Run`s trims incorrectly
- Lock screen password and biometric identification API HOT 2
- Border Rendering Issue Roll-up
- TextPresenter hides caret when there is non empty selection HOT 1
- XamlX intrinsics parsing should be improved
- Improve public Parse/ToString APIs of our primitive types
- TextBox input from SwiftKey not consistent with other applications HOT 4
- Analyzer error when binding to `RadioButton.IsChecked` property in Avalonia 11.1.0-rc2 compared to 11.0.11 HOT 1
- ReactiveUI Router.NavigateAndReset don't work on Android HOT 2
- Avalonia error AVLN:9999: Member 'System.Nullable`1' is declared in another module and needs to be imported. HOT 1
- [Windows] Missing Person and Pin Cursor in StandardCursorType Enum HOT 1
- Mac OS - Drag And Drop Copy Effect don't work
- IActivatableLifetime Activated event not firing
- Erroneous debug output for binding error of TemplateBinding to boolean property when null. 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.