--
v3: user32: Pass resource ID as a string in DIALOG_CreateControls32.
user32: Support passing bitmap and icon resource ID as a string when creating static conctrol.
user32: Support resource ID strings in CREATESTRUCT Unicode conversion.
https://gitlab.winehq.org/wine/wine/-/merge_requests/693
jhol (@jhol) commented about dlls/comctl32/idb_hist_large.svg:
> -<?xml version="1.0" encoding="UTF-8" standalone="no"?>
It looks like you just rotated the up arrow 90-degrees, and it isn't aligned with the pixel grid making it look blurry.
The original icon was derrived from `tango-icon-theme-0.8.90/scalable/actions/go-XXX.svg`, but with the layout adjusted to reduce the size to 24x24 while preserving the 1-pixel. The end result should match `tango-icon-theme-0.8.90/22x22/actions/go-XXX.svg` with a 1-pixel transparent border all around.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/672#note_6938
This should implement all of sessionStorage and most of the missing localStorage (except for the space quota for the latter). Some other common parts are still missing and pending (using props to directly access items in the underlying storage, and StorageEvents, which will come later).
On native, sessionStorage seems to be per-thread, and based on a specific origin, so it's implemented that way using a rbtree for origins in the thread local storage. The diff below (applied after all of the patches) should show that, which works on native as expected, but it's not in the actual commits because it crashes wine-gecko due to known multi-threading issues ([bug 37906](https://bugs.winehq.org/show_bug.cgi?id=37906)).
```diff
diff --git a/dlls/mshtml/tests/misc.c b/dlls/mshtml/tests/misc.c
index c2c8370..e358e9c 100644
--- a/dlls/mshtml/tests/misc.c
+++ b/dlls/mshtml/tests/misc.c
@@ -193,6 +193,32 @@ static HRESULT get_sessionstorage(IHTMLDocument2 *doc, IHTMLStorage **storage)
return hres;
}
+static DWORD WINAPI test_HTMLStorage_thread(void *data)
+{
+ IHTMLStorage *storage;
+ IHTMLDocument2 *doc;
+ BSTR key = data;
+ HRESULT hres;
+ VARIANT var;
+
+ CoInitialize(NULL);
+
+ doc = create_doc_from_url(L"http://www.codeweavers.com/");
+ hres = get_sessionstorage(doc, &storage);
+ ok(hres == S_OK, "got %08lx\n", hres);
+
+ V_VT(&var) = 0xdead;
+ hres = IHTMLStorage_getItem(storage, key, &var);
+ ok(hres == S_OK, "getItem failed: %08lx\n", hres);
+ ok(V_VT(&var) == VT_NULL, "got %d\n", V_VT(&var));
+
+ IHTMLStorage_Release(storage);
+ IHTMLDocument2_Release(doc);
+
+ CoUninitialize();
+ return 0;
+}
+
static void test_HTMLStorage(void)
{
IHTMLDocument2 *doc, *doc2;
@@ -200,7 +226,9 @@ static void test_HTMLStorage(void)
LONG space, length, lval;
VARIANT var;
BSTR key, value;
+ HANDLE thread;
HRESULT hres;
+ DWORD ret;
doc = create_doc_from_url(L"http://www.codeweavers.com/");
doc2 = create_doc_from_url(L"http://www.codeweavers.com/");
@@ -607,6 +635,12 @@ static void test_HTMLStorage(void)
ok(hres == S_OK, "get_remainingSpace failed %08lx\n", hres);
ok(lval == space, "remainingSpace = %ld\n", lval);
+ /* Different thread */
+ thread = CreateThread(NULL, 0, test_HTMLStorage_thread, key, 0, NULL);
+ ret = WaitForSingleObject(thread, INFINITE);
+ ok(ret == WAIT_OBJECT_0, "WaitForSingleObject returned %08lx\n", ret);
+ CloseHandle(thread);
+
hres = IHTMLStorage_clear(storage);
ok(hres == S_OK, "clear failed %08lx\n", hres);
```
There's another rbtree for the actual storage on a given origin, which contains key/value pairs, with keys stored inline because they do not change.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/704
On Thu Aug 25 10:37:24 2022 +0000, Robert Wilhelm wrote:
> Hi Etaash, you have to squash the formatting and whitespace changes into
> the first commit. The test build will run after each commit and bail out
> if there are errors and warnings.
lol it did nothing other than duplicate the commits,
pls help
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/706#note_6910