quickwin 2.3.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +1 -2
- package/README.md +1 -2
- package/constants.ts +22 -0
- package/enum_map.d.ts +4 -0
- package/examples/PdfCanvas.js +1 -1
- package/examples/PdfCanvas.tsx +2 -2
- package/examples/execd/main.js +491 -217
- package/examples/pdf_preview2.js +76 -67
- package/examples/pdf_preview2.ts +84 -64
- package/examples/pdf_viewer.js +4932 -1029
- package/examples/pdf_viewer.tsx +11 -22
- package/examples/test_gallery.js +308 -143
- package/examples/test_gallery.tsx +12 -7
- package/examples/test_react_lazy.js +295 -133
- package/examples/test_react_lazy.tsx +4 -3
- package/examples/test_react_listbox.js +293 -132
- package/examples/test_react_listbox.tsx +3 -2
- package/examples/test_root_window.js +283 -126
- package/examples/test_tab.js +295 -133
- package/examples/test_tab.tsx +4 -3
- package/examples/tray_demo.js +37 -30
- package/examples/tray_demo.tsx +39 -32
- package/lib/bitmap.js +40 -0
- package/lib/bitmap.ts +39 -0
- package/lib/certs.js +31 -3
- package/lib/certs.ts +32 -3
- package/lib/dpi.js +30 -0
- package/lib/dpi.ts +31 -0
- package/lib/dumpRects.js +14 -7
- package/lib/dumpRects.ts +14 -6
- package/lib/ffi/bind.js +5 -4
- package/lib/ffi/bind.ts +9 -8
- package/lib/http-server.js +50 -25
- package/lib/http-server.ts +51 -23
- package/lib/react-qw/components/DateTimePicker.js +6 -7
- package/lib/react-qw/components/Input.js +5 -1
- package/lib/react-qw/components/ListView.js +8 -6
- package/lib/react-qw/components/ScrollView.js +28 -22
- package/lib/react-qw/index.js +7 -5
- package/lib/react-qw/index.ts +5 -5
- package/lib/react-qw/props.js +3 -3
- package/lib/react-qw/props.ts +3 -3
- package/lib/react-qw/reconciler.js +12 -17
- package/lib/react-qw/reconciler.ts +12 -16
- package/lib/text-measure.js +9 -6
- package/lib/text-measure.ts +9 -6
- package/lib/windows/comctl32.js +3 -2
- package/lib/windows/comctl32.ts +3 -2
- package/lib/windows/gdi32.js +28 -6
- package/lib/windows/gdi32.ts +30 -6
- package/lib/windows/kernel32.js +9 -0
- package/lib/windows/kernel32.ts +9 -0
- package/lib/windows/shell32.js +11 -2
- package/lib/windows/shell32.ts +13 -2
- package/lib/windows/structs.js +51 -0
- package/lib/windows/structs.ts +55 -0
- package/lib/windows/user32.js +6 -5
- package/lib/windows/user32.ts +6 -5
- package/main.js +13 -5
- package/package.json +2 -2
- package/quickwin.d.ts +13 -115
- package/qwin-nowasm-x86.exe +0 -0
- package/qwin-nowasm.exe +0 -0
- package/qwin-x86.exe +0 -0
- package/qwin.exe +0 -0
- package/test/bench_ffi_callraw.js +3 -4
- package/test/bench_ffi_callraw.ts +3 -4
- package/test/debug/mupdf_debug.js +4 -22
- package/test/debug/wasm_export_debug.js +2 -12
- package/test/debug/wasm_names.js +3 -13
- package/test/example.pdf +0 -0
- package/test/mupdf-cdn.js +40 -0
- package/test/mupdf-cdn.ts +43 -0
- package/test/test_ffi.js +8 -9
- package/test/test_ffi.ts +8 -9
- package/test/test_ffi_abi.js +6 -6
- package/test/test_ffi_abi.ts +8 -8
- package/test/test_ffi_windows.js +82 -11
- package/test/test_ffi_windows.ts +85 -11
- package/test/test_gdi_draw.js +3 -3
- package/test/test_gdi_draw.ts +4 -4
- package/test/test_mupdf_render.js +4 -22
- package/test/test_mupdf_render.ts +4 -23
- package/test/test_mupdf_twice.js +4 -19
- package/test/test_mupdf_twice.ts +4 -20
- package/test/test_mupdf_wasm.js +10 -4
- package/test/test_mupdf_wasm.ts +6 -4
- package/test/test_react_complex.js +316 -140
- package/test/test_react_counter.js +295 -133
- package/test/test_react_flex.js +297 -138
- package/test/test_react_hidden.js +296 -134
- package/test/test_react_listview_link.js +288 -131
- package/test/test_react_notify.js +290 -133
- package/test/test_react_render.js +295 -133
- package/vendor/mupdf-wasm/mupdf-wasm.d.ts +0 -571
- package/vendor/mupdf-wasm/mupdf-wasm.js +0 -2749
- package/vendor/mupdf-wasm/mupdf-wasm.wasm +0 -0
- package/vendor/mupdf-wasm/mupdf.d.ts +0 -939
- package/vendor/mupdf-wasm/mupdf.js +0 -3317
|
@@ -1367,9 +1367,9 @@ var require_scheduler_development = __commonJS({
|
|
|
1367
1367
|
}
|
|
1368
1368
|
return first;
|
|
1369
1369
|
}
|
|
1370
|
-
function compare(a,
|
|
1371
|
-
var diff = a.sortIndex -
|
|
1372
|
-
return 0 !== diff ? diff : a.id -
|
|
1370
|
+
function compare(a, b7) {
|
|
1371
|
+
var diff = a.sortIndex - b7.sortIndex;
|
|
1372
|
+
return 0 !== diff ? diff : a.id - b7.id;
|
|
1373
1373
|
}
|
|
1374
1374
|
function advanceTimers(currentTime) {
|
|
1375
1375
|
for (var timer = peek(timerQueue); null !== timer; ) {
|
|
@@ -1667,14 +1667,14 @@ var require_react_reconciler_development = __commonJS({
|
|
|
1667
1667
|
throw Error("Unable to find node on an unmounted component.");
|
|
1668
1668
|
return alternate !== fiber ? null : fiber;
|
|
1669
1669
|
}
|
|
1670
|
-
for (var a = fiber,
|
|
1670
|
+
for (var a = fiber, b7 = alternate; ; ) {
|
|
1671
1671
|
var parentA = a.return;
|
|
1672
1672
|
if (null === parentA) break;
|
|
1673
1673
|
var parentB = parentA.alternate;
|
|
1674
1674
|
if (null === parentB) {
|
|
1675
|
-
|
|
1676
|
-
if (null !==
|
|
1677
|
-
a =
|
|
1675
|
+
b7 = parentA.return;
|
|
1676
|
+
if (null !== b7) {
|
|
1677
|
+
a = b7;
|
|
1678
1678
|
continue;
|
|
1679
1679
|
}
|
|
1680
1680
|
break;
|
|
@@ -1682,23 +1682,23 @@ var require_react_reconciler_development = __commonJS({
|
|
|
1682
1682
|
if (parentA.child === parentB.child) {
|
|
1683
1683
|
for (parentB = parentA.child; parentB; ) {
|
|
1684
1684
|
if (parentB === a) return assertIsMounted(parentA), fiber;
|
|
1685
|
-
if (parentB ===
|
|
1685
|
+
if (parentB === b7) return assertIsMounted(parentA), alternate;
|
|
1686
1686
|
parentB = parentB.sibling;
|
|
1687
1687
|
}
|
|
1688
1688
|
throw Error("Unable to find node on an unmounted component.");
|
|
1689
1689
|
}
|
|
1690
|
-
if (a.return !==
|
|
1690
|
+
if (a.return !== b7.return) a = parentA, b7 = parentB;
|
|
1691
1691
|
else {
|
|
1692
1692
|
for (var didFindChild = false, _child = parentA.child; _child; ) {
|
|
1693
1693
|
if (_child === a) {
|
|
1694
1694
|
didFindChild = true;
|
|
1695
1695
|
a = parentA;
|
|
1696
|
-
|
|
1696
|
+
b7 = parentB;
|
|
1697
1697
|
break;
|
|
1698
1698
|
}
|
|
1699
|
-
if (_child ===
|
|
1699
|
+
if (_child === b7) {
|
|
1700
1700
|
didFindChild = true;
|
|
1701
|
-
|
|
1701
|
+
b7 = parentA;
|
|
1702
1702
|
a = parentB;
|
|
1703
1703
|
break;
|
|
1704
1704
|
}
|
|
@@ -1709,12 +1709,12 @@ var require_react_reconciler_development = __commonJS({
|
|
|
1709
1709
|
if (_child === a) {
|
|
1710
1710
|
didFindChild = true;
|
|
1711
1711
|
a = parentB;
|
|
1712
|
-
|
|
1712
|
+
b7 = parentA;
|
|
1713
1713
|
break;
|
|
1714
1714
|
}
|
|
1715
|
-
if (_child ===
|
|
1715
|
+
if (_child === b7) {
|
|
1716
1716
|
didFindChild = true;
|
|
1717
|
-
|
|
1717
|
+
b7 = parentB;
|
|
1718
1718
|
a = parentA;
|
|
1719
1719
|
break;
|
|
1720
1720
|
}
|
|
@@ -1726,7 +1726,7 @@ var require_react_reconciler_development = __commonJS({
|
|
|
1726
1726
|
);
|
|
1727
1727
|
}
|
|
1728
1728
|
}
|
|
1729
|
-
if (a.alternate !==
|
|
1729
|
+
if (a.alternate !== b7)
|
|
1730
1730
|
throw Error(
|
|
1731
1731
|
"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue."
|
|
1732
1732
|
);
|
|
@@ -15071,10 +15071,10 @@ var require_react_reconciler_development = __commonJS({
|
|
|
15071
15071
|
setCurrentUpdatePriority(previousPriority), ReactSharedInternals.T = prevTransition;
|
|
15072
15072
|
}
|
|
15073
15073
|
};
|
|
15074
|
-
exports2.discreteUpdates = function(fn, a,
|
|
15074
|
+
exports2.discreteUpdates = function(fn, a, b7, c, d) {
|
|
15075
15075
|
var prevTransition = ReactSharedInternals.T, previousPriority = getCurrentUpdatePriority();
|
|
15076
15076
|
try {
|
|
15077
|
-
return setCurrentUpdatePriority(2), ReactSharedInternals.T = null, fn(a,
|
|
15077
|
+
return setCurrentUpdatePriority(2), ReactSharedInternals.T = null, fn(a, b7, c, d);
|
|
15078
15078
|
} finally {
|
|
15079
15079
|
setCurrentUpdatePriority(previousPriority), ReactSharedInternals.T = prevTransition, executionContext === NoContext && (workInProgressRootRenderTargetTime = now$1() + RENDER_TIMEOUT_MS);
|
|
15080
15080
|
}
|
|
@@ -15357,11 +15357,11 @@ var require_constants = __commonJS({
|
|
|
15357
15357
|
var import_jsx_runtime16 = __toESM(require_jsx_runtime(), 1);
|
|
15358
15358
|
var import_react18 = __toESM(require_react(), 1);
|
|
15359
15359
|
import "../lib/polyfill.js";
|
|
15360
|
-
import * as
|
|
15360
|
+
import * as gui17 from "gui";
|
|
15361
15361
|
import * as os5 from "os";
|
|
15362
15362
|
|
|
15363
15363
|
// _build/lib/react-qw/index.js
|
|
15364
|
-
import * as
|
|
15364
|
+
import * as gui16 from "gui";
|
|
15365
15365
|
|
|
15366
15366
|
// _build/lib/windows/user32.js
|
|
15367
15367
|
import * as os3 from "os";
|
|
@@ -15370,7 +15370,6 @@ import * as os3 from "os";
|
|
|
15370
15370
|
import * as ffi from "ffi";
|
|
15371
15371
|
import * as os2 from "os";
|
|
15372
15372
|
import * as std from "std";
|
|
15373
|
-
import * as win from "win";
|
|
15374
15373
|
|
|
15375
15374
|
// _build/lib/text-codec.js
|
|
15376
15375
|
var _labelMap = {
|
|
@@ -15392,19 +15391,19 @@ function _normalizeLabel(label) {
|
|
|
15392
15391
|
function _decodeUTF8(buf, fatal) {
|
|
15393
15392
|
let out = "";
|
|
15394
15393
|
for (let i = 0; i < buf.length; ) {
|
|
15395
|
-
const
|
|
15396
|
-
if (
|
|
15397
|
-
out += String.fromCharCode(
|
|
15394
|
+
const b7 = buf[i++];
|
|
15395
|
+
if (b7 < 128) {
|
|
15396
|
+
out += String.fromCharCode(b7);
|
|
15398
15397
|
continue;
|
|
15399
15398
|
}
|
|
15400
|
-
if (
|
|
15399
|
+
if (b7 < 192) {
|
|
15401
15400
|
out += fatal ? (() => {
|
|
15402
15401
|
throw new TypeError("unexpected continuation byte");
|
|
15403
15402
|
})() : "\uFFFD";
|
|
15404
15403
|
continue;
|
|
15405
15404
|
}
|
|
15406
15405
|
let c, min;
|
|
15407
|
-
if (
|
|
15406
|
+
if (b7 < 224) {
|
|
15408
15407
|
if (i >= buf.length) {
|
|
15409
15408
|
out += fatal ? (() => {
|
|
15410
15409
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15416,9 +15415,9 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15416
15415
|
out += "\uFFFD";
|
|
15417
15416
|
continue;
|
|
15418
15417
|
}
|
|
15419
|
-
c = (
|
|
15418
|
+
c = (b7 & 31) << 6 | b22 & 63;
|
|
15420
15419
|
min = 128;
|
|
15421
|
-
} else if (
|
|
15420
|
+
} else if (b7 < 240) {
|
|
15422
15421
|
if (i + 1 >= buf.length) {
|
|
15423
15422
|
out += fatal ? (() => {
|
|
15424
15423
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15431,9 +15430,9 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15431
15430
|
out += "\uFFFD";
|
|
15432
15431
|
continue;
|
|
15433
15432
|
}
|
|
15434
|
-
c = (
|
|
15433
|
+
c = (b7 & 15) << 12 | (b22 & 63) << 6 | b32 & 63;
|
|
15435
15434
|
min = 2048;
|
|
15436
|
-
} else if (
|
|
15435
|
+
} else if (b7 < 248) {
|
|
15437
15436
|
if (i + 2 >= buf.length) {
|
|
15438
15437
|
out += fatal ? (() => {
|
|
15439
15438
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15447,7 +15446,7 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15447
15446
|
out += "\uFFFD";
|
|
15448
15447
|
continue;
|
|
15449
15448
|
}
|
|
15450
|
-
c = (
|
|
15449
|
+
c = (b7 & 7) << 18 | (b22 & 63) << 12 | (b32 & 63) << 6 | b42 & 63;
|
|
15451
15450
|
min = 65536;
|
|
15452
15451
|
} else {
|
|
15453
15452
|
out += fatal ? (() => {
|
|
@@ -15751,7 +15750,7 @@ function loadDll(dll) {
|
|
|
15751
15750
|
const cached = _dllCache.get(dll);
|
|
15752
15751
|
if (cached !== void 0)
|
|
15753
15752
|
return cached;
|
|
15754
|
-
const loaded =
|
|
15753
|
+
const loaded = ffi.LoadLibrary(dll);
|
|
15755
15754
|
if (!loaded)
|
|
15756
15755
|
throw new Error(`ffi-bind: LoadLibrary("${dll}") failed`);
|
|
15757
15756
|
_dllCache.set(dll, loaded);
|
|
@@ -15961,7 +15960,7 @@ var BYTE = {
|
|
|
15961
15960
|
};
|
|
15962
15961
|
var builtinCodecs = { WCHAR, BYTE };
|
|
15963
15962
|
function bind(dll, name, sig, encoders, decoders) {
|
|
15964
|
-
const proc =
|
|
15963
|
+
const proc = ffi.GetProcAddress(loadDll(dll), name);
|
|
15965
15964
|
if (!proc)
|
|
15966
15965
|
throw new Error(`ffi-bind: proc "${name}" not found in ${dll}`);
|
|
15967
15966
|
const effDec = decoders ?? encoders;
|
|
@@ -16001,13 +16000,13 @@ function lower(v) {
|
|
|
16001
16000
|
type: { tag: "array", elementType: el.type, elementSize: el.size }
|
|
16002
16001
|
};
|
|
16003
16002
|
}
|
|
16004
|
-
const
|
|
16005
|
-
if (
|
|
16006
|
-
const rawUnit =
|
|
16003
|
+
const b7 = /^([A-Za-z_]\w*):(\d+)$/.exec(v);
|
|
16004
|
+
if (b7) {
|
|
16005
|
+
const rawUnit = b7[1];
|
|
16007
16006
|
const unit = normToken(rawUnit);
|
|
16008
16007
|
if (!isCNumberToken(unit) || unit === "f32" || unit === "f64")
|
|
16009
16008
|
throw new Error(`ffi-struct: bitfield unit must be an integer type, got "${rawUnit}"`);
|
|
16010
|
-
const width = Number(
|
|
16009
|
+
const width = Number(b7[2]);
|
|
16011
16010
|
const s2 = SizeAlign[unit];
|
|
16012
16011
|
const cap = s2 * 8;
|
|
16013
16012
|
if (!Number.isInteger(width) || width < 1)
|
|
@@ -16323,10 +16322,10 @@ function buildDecl(kind, member, pack) {
|
|
|
16323
16322
|
decl[k] = v;
|
|
16324
16323
|
return decl;
|
|
16325
16324
|
}
|
|
16326
|
-
function struct(a,
|
|
16325
|
+
function struct(a, b7, c) {
|
|
16327
16326
|
const isNamed = typeof a === "string";
|
|
16328
|
-
const raw = isNamed ?
|
|
16329
|
-
const opts = isNamed ? c :
|
|
16327
|
+
const raw = isNamed ? b7 : a;
|
|
16328
|
+
const opts = isNamed ? c : b7;
|
|
16330
16329
|
return createStruct(buildDecl("struct", raw, opts?.pack));
|
|
16331
16330
|
}
|
|
16332
16331
|
|
|
@@ -16351,6 +16350,17 @@ var SIZE_DECL = {
|
|
|
16351
16350
|
cy: "i32"
|
|
16352
16351
|
};
|
|
16353
16352
|
var SIZE = /* @__PURE__ */ struct("SIZE", SIZE_DECL);
|
|
16353
|
+
var SCROLLINFO_DECL = {
|
|
16354
|
+
"#": "struct",
|
|
16355
|
+
cbSize: "u32",
|
|
16356
|
+
fMask: "u32",
|
|
16357
|
+
nMin: "i32",
|
|
16358
|
+
nMax: "i32",
|
|
16359
|
+
nPage: "u32",
|
|
16360
|
+
nPos: "i32",
|
|
16361
|
+
nTrackPos: "i32"
|
|
16362
|
+
};
|
|
16363
|
+
var SCROLLINFO = /* @__PURE__ */ struct("SCROLLINFO", SCROLLINFO_DECL);
|
|
16354
16364
|
var LOGFONTW_DECL = {
|
|
16355
16365
|
"#": "struct",
|
|
16356
16366
|
lfHeight: "i32",
|
|
@@ -16369,6 +16379,41 @@ var LOGFONTW_DECL = {
|
|
|
16369
16379
|
lfFaceName: "u16[32]@utf-16le"
|
|
16370
16380
|
};
|
|
16371
16381
|
var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", LOGFONTW_DECL);
|
|
16382
|
+
var NONCLIENTMETRICSW_DECL = {
|
|
16383
|
+
"#": "struct",
|
|
16384
|
+
cbSize: "u32",
|
|
16385
|
+
iBorderWidth: "i32",
|
|
16386
|
+
iScrollWidth: "i32",
|
|
16387
|
+
iScrollHeight: "i32",
|
|
16388
|
+
iCaptionWidth: "i32",
|
|
16389
|
+
iCaptionHeight: "i32",
|
|
16390
|
+
lfCaptionFont: LOGFONTW_DECL,
|
|
16391
|
+
iSmCaptionWidth: "i32",
|
|
16392
|
+
iSmCaptionHeight: "i32",
|
|
16393
|
+
lfSmCaptionFont: LOGFONTW_DECL,
|
|
16394
|
+
iMenuWidth: "i32",
|
|
16395
|
+
iMenuHeight: "i32",
|
|
16396
|
+
lfMenuFont: LOGFONTW_DECL,
|
|
16397
|
+
lfStatusFont: LOGFONTW_DECL,
|
|
16398
|
+
lfMessageFont: LOGFONTW_DECL,
|
|
16399
|
+
iPaddedBorderWidth: "i32"
|
|
16400
|
+
};
|
|
16401
|
+
var NONCLIENTMETRICSW = /* @__PURE__ */ struct("NONCLIENTMETRICSW", NONCLIENTMETRICSW_DECL);
|
|
16402
|
+
var BITMAPINFOHEADER_DECL = {
|
|
16403
|
+
"#": "struct",
|
|
16404
|
+
biSize: "u32",
|
|
16405
|
+
biWidth: "i32",
|
|
16406
|
+
biHeight: "i32",
|
|
16407
|
+
biPlanes: "u16",
|
|
16408
|
+
biBitCount: "u16",
|
|
16409
|
+
biCompression: "u32",
|
|
16410
|
+
biSizeImage: "u32",
|
|
16411
|
+
biXPelsPerMeter: "i32",
|
|
16412
|
+
biYPelsPerMeter: "i32",
|
|
16413
|
+
biClrUsed: "u32",
|
|
16414
|
+
biClrImportant: "u32"
|
|
16415
|
+
};
|
|
16416
|
+
var BITMAPINFOHEADER = /* @__PURE__ */ struct("BITMAPINFOHEADER", BITMAPINFOHEADER_DECL);
|
|
16372
16417
|
var OPENFILENAMEW_DECL = {
|
|
16373
16418
|
"#": "struct",
|
|
16374
16419
|
lStructSize: "u32",
|
|
@@ -16575,24 +16620,34 @@ var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFY
|
|
|
16575
16620
|
var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
|
|
16576
16621
|
var _bProbe = b("GetDesktopWindow", " -> <HWND>ptr");
|
|
16577
16622
|
var LONG_PTR_SYM = os3.arch === "x64" ? "PtrW" : "W";
|
|
16623
|
+
var ShowWindow = /* @__PURE__ */ b("ShowWindow", "<HWND>ptr i32@ShowWindowCmd -> i32");
|
|
16578
16624
|
var SetWindowPos = /* @__PURE__ */ b("SetWindowPos", "<HWND>ptr <>ptr@SetWindowPosHwnd i32 i32 i32 i32 u32 -> i32");
|
|
16625
|
+
var GetWindowRect = /* @__PURE__ */ b("GetWindowRect", "<HWND>ptr <RECT>ptr -> i32");
|
|
16626
|
+
var GetClientRect = /* @__PURE__ */ b("GetClientRect", "<HWND>ptr <RECT>ptr -> i32");
|
|
16627
|
+
var GetWindowText = /* @__PURE__ */ b("GetWindowTextW", "<HWND>ptr <BYTE>ptr i32 -> i32");
|
|
16579
16628
|
var SetWindowText = /* @__PURE__ */ b("SetWindowTextW", "<HWND>ptr <WCHAR>ptr -> i32");
|
|
16629
|
+
var GetWindowTextLength = /* @__PURE__ */ b("GetWindowTextLengthW", "<HWND>ptr -> i32");
|
|
16580
16630
|
var GetWindowLongPtr = /* @__PURE__ */ b("GetWindowLong" + LONG_PTR_SYM, "<HWND>ptr i32@Gwlp -> <>ptr");
|
|
16581
16631
|
var SetWindowLongPtr = /* @__PURE__ */ b("SetWindowLong" + LONG_PTR_SYM, "<HWND>ptr i32@Gwlp <>ptr -> <>ptr");
|
|
16582
16632
|
var EnableWindow = /* @__PURE__ */ b("EnableWindow", "<HWND>ptr i32 -> i32");
|
|
16583
16633
|
var SetParent = /* @__PURE__ */ b("SetParent", "<HWND>ptr <HWND>ptr -> <HWND>ptr");
|
|
16634
|
+
var PostQuitMessage = /* @__PURE__ */ b("PostQuitMessage", "i32 -> void");
|
|
16584
16635
|
var DefWindowProc = /* @__PURE__ */ b("DefWindowProcW", "<HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr");
|
|
16585
16636
|
var CallWindowProc = /* @__PURE__ */ b("CallWindowProcW", "<>ptr <HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr");
|
|
16586
16637
|
var GetDC = /* @__PURE__ */ b("GetDC", "<HWND>ptr -> <HDC>ptr");
|
|
16587
16638
|
var ReleaseDC = /* @__PURE__ */ b("ReleaseDC", "<HWND>ptr <HDC>ptr! -> i32");
|
|
16588
16639
|
var DrawText = /* @__PURE__ */ b("DrawTextW", "<HDC>ptr! <WCHAR>ptr i32 <RECT>ptr i32 -> i32");
|
|
16589
16640
|
var InvalidateRect = /* @__PURE__ */ b("InvalidateRect", "<HWND>ptr <RECT>ptr i32 -> i32", { RECT });
|
|
16641
|
+
var UpdateWindow = /* @__PURE__ */ b("UpdateWindow", "<HWND>ptr -> i32");
|
|
16590
16642
|
var SetCursor = /* @__PURE__ */ b("SetCursor", "<HCURSOR>ptr -> <HCURSOR>ptr");
|
|
16591
16643
|
var LoadCursor = /* @__PURE__ */ b("LoadCursorW", "<HMODULE>ptr <>ptr -> <HCURSOR>ptr");
|
|
16592
16644
|
var GetCursorPos = /* @__PURE__ */ b("GetCursorPos", "<POINT>ptr -> i32");
|
|
16593
16645
|
var ScreenToClient = /* @__PURE__ */ b("ScreenToClient", "<HWND>ptr <POINT>ptr -> i32");
|
|
16646
|
+
var SetScrollInfo = /* @__PURE__ */ b("SetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr i32 -> i32", { SCROLLINFO });
|
|
16647
|
+
var GetScrollInfo = /* @__PURE__ */ b("GetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr -> i32");
|
|
16594
16648
|
var ShowScrollBar = /* @__PURE__ */ b("ShowScrollBar", "<HWND>ptr u32 i32 -> i32");
|
|
16595
16649
|
var GetSystemMetrics = /* @__PURE__ */ b("GetSystemMetrics", "i32 -> i32");
|
|
16650
|
+
var SystemParametersInfo = /* @__PURE__ */ b("SystemParametersInfoW", "u32 u32 <BYTE>ptr u32 -> i32");
|
|
16596
16651
|
|
|
16597
16652
|
// _build/lib/react-qw/reconciler.js
|
|
16598
16653
|
var import_react_reconciler = __toESM(require_react_reconciler(), 1);
|
|
@@ -16607,8 +16662,33 @@ var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
|
|
|
16607
16662
|
var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
|
|
16608
16663
|
var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
|
|
16609
16664
|
var SelectObject = /* @__PURE__ */ b2("SelectObject", "<HDC>ptr! <HGDIOBJ>ptr -> <HGDIOBJ>ptr");
|
|
16665
|
+
var CreateDIBSection = /* @__PURE__ */ b2("CreateDIBSection", "<HDC>ptr <>ptr u32@ColorUse <>ptr <>ptr u32 -> <HGDIOBJ>ptr");
|
|
16666
|
+
var SetDIBits = /* @__PURE__ */ b2("SetDIBits", "<HDC>ptr <HGDIOBJ>ptr! u32 u32 <BYTE>ptr <>ptr u32@ColorUse -> i32");
|
|
16610
16667
|
var GetObject = /* @__PURE__ */ b2("GetObjectW", "<HGDIOBJ>ptr i32 <BYTE>ptr -> i32");
|
|
16611
16668
|
|
|
16669
|
+
// _build/lib/dpi.js
|
|
16670
|
+
function getScaleFactor() {
|
|
16671
|
+
const hdc = GetDC(NULL);
|
|
16672
|
+
const dpi = hdc ? GetDeviceCaps(
|
|
16673
|
+
hdc,
|
|
16674
|
+
88
|
|
16675
|
+
/* DeviceCap.LOGPIXELSX */
|
|
16676
|
+
) : 96;
|
|
16677
|
+
if (hdc)
|
|
16678
|
+
ReleaseDC(NULL, hdc);
|
|
16679
|
+
return dpi / 96;
|
|
16680
|
+
}
|
|
16681
|
+
function createSystemDpiFont() {
|
|
16682
|
+
const ncm = NONCLIENTMETRICSW.encode({ cbSize: NONCLIENTMETRICSW.size });
|
|
16683
|
+
if (!SystemParametersInfo(41, NONCLIENTMETRICSW.size, ncm, 0)) {
|
|
16684
|
+
const legacySize = NONCLIENTMETRICSW.size - 4;
|
|
16685
|
+
NONCLIENTMETRICSW.encode({ cbSize: legacySize }, ncm);
|
|
16686
|
+
if (!SystemParametersInfo(41, legacySize, ncm, 0))
|
|
16687
|
+
return NULL;
|
|
16688
|
+
}
|
|
16689
|
+
return CreateFontIndirect(NONCLIENTMETRICSW.decode(ncm).lfMessageFont);
|
|
16690
|
+
}
|
|
16691
|
+
|
|
16612
16692
|
// _build/lib/react-qw/props.js
|
|
16613
16693
|
import * as gui from "gui";
|
|
16614
16694
|
function applyProps(instance, newProps, _oldProps) {
|
|
@@ -16632,14 +16712,14 @@ function applyProps(instance, newProps, _oldProps) {
|
|
|
16632
16712
|
EnableWindow(hwnd2, !newProps.disabled ? 1 : 0);
|
|
16633
16713
|
}
|
|
16634
16714
|
if ("hidden" in newProps) {
|
|
16635
|
-
|
|
16715
|
+
ShowWindow(
|
|
16636
16716
|
hwnd2,
|
|
16637
16717
|
newProps.hidden ? 0 : 5
|
|
16638
16718
|
/* ShowWindowCmd.SHOW */
|
|
16639
16719
|
);
|
|
16640
16720
|
}
|
|
16641
16721
|
if ("visible" in newProps) {
|
|
16642
|
-
|
|
16722
|
+
ShowWindow(
|
|
16643
16723
|
hwnd2,
|
|
16644
16724
|
newProps.visible ? 5 : 0
|
|
16645
16725
|
/* ShowWindowCmd.HIDE */
|
|
@@ -16759,24 +16839,21 @@ function measureTextForHwnd(hwnd2, text) {
|
|
|
16759
16839
|
if (hFont)
|
|
16760
16840
|
SelectObject(hdc, oldFont);
|
|
16761
16841
|
ReleaseDC(hwnd2, hdc);
|
|
16762
|
-
const wr =
|
|
16763
|
-
const cr =
|
|
16764
|
-
|
|
16765
|
-
|
|
16766
|
-
|
|
16842
|
+
const wr = RECT.alloc();
|
|
16843
|
+
const cr = RECT.alloc();
|
|
16844
|
+
const okWr = GetWindowRect(hwnd2, wr.ptr);
|
|
16845
|
+
const okCr = GetClientRect(hwnd2, cr.ptr);
|
|
16846
|
+
if (okWr && okCr) {
|
|
16847
|
+
const w = RECT.decode(wr), c = RECT.decode(cr);
|
|
16848
|
+
result.width += w.right - w.left - (c.right - c.left);
|
|
16849
|
+
result.height += w.bottom - w.top - (c.bottom - c.top);
|
|
16767
16850
|
}
|
|
16768
16851
|
return result;
|
|
16769
16852
|
}
|
|
16770
16853
|
|
|
16771
16854
|
// _build/lib/react-qw/reconciler.js
|
|
16772
|
-
var dpiFont =
|
|
16773
|
-
var scaleFactor = (
|
|
16774
|
-
const hdc = GetDC(NULL);
|
|
16775
|
-
const dpi = hdc ? GetDeviceCaps(hdc, 88) : 96;
|
|
16776
|
-
if (hdc)
|
|
16777
|
-
ReleaseDC(NULL, hdc);
|
|
16778
|
-
return dpi / 96;
|
|
16779
|
-
})();
|
|
16855
|
+
var dpiFont = createSystemDpiFont();
|
|
16856
|
+
var scaleFactor = getScaleFactor();
|
|
16780
16857
|
var DELAYED_CONTROLS = /* @__PURE__ */ new Set(["SysListView32", "SysTreeView32", "LISTBOX", "COMBOBOX", "msctls_trackbar32", "SysDateTimePick32", "SysLink"]);
|
|
16781
16858
|
function isDelayedControl(winClass) {
|
|
16782
16859
|
return DELAYED_CONTROLS.has(winClass);
|
|
@@ -16822,11 +16899,12 @@ function runFlexLayout(inst) {
|
|
|
16822
16899
|
const visible = children.filter((c) => !c.props.hidden);
|
|
16823
16900
|
if (visible.length === 0)
|
|
16824
16901
|
return;
|
|
16825
|
-
const
|
|
16826
|
-
if (!
|
|
16902
|
+
const rcBuf = RECT.alloc();
|
|
16903
|
+
if (!GetClientRect(inst.hwnd, rcBuf.ptr)) {
|
|
16827
16904
|
console.log("flex: no rect for", inst.hwnd, inst.type);
|
|
16828
16905
|
return;
|
|
16829
16906
|
}
|
|
16907
|
+
const rect = RECT.decode(rcBuf);
|
|
16830
16908
|
const pw = (rect.right - rect.left) / scaleFactor;
|
|
16831
16909
|
const ph = (rect.bottom - rect.top) / scaleFactor;
|
|
16832
16910
|
if (pw <= 0 || ph <= 0) {
|
|
@@ -17027,7 +17105,7 @@ var hostConfig = {
|
|
|
17027
17105
|
},
|
|
17028
17106
|
hideInstance(instance) {
|
|
17029
17107
|
if (instance.hwnd !== null)
|
|
17030
|
-
|
|
17108
|
+
ShowWindow(
|
|
17031
17109
|
instance.hwnd,
|
|
17032
17110
|
0
|
|
17033
17111
|
/* ShowWindowCmd.HIDE */
|
|
@@ -17035,7 +17113,7 @@ var hostConfig = {
|
|
|
17035
17113
|
},
|
|
17036
17114
|
hideTextInstance(instance) {
|
|
17037
17115
|
if (instance.hwnd !== null)
|
|
17038
|
-
|
|
17116
|
+
ShowWindow(
|
|
17039
17117
|
instance.hwnd,
|
|
17040
17118
|
0
|
|
17041
17119
|
/* ShowWindowCmd.HIDE */
|
|
@@ -17043,7 +17121,7 @@ var hostConfig = {
|
|
|
17043
17121
|
},
|
|
17044
17122
|
unhideInstance(instance, _props) {
|
|
17045
17123
|
if (instance.hwnd !== null)
|
|
17046
|
-
|
|
17124
|
+
ShowWindow(
|
|
17047
17125
|
instance.hwnd,
|
|
17048
17126
|
5
|
|
17049
17127
|
/* ShowWindowCmd.SHOW */
|
|
@@ -17051,7 +17129,7 @@ var hostConfig = {
|
|
|
17051
17129
|
},
|
|
17052
17130
|
unhideTextInstance(instance, _text) {
|
|
17053
17131
|
if (instance.hwnd !== null)
|
|
17054
|
-
|
|
17132
|
+
ShowWindow(
|
|
17055
17133
|
instance.hwnd,
|
|
17056
17134
|
5
|
|
17057
17135
|
/* ShowWindowCmd.SHOW */
|
|
@@ -17298,11 +17376,10 @@ var DateTimePicker = (0, import_react5.forwardRef)(function DateTimePicker2({ va
|
|
|
17298
17376
|
if (!h)
|
|
17299
17377
|
return;
|
|
17300
17378
|
InvalidateRect(h, NULL, 1);
|
|
17301
|
-
const cr =
|
|
17302
|
-
if (cr) {
|
|
17303
|
-
const
|
|
17304
|
-
|
|
17305
|
-
gui6.SendMessage(h, 5, 0, hh << 16 | w);
|
|
17379
|
+
const cr = RECT.alloc();
|
|
17380
|
+
if (GetClientRect(h, cr.ptr)) {
|
|
17381
|
+
const { left, top, right, bottom } = RECT.decode(cr);
|
|
17382
|
+
gui6.SendMessage(h, 5, 0, bottom - top << 16 | right - left);
|
|
17306
17383
|
}
|
|
17307
17384
|
}, []);
|
|
17308
17385
|
return (0, import_jsx_runtime4.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
@@ -17363,7 +17440,10 @@ var Input = (0, import_react6.forwardRef)(({ value: controlledValue, defaultValu
|
|
|
17363
17440
|
const h = inputRef.current;
|
|
17364
17441
|
if (!h)
|
|
17365
17442
|
return;
|
|
17366
|
-
const
|
|
17443
|
+
const cap = GetWindowTextLength(h) + 1;
|
|
17444
|
+
const buf = WCHAR.alloc(cap);
|
|
17445
|
+
GetWindowText(h, buf, cap);
|
|
17446
|
+
const newText = WCHAR.decode(buf);
|
|
17367
17447
|
if (!isControlled)
|
|
17368
17448
|
setInternalValue(newText);
|
|
17369
17449
|
onChange?.(newText);
|
|
@@ -17451,6 +17531,49 @@ var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
|
|
|
17451
17531
|
var import_react9 = __toESM(require_react(), 1);
|
|
17452
17532
|
import * as gui9 from "gui";
|
|
17453
17533
|
import * as ffi3 from "ffi";
|
|
17534
|
+
|
|
17535
|
+
// _build/lib/bitmap.js
|
|
17536
|
+
function createBitmapFromPixels(width, height, pixels) {
|
|
17537
|
+
if (width <= 0 || height <= 0)
|
|
17538
|
+
return NULL;
|
|
17539
|
+
const len = width * height * 4;
|
|
17540
|
+
if (pixels.byteLength < len)
|
|
17541
|
+
return NULL;
|
|
17542
|
+
const bi = BITMAPINFOHEADER.encode({
|
|
17543
|
+
biSize: BITMAPINFOHEADER.size,
|
|
17544
|
+
biWidth: width,
|
|
17545
|
+
biHeight: -height,
|
|
17546
|
+
biPlanes: 1,
|
|
17547
|
+
biBitCount: 32
|
|
17548
|
+
});
|
|
17549
|
+
const hbm = CreateDIBSection(NULL, bi.ptr, 0, NULL, NULL, 0);
|
|
17550
|
+
if (!hbm)
|
|
17551
|
+
return NULL;
|
|
17552
|
+
const src = new PtrArrayBuffer(len);
|
|
17553
|
+
new Uint8Array(src).set(new Uint8Array(pixels, 0, len));
|
|
17554
|
+
if (SetDIBits(
|
|
17555
|
+
NULL,
|
|
17556
|
+
hbm,
|
|
17557
|
+
0,
|
|
17558
|
+
height,
|
|
17559
|
+
src,
|
|
17560
|
+
bi.ptr,
|
|
17561
|
+
0
|
|
17562
|
+
/* ColorUse.RGB_COLORS */
|
|
17563
|
+
) !== height) {
|
|
17564
|
+
DeleteObject(hbm);
|
|
17565
|
+
return NULL;
|
|
17566
|
+
}
|
|
17567
|
+
return hbm;
|
|
17568
|
+
}
|
|
17569
|
+
|
|
17570
|
+
// _build/lib/windows/comctl32.js
|
|
17571
|
+
var b3 = (name, sig) => bind("comctl32.dll", name, sig);
|
|
17572
|
+
var ImageListCreate = /* @__PURE__ */ b3("ImageList_Create", "i32 i32 u32 i32 i32 -> <HIMAGELIST>ptr");
|
|
17573
|
+
var ImageListAdd = /* @__PURE__ */ b3("ImageList_Add", "<HIMAGELIST>ptr <HGDIOBJ>ptr <HGDIOBJ>ptr -> i32");
|
|
17574
|
+
var ImageListDestroy = /* @__PURE__ */ b3("ImageList_Destroy", "<HIMAGELIST>ptr -> i32");
|
|
17575
|
+
|
|
17576
|
+
// _build/lib/react-qw/components/ListView.js
|
|
17454
17577
|
function writeU32(ptr, offset, v) {
|
|
17455
17578
|
ffi3.writeByte(ptr + offset, v & 255);
|
|
17456
17579
|
ffi3.writeByte(ptr + offset + 1, v >> 8 & 255);
|
|
@@ -17540,7 +17663,7 @@ function resolveCellStyle(columns, data, row, colIndex) {
|
|
|
17540
17663
|
}
|
|
17541
17664
|
function makeLVItem(i, sub, text, image) {
|
|
17542
17665
|
const textBuf = WCHAR.encode(text);
|
|
17543
|
-
const
|
|
17666
|
+
const b7 = LVITEMW.encode({
|
|
17544
17667
|
mask: 1 | (image !== void 0 ? 2 : 0),
|
|
17545
17668
|
iItem: i,
|
|
17546
17669
|
iSubItem: sub,
|
|
@@ -17557,32 +17680,32 @@ function makeLVItem(i, sub, text, image) {
|
|
|
17557
17680
|
piColFmt: 0,
|
|
17558
17681
|
iGroup: 0
|
|
17559
17682
|
});
|
|
17560
|
-
|
|
17561
|
-
return
|
|
17683
|
+
b7.__textBuf = textBuf;
|
|
17684
|
+
return b7;
|
|
17562
17685
|
}
|
|
17563
17686
|
var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, data, style, icons, iconSize, getIcon }, ref) {
|
|
17564
17687
|
const lvRef = (0, import_react9.useRef)(null);
|
|
17565
|
-
const iconListRef = (0, import_react9.useRef)(
|
|
17688
|
+
const iconListRef = (0, import_react9.useRef)(NULL);
|
|
17566
17689
|
(0, import_react9.useEffect)(() => {
|
|
17567
17690
|
const h = lvRef.current;
|
|
17568
17691
|
if (!h)
|
|
17569
17692
|
return;
|
|
17570
17693
|
const il = iconListRef.current;
|
|
17571
|
-
iconListRef.current =
|
|
17694
|
+
iconListRef.current = NULL;
|
|
17572
17695
|
if (il) {
|
|
17573
17696
|
gui9.SendMessage(h, 4099, 1, 0);
|
|
17574
|
-
|
|
17697
|
+
ImageListDestroy(il);
|
|
17575
17698
|
}
|
|
17576
17699
|
if (!icons || icons.length === 0)
|
|
17577
17700
|
return;
|
|
17578
17701
|
const size = iconSize ?? 32;
|
|
17579
|
-
const img =
|
|
17702
|
+
const img = ImageListCreate(size, size, 32, icons.length, 1);
|
|
17580
17703
|
if (!img)
|
|
17581
17704
|
return;
|
|
17582
17705
|
for (const p of icons) {
|
|
17583
|
-
const hbm =
|
|
17706
|
+
const hbm = createBitmapFromPixels(size, size, p);
|
|
17584
17707
|
if (hbm) {
|
|
17585
|
-
|
|
17708
|
+
ImageListAdd(img, hbm, NULL);
|
|
17586
17709
|
DeleteObject(hbm);
|
|
17587
17710
|
}
|
|
17588
17711
|
}
|
|
@@ -17763,22 +17886,19 @@ var RadioButton = (0, import_react11.forwardRef)(({ checked: controlledChecked,
|
|
|
17763
17886
|
// _build/lib/react-qw/components/ScrollView.js
|
|
17764
17887
|
var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
|
|
17765
17888
|
var import_react12 = __toESM(require_react(), 1);
|
|
17766
|
-
import * as gui12 from "gui";
|
|
17767
17889
|
var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth, contentHeight }, ref) => {
|
|
17768
17890
|
const svRef = (0, import_react12.useRef)(null);
|
|
17769
17891
|
const contentRef = (0, import_react12.useRef)(null);
|
|
17770
17892
|
const scrollXRef = (0, import_react12.useRef)(0);
|
|
17771
17893
|
const scrollYRef = (0, import_react12.useRef)(0);
|
|
17772
17894
|
function updateScroll(sv, content) {
|
|
17773
|
-
const
|
|
17774
|
-
if (!
|
|
17895
|
+
const svBuf = RECT.alloc();
|
|
17896
|
+
if (!GetClientRect(sv, svBuf.ptr))
|
|
17775
17897
|
return;
|
|
17776
|
-
const
|
|
17777
|
-
const
|
|
17778
|
-
const
|
|
17779
|
-
const scale =
|
|
17780
|
-
if (hdc)
|
|
17781
|
-
ReleaseDC(NULL, hdc);
|
|
17898
|
+
const { left, top, right, bottom } = RECT.decode(svBuf);
|
|
17899
|
+
const svW = right - left;
|
|
17900
|
+
const svH = bottom - top;
|
|
17901
|
+
const scale = getScaleFactor();
|
|
17782
17902
|
const natW = Math.round((contentWidth ?? svW / scale) * scale);
|
|
17783
17903
|
const natH = Math.round((contentHeight ?? svH / scale) * scale);
|
|
17784
17904
|
scrollXRef.current = Math.max(0, Math.min(scrollXRef.current, natW - svW));
|
|
@@ -17795,14 +17915,28 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17795
17915
|
);
|
|
17796
17916
|
forceFlexLayout(content);
|
|
17797
17917
|
if (natW > svW) {
|
|
17798
|
-
|
|
17918
|
+
SetScrollInfo(sv, 0, {
|
|
17919
|
+
cbSize: SCROLLINFO.size,
|
|
17920
|
+
fMask: 1 | 2 | 4,
|
|
17921
|
+
nMin: 0,
|
|
17922
|
+
nMax: natW - 1,
|
|
17923
|
+
nPage: svW,
|
|
17924
|
+
nPos: scrollXRef.current
|
|
17925
|
+
}, 1);
|
|
17799
17926
|
ShowScrollBar(sv, 0, 1);
|
|
17800
17927
|
} else {
|
|
17801
17928
|
scrollXRef.current = 0;
|
|
17802
17929
|
ShowScrollBar(sv, 0, 0);
|
|
17803
17930
|
}
|
|
17804
17931
|
if (natH > svH) {
|
|
17805
|
-
|
|
17932
|
+
SetScrollInfo(sv, 1, {
|
|
17933
|
+
cbSize: SCROLLINFO.size,
|
|
17934
|
+
fMask: 1 | 2 | 4,
|
|
17935
|
+
nMin: 0,
|
|
17936
|
+
nMax: natH - 1,
|
|
17937
|
+
nPage: svH,
|
|
17938
|
+
nPos: scrollYRef.current
|
|
17939
|
+
}, 1);
|
|
17806
17940
|
ShowScrollBar(sv, 1, 1);
|
|
17807
17941
|
} else {
|
|
17808
17942
|
scrollYRef.current = 0;
|
|
@@ -17832,15 +17966,21 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17832
17966
|
1 | 4
|
|
17833
17967
|
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17834
17968
|
);
|
|
17835
|
-
|
|
17969
|
+
SetScrollInfo(sv, bar, { cbSize: SCROLLINFO.size, fMask: 4, nPos: newPos }, 1);
|
|
17836
17970
|
}
|
|
17837
17971
|
function handleScroll(e, bar) {
|
|
17838
17972
|
const sv = svRef.current;
|
|
17839
17973
|
const content = contentRef.current;
|
|
17840
17974
|
if (!sv || !content)
|
|
17841
17975
|
return;
|
|
17842
|
-
const
|
|
17843
|
-
|
|
17976
|
+
const si = SCROLLINFO.encode({
|
|
17977
|
+
cbSize: SCROLLINFO.size,
|
|
17978
|
+
fMask: 23
|
|
17979
|
+
/* ScrollInfoFlag.ALL */
|
|
17980
|
+
});
|
|
17981
|
+
GetScrollInfo(sv, bar, si.ptr);
|
|
17982
|
+
const info = SCROLLINFO.decode(si);
|
|
17983
|
+
const maxPos = info.nMax - info.nPage + 1;
|
|
17844
17984
|
const code = e.wParam & 65535;
|
|
17845
17985
|
const ref_ = bar === 1 ? scrollYRef : scrollXRef;
|
|
17846
17986
|
let newPos = ref_.current;
|
|
@@ -17851,9 +17991,9 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17851
17991
|
else if (code === 1)
|
|
17852
17992
|
newPos += 20;
|
|
17853
17993
|
else if (code === 2)
|
|
17854
|
-
newPos -= info.
|
|
17994
|
+
newPos -= info.nPage;
|
|
17855
17995
|
else if (code === 3)
|
|
17856
|
-
newPos += info.
|
|
17996
|
+
newPos += info.nPage;
|
|
17857
17997
|
else
|
|
17858
17998
|
return;
|
|
17859
17999
|
newPos = Math.max(0, Math.min(maxPos, newPos));
|
|
@@ -17873,8 +18013,14 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17873
18013
|
if (!isHorz && contentHeight === void 0)
|
|
17874
18014
|
return;
|
|
17875
18015
|
const bar = isHorz ? 0 : 1;
|
|
17876
|
-
const
|
|
17877
|
-
|
|
18016
|
+
const si = SCROLLINFO.encode({
|
|
18017
|
+
cbSize: SCROLLINFO.size,
|
|
18018
|
+
fMask: 23
|
|
18019
|
+
/* ScrollInfoFlag.ALL */
|
|
18020
|
+
});
|
|
18021
|
+
GetScrollInfo(sv, bar, si.ptr);
|
|
18022
|
+
const info = SCROLLINFO.decode(si);
|
|
18023
|
+
const maxPos = info.nMax - info.nPage + 1;
|
|
17878
18024
|
const ref_ = isHorz ? scrollXRef : scrollYRef;
|
|
17879
18025
|
let newPos = ref_.current + dy;
|
|
17880
18026
|
newPos = Math.max(0, Math.min(maxPos, newPos));
|
|
@@ -17922,7 +18068,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17922
18068
|
// _build/lib/react-qw/components/Slider.js
|
|
17923
18069
|
var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
|
|
17924
18070
|
var import_react13 = __toESM(require_react(), 1);
|
|
17925
|
-
import * as
|
|
18071
|
+
import * as gui12 from "gui";
|
|
17926
18072
|
var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 100, vertical = false, disabled, style }, ref) => {
|
|
17927
18073
|
const wrapperRef = (0, import_react13.useRef)(null);
|
|
17928
18074
|
const sliderRef = (0, import_react13.useRef)(null);
|
|
@@ -17931,14 +18077,14 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17931
18077
|
if (!h)
|
|
17932
18078
|
return;
|
|
17933
18079
|
const lParam = min & 65535 | (max & 65535) << 16;
|
|
17934
|
-
|
|
17935
|
-
|
|
18080
|
+
gui12.SendMessage(h, 1030, 0, lParam);
|
|
18081
|
+
gui12.SendMessage(h, 1029, 1, value);
|
|
17936
18082
|
}, [min, max]);
|
|
17937
18083
|
(0, import_react13.useEffect)(() => {
|
|
17938
18084
|
const h = sliderRef.current;
|
|
17939
18085
|
if (!h)
|
|
17940
18086
|
return;
|
|
17941
|
-
|
|
18087
|
+
gui12.SendMessage(h, 1029, 1, value);
|
|
17942
18088
|
}, [value]);
|
|
17943
18089
|
const tbStyle = 268435456 | 65536 | 1 | (vertical ? 2 : 0);
|
|
17944
18090
|
return (0, import_jsx_runtime12.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style, ref: (h) => {
|
|
@@ -17955,7 +18101,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17955
18101
|
const h = sliderRef.current;
|
|
17956
18102
|
if (!h)
|
|
17957
18103
|
return 0;
|
|
17958
|
-
const pos =
|
|
18104
|
+
const pos = gui12.SendMessage(h, 1024, 0, 0);
|
|
17959
18105
|
onChange?.(pos);
|
|
17960
18106
|
return 0;
|
|
17961
18107
|
}
|
|
@@ -17968,7 +18114,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17968
18114
|
// _build/lib/react-qw/components/Tab.js
|
|
17969
18115
|
var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
|
|
17970
18116
|
var import_react14 = __toESM(require_react(), 1);
|
|
17971
|
-
import * as
|
|
18117
|
+
import * as gui13 from "gui";
|
|
17972
18118
|
var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex, defaultSelectedIndex = 0, onChange, style }, ref) => {
|
|
17973
18119
|
const [internalIndex, setInternalIndex] = (0, import_react14.useState)(defaultSelectedIndex);
|
|
17974
18120
|
const isControlled = controlledIndex !== void 0;
|
|
@@ -17978,7 +18124,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
17978
18124
|
const h = tabHwnd.current;
|
|
17979
18125
|
if (!h)
|
|
17980
18126
|
return;
|
|
17981
|
-
|
|
18127
|
+
gui13.SendMessage(h, 4873, 0, 0);
|
|
17982
18128
|
for (let i = 0; i < tabs.length; i++) {
|
|
17983
18129
|
const titleBuf = WCHAR.encode(tabs[i].title);
|
|
17984
18130
|
const tci = TCITEMW.encode({
|
|
@@ -17991,14 +18137,14 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
17991
18137
|
lParam: 0
|
|
17992
18138
|
});
|
|
17993
18139
|
const tciPtr = tci.ptr;
|
|
17994
|
-
|
|
18140
|
+
gui13.SendMessage(h, 4926, i, tciPtr);
|
|
17995
18141
|
}
|
|
17996
|
-
|
|
18142
|
+
gui13.SendMessage(h, 4876, sel, 0);
|
|
17997
18143
|
}, [tabs]);
|
|
17998
18144
|
(0, import_react14.useEffect)(() => {
|
|
17999
18145
|
const h = tabHwnd.current;
|
|
18000
18146
|
if (h)
|
|
18001
|
-
|
|
18147
|
+
gui13.SendMessage(h, 4876, sel, 0);
|
|
18002
18148
|
}, [sel]);
|
|
18003
18149
|
return (0, import_jsx_runtime13.jsxs)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
18004
18150
|
if (e.msg === 78) {
|
|
@@ -18007,7 +18153,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
18007
18153
|
return;
|
|
18008
18154
|
const code = nmCode(e.lParam);
|
|
18009
18155
|
if (code === -552 || code === -2) {
|
|
18010
|
-
const newSel =
|
|
18156
|
+
const newSel = gui13.SendMessage(h, 4875, 0, 0);
|
|
18011
18157
|
if (newSel !== sel) {
|
|
18012
18158
|
if (!isControlled)
|
|
18013
18159
|
setInternalIndex(newSel);
|
|
@@ -18020,12 +18166,12 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
18020
18166
|
|
|
18021
18167
|
// _build/lib/react-qw/components/Tooltip.js
|
|
18022
18168
|
var import_react15 = __toESM(require_react(), 1);
|
|
18023
|
-
import * as
|
|
18169
|
+
import * as gui14 from "gui";
|
|
18024
18170
|
|
|
18025
18171
|
// _build/lib/react-qw/components/TreeView.js
|
|
18026
18172
|
var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
|
|
18027
18173
|
var import_react16 = __toESM(require_react(), 1);
|
|
18028
|
-
import * as
|
|
18174
|
+
import * as gui15 from "gui";
|
|
18029
18175
|
function buildTvItem(textPtr, cChildren) {
|
|
18030
18176
|
let mask = 1;
|
|
18031
18177
|
if (cChildren > 0)
|
|
@@ -18050,20 +18196,20 @@ function insertItems(hTree, nodes, parentHandle, hItemMap, keyMap) {
|
|
|
18050
18196
|
const itemBuf = buildTvItem(textBuf.ptr, cChildren);
|
|
18051
18197
|
const item = TVITEM.decode(itemBuf);
|
|
18052
18198
|
const tvins = TVINSERTSTRUCT.encode({ hParent: parentHandle, hInsertAfter: -65536, item });
|
|
18053
|
-
const hItem =
|
|
18199
|
+
const hItem = gui15.SendMessage(hTree, 4402, 0, tvins.ptr);
|
|
18054
18200
|
hItemMap.set(hItem, node);
|
|
18055
18201
|
if (node.key)
|
|
18056
18202
|
keyMap.set(node.key, hItem);
|
|
18057
18203
|
if (node.children && node.children.length > 0) {
|
|
18058
18204
|
insertItems(hTree, node.children, hItem, hItemMap, keyMap);
|
|
18059
|
-
|
|
18205
|
+
gui15.SendMessage(hTree, 4354, 2, hItem);
|
|
18060
18206
|
}
|
|
18061
18207
|
}
|
|
18062
18208
|
}
|
|
18063
18209
|
function deleteAllItems(hTree) {
|
|
18064
|
-
const n =
|
|
18210
|
+
const n = gui15.SendMessage(hTree, 4357, 0, 0);
|
|
18065
18211
|
if (n > 0)
|
|
18066
|
-
|
|
18212
|
+
gui15.SendMessage(
|
|
18067
18213
|
hTree,
|
|
18068
18214
|
4353,
|
|
18069
18215
|
1,
|
|
@@ -18095,7 +18241,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18095
18241
|
const h = tvRef.current;
|
|
18096
18242
|
if (!h)
|
|
18097
18243
|
return;
|
|
18098
|
-
|
|
18244
|
+
gui15.SendMessage(
|
|
18099
18245
|
h,
|
|
18100
18246
|
4396,
|
|
18101
18247
|
0,
|
|
@@ -18111,7 +18257,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18111
18257
|
return;
|
|
18112
18258
|
const hItem = keyMapRef.current.get(selKey);
|
|
18113
18259
|
if (hItem !== void 0)
|
|
18114
|
-
|
|
18260
|
+
gui15.SendMessage(h, 4363, 9, hItem);
|
|
18115
18261
|
}, [selKey]);
|
|
18116
18262
|
return (0, import_jsx_runtime14.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
18117
18263
|
if (e.msg === 78) {
|
|
@@ -18120,7 +18266,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18120
18266
|
const h = tvRef.current;
|
|
18121
18267
|
if (!h)
|
|
18122
18268
|
return;
|
|
18123
|
-
const hCaret =
|
|
18269
|
+
const hCaret = gui15.SendMessage(h, 4362, 9, 0);
|
|
18124
18270
|
const node = hItemMapRef.current.get(hCaret) ?? null;
|
|
18125
18271
|
const key = node?.key ?? null;
|
|
18126
18272
|
if (!isControlled)
|
|
@@ -18138,24 +18284,24 @@ var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
|
|
|
18138
18284
|
var import_react17 = __toESM(require_react(), 1);
|
|
18139
18285
|
|
|
18140
18286
|
// _build/lib/windows/comdlg32.js
|
|
18141
|
-
var
|
|
18142
|
-
var GetOpenFileName = /* @__PURE__ */
|
|
18287
|
+
var b4 = (name, sig) => bind("comdlg32.dll", name, sig);
|
|
18288
|
+
var GetOpenFileName = /* @__PURE__ */ b4("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
|
|
18143
18289
|
|
|
18144
18290
|
// _build/lib/windows/shell32.js
|
|
18145
|
-
var
|
|
18146
|
-
var SHBrowseForFolder = /* @__PURE__ */
|
|
18147
|
-
var SHGetPathFromIDList = /* @__PURE__ */
|
|
18291
|
+
var b5 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
|
|
18292
|
+
var SHBrowseForFolder = /* @__PURE__ */ b5("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
|
|
18293
|
+
var SHGetPathFromIDList = /* @__PURE__ */ b5("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
|
|
18148
18294
|
var Shell_NotifyIconGetRect = (() => {
|
|
18149
18295
|
try {
|
|
18150
|
-
return
|
|
18296
|
+
return b5("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
|
|
18151
18297
|
} catch {
|
|
18152
18298
|
return null;
|
|
18153
18299
|
}
|
|
18154
18300
|
})();
|
|
18155
18301
|
|
|
18156
18302
|
// _build/lib/windows/ole32.js
|
|
18157
|
-
var
|
|
18158
|
-
var CoTaskMemFree = /* @__PURE__ */
|
|
18303
|
+
var b6 = (name, sig) => bind("ole32.dll", name, sig);
|
|
18304
|
+
var CoTaskMemFree = /* @__PURE__ */ b6("CoTaskMemFree", "<>ptr -> void");
|
|
18159
18305
|
|
|
18160
18306
|
// _build/lib/react-qw/components/PathPicker.js
|
|
18161
18307
|
function openFileDialog(owner, filter, title, multiple) {
|
|
@@ -18250,7 +18396,7 @@ var rootMap = /* @__PURE__ */ new Map();
|
|
|
18250
18396
|
function ensureDefaultClass() {
|
|
18251
18397
|
if (defaultClassRegistered)
|
|
18252
18398
|
return DEFAULT_CLASS;
|
|
18253
|
-
|
|
18399
|
+
gui16.RegisterClass(DEFAULT_CLASS, (hwnd2, msg, wParam, lParam) => {
|
|
18254
18400
|
const entry = rootMap.get(hwnd2);
|
|
18255
18401
|
if (msg === 2 && entry) {
|
|
18256
18402
|
rootMap.delete(hwnd2);
|
|
@@ -18276,15 +18422,27 @@ function createRoot(container) {
|
|
|
18276
18422
|
const ws = (cfg.ws ?? 0) | 13565952;
|
|
18277
18423
|
const w = (cfg.width ?? 800) * scaleFactor;
|
|
18278
18424
|
const h = (cfg.height ?? 600) * scaleFactor;
|
|
18279
|
-
const [sw, sh] = [GetSystemMetrics(
|
|
18425
|
+
const [sw, sh] = [GetSystemMetrics(
|
|
18426
|
+
0
|
|
18427
|
+
/* SysMetrics.CXSCREEN */
|
|
18428
|
+
), GetSystemMetrics(
|
|
18429
|
+
1
|
|
18430
|
+
/* SysMetrics.CYSCREEN */
|
|
18431
|
+
)];
|
|
18280
18432
|
const x = cfg.x === void 0 ? (sw - w) / 2 | 0 : cfg.x === -2147483648 ? -2147483648 : cfg.x * scaleFactor;
|
|
18281
18433
|
const y = cfg.y === void 0 ? (sh - h) / 2 | 0 : cfg.y === -2147483648 ? -2147483648 : cfg.y * scaleFactor;
|
|
18282
|
-
const hwin =
|
|
18434
|
+
const hwin = gui16.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
|
|
18283
18435
|
if (!hwin)
|
|
18284
18436
|
throw new Error("CreateWindow failed");
|
|
18285
18437
|
hwnd2 = hwin;
|
|
18286
|
-
if (!cfg.noShowWindow)
|
|
18287
|
-
|
|
18438
|
+
if (!cfg.noShowWindow) {
|
|
18439
|
+
ShowWindow(
|
|
18440
|
+
hwnd2,
|
|
18441
|
+
1
|
|
18442
|
+
/* ShowWindowCmd.SHOWNORMAL */
|
|
18443
|
+
);
|
|
18444
|
+
UpdateWindow(hwnd2);
|
|
18445
|
+
}
|
|
18288
18446
|
} else {
|
|
18289
18447
|
hwnd2 = container;
|
|
18290
18448
|
}
|
|
@@ -18314,18 +18472,18 @@ function render(element, containerOrConfig, _callback) {
|
|
|
18314
18472
|
// _build/test/test_react_hidden.js
|
|
18315
18473
|
var WS_CHILD = 1073741824;
|
|
18316
18474
|
var WS_VISIBLE = 268435456;
|
|
18317
|
-
|
|
18475
|
+
gui17.RegisterClass("ReactHidden", (hwnd2, msg, wParam, lParam) => {
|
|
18318
18476
|
if (!hwnd2)
|
|
18319
|
-
return
|
|
18477
|
+
return gui17.DefWindowProc(hwnd2, msg, wParam, lParam);
|
|
18320
18478
|
if (msg === 2) {
|
|
18321
|
-
|
|
18479
|
+
PostQuitMessage(0);
|
|
18322
18480
|
return 0;
|
|
18323
18481
|
}
|
|
18324
18482
|
if (msg === 513) {
|
|
18325
|
-
|
|
18483
|
+
PostQuitMessage(0);
|
|
18326
18484
|
return 0;
|
|
18327
18485
|
}
|
|
18328
|
-
return
|
|
18486
|
+
return gui17.DefWindowProc(hwnd2, msg, wParam, lParam);
|
|
18329
18487
|
});
|
|
18330
18488
|
function App() {
|
|
18331
18489
|
const [hidden, setHidden] = (0, import_react18.useState)(true);
|
|
@@ -18334,9 +18492,13 @@ function App() {
|
|
|
18334
18492
|
}, []);
|
|
18335
18493
|
return (0, import_jsx_runtime16.jsxs)("w", { type: "STATIC", ws: WS_CHILD | WS_VISIBLE, style: { width: 480, height: 360, flexDirection: "column", padding: 10, gap: 10 }, children: [(0, import_jsx_runtime16.jsx)("w", { type: "STATIC", text: "Click to close", ws: WS_CHILD | WS_VISIBLE, style: { width: 200, height: 30 } }), (0, import_jsx_runtime16.jsx)("w", { type: "STATIC", text: hidden ? "HIDDEN" : "VISIBLE", ws: WS_CHILD | WS_VISIBLE, hidden, style: { width: 200, height: 100 } })] });
|
|
18336
18494
|
}
|
|
18337
|
-
var hwnd =
|
|
18495
|
+
var hwnd = gui17.CreateWindow("ReactHidden", "Hidden Prop Test", 13565952, 200, 200, 500, 400, null, null);
|
|
18338
18496
|
if (hwnd) {
|
|
18339
|
-
|
|
18497
|
+
ShowWindow(
|
|
18498
|
+
hwnd,
|
|
18499
|
+
1
|
|
18500
|
+
/* ShowWindowCmd.SHOWNORMAL */
|
|
18501
|
+
);
|
|
18340
18502
|
render((0, import_jsx_runtime16.jsx)(App, {}), hwnd);
|
|
18341
18503
|
}
|
|
18342
18504
|
/*! Bundled license information:
|