C++/CX exposes `IPropertyValue` through `Platform::Details::CreateValue`, which returns a `Platform::Object` (which just seems to be a `IPropertyValue` object + C++ RTTI) containing the boxed value.
Apps don't seem to call `CreateValue` directly with a typecode. The code for boxing values gets generated when a value type gets assigned to a `Platform::Object` variable, as documented [here.](https://learn.microsoft.com/en-us/cpp/extensions/boxing-cpp-componen… The generated code will:
1. Call `__abi_make_type_id` with a `struct __abi_type_descriptor *` value, which is just a typecode + string pair. This returns a `Platform::Type` object.
2. Call `Platform::Type::GetTypeCode` on the returned `Platform::Type` object to get back the typecode.
3. Call `Platform::Details::CreateValue` with the typecode and a pointer to the actual value that needs to be boxed.
Apart from the usual WinRT methods, `Platform::Type` obejcts also impement the `IEquatable` and `IPrintable` interfaces. I don't know what their vtables look like, though.
The `Platform::Type` and `Platform::Object` classes also have associated RTTI (can be demonstrated by calling `__RTtypeid`), which we'll also need to emit at some point in the future.
--
v4: vccorlib140: Use the correct symbol name for InitControlBlock on i386 and arm.
vccorlib140: Implement Platform::Details::CreateValue.
vccorlib140: Add stub for Platform::Details::CreateValue.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8831
C++/CX exposes `IPropertyValue` through `Platform::Details::CreateValue`, which returns a `Platform::Object` (which just seems to be a `IPropertyValue` object + C++ RTTI) containing the boxed value.
Apps don't seem to call `CreateValue` directly with a typecode. The code for boxing values gets generated when a value type gets assigned to a `Platform::Object` variable, as documented [here.](https://learn.microsoft.com/en-us/cpp/extensions/boxing-cpp-componen… The generated code will:
1. Call `__abi_make_type_id` with a `struct __abi_type_descriptor *` value, which is just a typecode + string pair. This returns a `Platform::Type` object.
2. Call `Platform::Type::GetTypeCode` on the returned `Platform::Type` object to get back the typecode.
3. Call `Platform::Details::CreateValue` with the typecode and a pointer to the actual value that needs to be boxed.
Apart from the usual WinRT methods, `Platform::Type` obejcts also impement the `IEquatable` and `IPrintable` interfaces. I don't know what their vtables look like, though.
The `Platform::Type` and `Platform::Object` classes also have associated RTTI (can be demonstrated by calling `__RTtypeid`), which we'll also need to emit at some point in the future.
--
v3: vccorlib140: Use the correct symbol name for InitControlBlock on i386 and arm.
vccorlib140: Implement Platform::Details::CreateValue.
vccorlib140: Add stub for Platform::Details::CreateValue.
vccorlib140: Implement Platform::Type::{Equals, GetTypeCode, ToString, FullName::get}.
vccorlib140: Implement __abi_make_type_id.
vccorlib140: Add stub for __abi_make_type_id, Platform::Type{Equals, GetTypeCode, ToString, FullName::get}.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8831
C++/CX exposes `IPropertyValue` through `Platform::Details::CreateValue`, which returns a `Platform::Object` (which just seems to be a `IPropertyValue` object + C++ RTTI) containing the boxed value.
Apps don't seem to call `CreateValue` directly with a typecode. The code for boxing values gets generated when a value type gets assigned to a `Platform::Object` variable, as documented [here.](https://learn.microsoft.com/en-us/cpp/extensions/boxing-cpp-componen… The generated code will:
1. Call `__abi_make_type_id` with a `struct __abi_type_descriptor *` value, which is just a typecode + string pair. This returns a `Platform::Type` object.
2. Call `Platform::Type::GetTypeCode` on the returned `Platform::Type` object to get back the typecode.
3. Call `Platform::Details::CreateValue` with the typecode and a pointer to the actual value that needs to be boxed.
Apart from the usual WinRT methods, `Platform::Type` obejcts also impement the `IEquatable` and `IPrintable` interfaces. I don't know what their vtables look like, though.
The `Platform::Type` and `Platform::Object` classes also have associated RTTI (can be demonstrated by calling `__RTtypeid`), which we'll also need to emit at some point in the future.
--
v2: vccorlib140: Use the correct symbol name for InitControlBlock on i386 and arm.
vccorlib140: Implement Platform::Details::CreateValue.
vccorlib140: Add stub for Platform::Details::CreateValue.
vccorlib140: Implement Platform::Type::{Equals, GetTypeCode, ToString, FullName::get}.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8831
C++/CX exposes `IPropertyValue` through `Platform::Details::CreateValue`, which returns a `Platform::Object` (which just seems to be a `IPropertyValue` object + C++ RTTI) containing the boxed value.
Apps don't seem to call `CreateValue` directly with a typecode. The code for boxing values gets generated when a value type gets assigned to a `Platform::Object` variable, as documented [here.](https://learn.microsoft.com/en-us/cpp/extensions/boxing-cpp-componen… The generated code will:
1. Call `__abi_make_type_id` with a `struct __abi_type_descriptor *` value, which is just a typecode + string pair. This returns a `Platform::Type` object.
2. Call `Platform::Type::GetTypeCode` on the returned `Platform::Type` object to get back the typecode.
3. Call `Platform::Details::CreateValue` with the typecode and a pointer to the actual value that needs to be boxed.
The `Platform::Type` and `Platform::Object` objects returned also have associated RTTI (can be demonstrated by calling `__RTtypeid`), which we'll also need to emit at some point in the future.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8831
comctl32/treeview: Return from TREEVIEW_LButtonDown when the treeview handle is invalid.
LButtonDown should return when the treeview handle is invalid (e.g. destroyed) after NM_CLICK to prevent further message processing.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=58211
--
v11: comctl32/treeview: Return from TREEVIEW_LButtonDown when the treeview handle is invalid.
comctl32/tests: Add a test for treeview deletion during NM_CLICK in LBUTTONDOWN.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8258
Using #ifdef to selectively register runtimeclasses from the public IDLs isn't going to work out, this implements explicit class registration instead.
For now we are missing a possible useful check in widl to make sure the referenced class is defined, this will be added later on after all modules are made explicit.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8830
Building from wine/fontforge repo fails for me, after fixing some errors in fontforge code, it still fails when pointed to similarly old freetype source tree (current tree has some internal headers moved, and fontforge uses those). That's why ttf is not updated.
Image of the issue:

--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8828