On Mon May 13 19:14:17 2024 +0000, Gabriel Ivăncescu wrote:
> > They could potentially be just indices, the association between name
> and ID may be easily done on MSHTML side (it's already doing that now).
> I don't think I follow. The name is used for jscript prop lookup, not
> mshtml. We absolutely need it for hash and standard name lookup. It's
> not an internal thing. PROP_PROXY doesn't care what name it has, it only
> stores the DISPID (index basically) to access it from mshtml. But
> looking it up **does** require name, because the prop has a name, so we
> do need dispex_prop_t, just like builtins. To be fair I'm talking about
> **being accessed by name via jscript**, nothing to do with mshtml internals.
> Think of window props, for example. I'm not talking about simple dynamic
> props on the window, which can be stored in jscript as simple values
> (and will be, later though, not in my branch yet, as I said I don't want
> to overcomplicate it). Instead, think of the other "global_props" (from
> mshtml's meaning of it) on the window, such as other scripts, elements,
> etc. Those need PROP_PROXY to get accessed…
> > I think I can live with it, but note that the requirement to create a
> function object instance for all MSHTML builtin functions that are used
> is not exactly optimal. It would be possible to optimize that in the
> future, hopefully without full rewrite of the interface. Just like we do
> for jscript builtin functions.
> We can save that for later, but I believe it's as optimal as builtins
> right now. That is, they get allocated on demand (when needed), but
> otherwise we need them as functions, because even builtins had to be
> converted from builtins into actual functions at some point. Only the
> "value prop" builtins still remain as such (it's same with PROP_PROXY).
> > Sure, although... it's by no means something for now, but I could
> imagine getting rid of `PROP_BUILTIN` and use the same 'external'
> properties for them instead, just like other external props (MSHTML and
> indexed props in the current proposal).
> How would that work? Builtins have a name, so we can't just use the same
> as indexed props because such name needs to have a DISPID mapping to it
> and be looked up by hash. We could use an extra layer of mapping for
> builtins of course, but I think that's overkill and likely slower
> (instead of just one hash lookup, now it's two lookups).
> It also complicates it because, for instance, builtins can be deleted,
> and then we have to actually implement every prop behavior on them
> instead of relying on dispex_prop_t facilities. Right now if they get
> deleted, the prop remains as PROP_DELETED and so can be easily replaced
> by something else. But yeah, maybe it's worth it way later though, we'll
> need measurements I guess.
After rebasing more of my patches, I found a problem with the IID approach, when it comes to weird prototype chains. For example the HTMLCurrentStyle shares an "abstract" common prototype with HTMLStyle, even though some of those methods don't work on it. But some are exposed in multiple interfaces, for instance the `zoom` prop setter (not getter).
The IID would have the IHTMLStyle3 interface (which is correct), but when looking the "zoom" prop up on HTMLCurrentStyle via DISPID, it would get the one from CSSStyleDeclaration, which has different behavior. Yes, it's weird as hell, and my explanation isn't that great either.
Anyway, the IID isn't that useful, mshtml already queries the IID for the respective function.
Instead I'm now using a mixed approach where I have a new method (but a normal method in the vtbl like PropInvoke rather than a function pointer callback) that uses a "func_ctx" which is basically the `func_info_t` (it's opaque to jscript, it doesn't care). This way there's zero ambiguity as to which function is actually used, and the prototype chain fiasco is cleanly solved. All tests pass now.
Anyway, this is not very related to this MR, is there something I can do to get this moving?
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5444#note_71566
Also: Add new timeouts to NETCON calls impacted by change
Timeout values are able to be set on all hInternet handles, so they should be able to set in a unified way.
Submitting what I have so far for review.
Known TODO: Tests, verify timeouts are set where NETCON is used, verify ULONG vs DWORD usage rules.
--
v2: wininet: unify timeout values closer to hInternet
https://gitlab.winehq.org/wine/wine/-/merge_requests/3518
Also: Add new timeouts to NETCON calls impacted by change
Timeout values are able to be set on all hInternet handles, so they should be able to set in a unified way.
Submitting what I have so far for review.
Known TODO: Tests, verify timeouts are set where NETCON is used, verify ULONG vs DWORD usage rules.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/3518
In addition to existing tests this shows that the call
SendMessage(listbox, LB_SETCOUNT, 100, 0);
adds a scrollbar to the listbox however it doesn't add a nonclient area to
an update region because the call
ValidateRect(listbox, NULL);
validates a client area, and after that a window no longer has an update region.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5743
The font set by WM_SETFONT is not owned by syslink so it shouldn't be deleted when handling
WM_DESTROY for the control.
Fix Toad for Oracle text gets reset to the system font after installing Team Coding. The application
creates a font and set it to a syslink. Then after the syslink destroys itself, the font becomes
invalid so other controls using the font end up falling back to the system font.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5639
On Tue May 28 10:12:25 2024 +0000, Rémi Bernon wrote:
> changed this line in [version 3 of the diff](/wine/wine/-/merge_requests/5738/diffs?diff_id=115405&start_sha=837a51a59c0de7dd45a2c7da92545ca8d18da2e2#85770a8b187bd82db4dbb9a2b8a5f34616049d0f_4787_4787)
Dropped that change for now.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5738#note_71550
On Tue May 28 10:20:03 2024 +0000, Alexandre Julliard wrote:
> I don't think we can do that until the drivers support window scaling.
Hmm, right thanks. That was mostly meant to fix the tests, but I see now that it breaks things. Still not clear to me why or how.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5738#note_71547
Alexandre Julliard (@julliard) commented about dlls/win32u/sysparams.c:
>
> /* FIXME: what do the DpiScalingVer flags mean? */
> get_dword_entry( (union sysparam_all_entry *)&entry_DPISCALINGVER, 0, &dpi_scaling, 0 );
> - if (!dpi_scaling) NtUserSetProcessDpiAwarenessContext( NTUSER_DPI_PER_MONITOR_AWARE, 0 );
I don't think we can do that until the drivers support window scaling.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5738#note_71546
> If you wish to have me removed as maintainer of winegstreamer, please propose that directly, rather than abusing GitLab to get your patches committed.
This is not an automated process and I don't think I'm abusing any mechanism here.
> I'm sorry for not reviewing I find it very difficult to want to review promptly when my review is invariably met with argument, insistence that there is only one correct way to do things, and inability or unwillingness to view things from my perspective. Despite this, I am sorry, and I will try to renew my efforts to review better.
I could say the very same thing the other way, I don't see how that would help us though. I've been working on this for almost two years straight now, and yet, I still have to nag people to get ~5 patches reviewed in a week and still have to argue almost every time that my approach is as good as another.
So yes, the more I'm doing it, the less I'm interested in rewriting things over. Note that this has now also been tested in length, and every large change requested is also waste of all the time that's been spend there too. Yes, of course, incorrectness needs to be addressed, but internal implementation details shouldn't matter as much as external behavior.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5667#note_71545
When `FindFirstFileA` is called with `<path>/<file>/*` (where file is expected to be a directory), Windows uses the `ERROR_DIRECTORY` error.
This patch changes Wine's implementation to match Windows. This fixes a crash in Unity of Command II.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5737
A bunch of fixes and improvements related to Vulkan GPUs in win32u.
The first commit fixes a bug with enumeration of multiple GPUs, the next two are supposed to improve logging, the last one gets rid of unused variable.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5735
On Mon May 27 20:37:43 2024 +0000, Elizabeth Figura wrote:
> I'm not sure I see how? If a type is just declared in an import, and
> defined in the main IDL, then we still want to define it. I don't see
> how to distinguish those two cases.
Can this really happen? If that's the case then sure.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5724#note_71521
Linux getxattr returns ENODATA when the attribute doesn't exist, but macOS and FreeBSD both return ENOATTR in that case.
Avoids warnings like `0050:warn:file:get_file_info Failed to get extended attribute user.DOSATTRIB from "<..>/dosdevices/c:/windows/system32/rpcss.exe". errno 93 (Attribute not found)`
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5693
I would like to reuse this build image for the Wine Mono CI
process (so that I don't have to separately maintain an image
that can run current Wine), but I need unzip to download and
extract artifacts from Wine's CI process.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5689
This MR improves the handling of numpad keys for drivers using KBDTABLES (only the Wayland driver at this point). It achieves this by:
1. Allowing drivers to send only the scancode in keyboard events, with win32u performing the scan->vkey mapping internally. A nice side effect of this change is that it fixes a few user32 input test TODOs.
2. Enhancing wineserver to read extended KBD vkey attributes and perform numpad key mapping depending on modifier state.
3. Providing default VK_NUMPAD* -> WCHAR mappings in win32u.
--
v5: winewayland.drv: Populate vkey to wchar entry for VK_DECIMAL.
user32/tests: Add tests for SendInput with numpad scancodes.
server: Send numpad virtual keys if NumLock is active.
win32u: Store the full KBD vkey information in kbd_tables_init_vsc2vk.
win32u: Allow drivers to send only the scan code for keyboard events.
win32u: Emit number characters for numpad virtual keys.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5601
This format is used by many Unity games, with D3D-enabled source reader.
--
v6: mfreadwrite/reader: Fixup MFVideoFormat_ABGR32 subtype to enumerate the video processor.
winegstreamer: Support MFVideoFormat_ABGR32 output in the video processor.
mfreadwrite/tests: Add tests with MFVideoFormat_ABGR32 output format.
mf/tests: Add video processor tests with MFVideoFormat_ABGR32 format.
mfplat: Add MFVideoFormat_ABGR32 format information.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5626
This format is used by many Unity games, with D3D-enabled source reader.
--
v2: mfreadwrite/reader: Fixup MFVideoFormat_ABGR32 subtype to enumerate the video processor.
winegstreamer: Support MFVideoFormat_ABGR32 output in the video processor.
mfreadwrite/tests: Add tests with MFVideoFormat_ABGR32 output format.
mf/tests: Add video processor tests with MFVideoFormat_ABGR32 format.
mfplat: Add MFVideoFormat_ABGR32 format information.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5626
In some Win10 testbot images (notably jp and cn), we can get a spurious
layout change after creating the test window and also when explicitly
activating the offending layout. Detect such behavior and skip tests
whose assumptions are invalidate by this spurious change.
---
Landing this MR will unblock https://gitlab.winehq.org/wine/wine/-/merge_requests/5601.
The testbot run for the latest version of this MR (v3) is https://testbot.winehq.org/JobDetails.pl?Key=145591. There are two new failures for the Win11 images, but they don't seem related to the changes here.
I have been trying to investigate what's going with the Win10 (jp/cn) testbots but I don't think I can make more progress at this point. I will document my findings in a comment below in case they prove useful to anyone wishing to investigate further.
--
v4: user32/tests: Remove workaround for SendInput keyboard tests on zh_CN.
user32/tests: Skip affected keyboard tests if a spurious layout change is detected.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5652
After a recent OS update, the dictation input source remains
"selected" in *all* apps for about 10 minutes after it is activated,
even when it is not in use. There doesn't seem to be any way to
determine whether it's actually active or just lingering, and sending
input to it regardless means that we falsely process input as if it
was going to an IME.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5660
In some Win10 testbot images (notably jp and cn), we can get a spurious
layout change after creating the test window. Detect this and skip the
tests since the test expectations (e.g., wchar mappings) are now
invalid.
--
v2: user32: Remove workaround for SendInput keyboard tests on zh_CN.
user32: Skip affected keyboard tests if a spurious layout change is detected.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5652
--
v7: jscript: Remove PROP_IDX dispex props by handling them in object prop methods.
jscript: Move filling the PROTREF into a helper.
jscript: Simplify get_flags to only check whether it's enumerable.
jscript: Get rid of on_put in the object vtbl.
jscript: Inline prop_put.
jscript: Inline prop_get.
jscript: Inline invoke_prop_func and invoke PROTREFs using their vtbl method.
jscript: Inline delete_prop.
jscript: Use mandatory methods in the object vtbl to operate on props found
jscript: Use mandatory methods in the object vtbl to operate on props
mshtml/tests: Test redefining a writable indexed prop.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5444
This hits some OS-level bugs, and while I think it's a valuable user experience improvement, it seems best to just revert it for now. Issues I've uncovered since it was merged:
1. Rapidly hiding and showing a dock icon results in multiple icons for the same app. Those icons persist after the app exits, and if you click on them then, they disappear. I've seen this in a few applications, most reliably the Notepad++ installer, after selecting a language in the first dialog.
2. Removing a dock icon deactivates the app and reactivates the most recently active one. If it still has windows open, those move behind whatever app becomes active. And, we can't reliably work around that because...
3. With the cooperative app activation added in Sonoma, any requests to bring forward an app with no dock icon seem to fail. One illustratively bad case is Notepad++'s in-app modal update message box. It's from another process (which gets no taskbar icon on Windows and thus no dock icon with this patch). But since it can't be brought forward, and since it's modal, the result is that the Notepad++ main window is disabled for no apparent reason, and there's no way to select the dialog.
This reverts commit f0efb2e46a7fb2a00f85196a4a06bd50eda560b2.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5657