Adds two attributes which describe the stability of an API:
- `UnstableAttribute` indicates that we provide no API stability guarantees for the class between minor/patch versions. This is mostly applied to `*Impl` interfaces which describe the interface between core Avalonia and platform implementations
- `NotClientImplementableAttribute` indicates that an interface is stable for consumption by a client, but should not be implemented outside of Avalonia itself (either because custom implementations are not supported, or because as members may be added to its API)
On win32, returning handled from `WM_KEYDOWN` doesn't automatically prevent a `WM_CHAR` message, resulting in #5849.
Fix this by setting a flag after `WM_KEYDOWN` is handled which will make the following `WM_CHAR` message be ignored.
This is the second attempt at fixing this after it was decided that https://github.com/AvaloniaUI/Avalonia/pull/7351 was not the right approach.
Fixes#5849
* win32 ime wip
* ime window starts tracking the cursor, but coords are wrong
* fix win32 ime cursor coord
* win32-ime lang-specific behaviors
* track language id in WindowImpl
* lowercase dllimport
* create initial ime on window creation
* InputMethodManager: connect to client even if im is absent at the moment
* proposal: IKeyboardDevice.NotifyInputMethodUpdated
* finalizing
* ime: allow client to request active state change
* remove backward incompatible ActiveState.
* InputMethodManager: NotifyInputMethodUpdated: filter the window of current focused element
* [IME] [Windows] ability to enable/disable IME for any InputElement
* [IME] [Windows] Refactor Imm32InputMethod - create a single one for dispatcher. Also change a method of enabling/disabling IME to work like in WPF.
* [IME] [Windows] Fix IME after dialog show not working - active window context is not applied.
* [IME] [Windows] fix intermediate input position
* [IME] [Windows] PreEdit font size is applied
* [IME] [Windows] Make MoveImeWindow code to be exact like in chrome - fix a lot of possible issues. Added comments. Minor Refactoring
* [IME] [Windows] Refactor caret management, improve deactivation, remove comments
* [IME] [Windows] Remove redundant api changes (request from @kekekeks)
* Fix .sln and ApiCompatBesaline.txt redundant changes.
* [Windows] [IME] move IsInputMethodEnabled subscription to InputMethodManager, Move check for IsInputMethodEnabled before TextInputMethodClientRequestedEvent query
* [IME] [Windows] remove redundant SetActive(false) call, because it's called in Client setter
* remove redundant change
Co-authored-by: Yatao Li <yatli@microsoft.com>
Co-authored-by: Max Katz <maxkatz6@outlook.com>
- Adds a "resize reason" to platform `Resized` events
- Which is used by the auto-sizing code to determine whether to reset `SizeToContent`
- Also other improvements to the reset logic for `SizeToContent`:
- Don't reset it if the size hasn't changed
- Don't reset it if `CanResize == false`
- Only reset the dimensions whose size has changed
- Obsolete the `BeginAutoSizing`/`AutoSizing` feature in `WindowBase`