For some reason I thought it wasn't needed anymore (I had it initially), sorry for the mess up.
--
v2: jscript: Don't leak when return value of host constructor is not used.
jscript: Don't leak when popping (u)int values off the stack.
mshtml: Don't mess with the outer window if we're already detached.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7737
Sending key events through `-[NSTextInputContext handleEvent:]`, as we do in `macdrv_send_text_input_event`, results in doubled characters for certain macOS input sources. The Romaji source does this reliably, as do certain third-party sources. (The built-in dictation does it as well, but we already blacklist that - !5660 - because it remains "active" even when it's not.)
I can't find this spelled out directly, but if you read between the lines, it seems clear that you're only supposed to send key *down* events to `-[NSTextInputContext handleEvent:]` and not key ups. Supporting evidence:
1. [The old documentation on the text system](https://developer.apple.com/library/archive/documentation/TextFonts… only mentions `handleEvent:` being called in the context of `-keyDown:`.
2. [The guide to implementing a custom text view/NSTextInputClient](https://developer.apple.com/library/archive/documen… only mentions overriding `-keyDown:` and sending those events to `-handleEvent:`.
3. [iTerm only sends key down events to `-handleEvent:`](https://github.com/gnachman/iTerm2/blob/6134ea0a9d9d0fee5e7d7704fc98efec1fc77c24/sources/iTermKeyboardHandler.m#L355). You have to unpack the logic a bit from there, but `-handleKeyDownEvent:...` is the only method that calls `-handleEventWithCocoa:inputContext:`, which is what (usually) calls `-handleEvent:` on the `inputContext`.
4. [The InputMethodKit method on the IMKServerInput protocol to handle NSEvents directly](https://developer.apple.com/documentation/objectivec/nsobject/138… only mentions getting key down events.
So presumably input source authors sometimes do not check the type of the NSEvent they're receiving and process all key events equally, be they downs or ups, which results in the doubled input.
This patch fixes the issues with Romaji and the problematic third-party method we've encountered.
--
v2: winemac.drv: Only send key down events to the window's inputContext.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7701
create_dest_file was unaware of the `FILE_SHARE_READ | FILE_SHARE_DELETE` share mode that these SessionMgr entries are opened with. This avoids noisy `(error=80)` messages during prefix creation/update.
Fixes: 81ea1e7a20c9cd0698c0416282d9ad7c0109e865
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7705
This implements handling of HTTP status code 308 ([Permanant Redirect](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Statu…) in wininet/winhttp. I added handling at all places I could find, but could only test the one in `dlls/wininet/http.c` with the program where it failed (Marvel Heroes).
I tried to keep the implementation parallel to 307, since they serve a similar purpose (redirect while keeping the request intact).
PS: `case` labels are sometimes in different order, would it be a good idea to sort them in numerical HTTP status order while I'm at it?
--
v2: urlmon: Handle HTTP status code 308 (Permanent Redirect)
winhttp: Handle HTTP status code 308 (Permanent Redirect)
wininet: Handle HTTP status code 308 (Permanent Redirect)
https://gitlab.winehq.org/wine/wine/-/merge_requests/7735