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
|
}
|
|
@@ -15361,7 +15361,7 @@ import * as std2 from "std";
|
|
|
15361
15361
|
import * as ffi4 from "ffi";
|
|
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,8 +16620,13 @@ 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");
|
|
@@ -16589,12 +16639,16 @@ var GetDC = /* @__PURE__ */ b("GetDC", "<HWND>ptr -> <HDC>ptr");
|
|
|
16589
16639
|
var ReleaseDC = /* @__PURE__ */ b("ReleaseDC", "<HWND>ptr <HDC>ptr! -> i32");
|
|
16590
16640
|
var DrawText = /* @__PURE__ */ b("DrawTextW", "<HDC>ptr! <WCHAR>ptr i32 <RECT>ptr i32 -> i32");
|
|
16591
16641
|
var InvalidateRect = /* @__PURE__ */ b("InvalidateRect", "<HWND>ptr <RECT>ptr i32 -> i32", { RECT });
|
|
16642
|
+
var UpdateWindow = /* @__PURE__ */ b("UpdateWindow", "<HWND>ptr -> i32");
|
|
16592
16643
|
var SetCursor = /* @__PURE__ */ b("SetCursor", "<HCURSOR>ptr -> <HCURSOR>ptr");
|
|
16593
16644
|
var LoadCursor = /* @__PURE__ */ b("LoadCursorW", "<HMODULE>ptr <>ptr -> <HCURSOR>ptr");
|
|
16594
16645
|
var GetCursorPos = /* @__PURE__ */ b("GetCursorPos", "<POINT>ptr -> i32");
|
|
16595
16646
|
var ScreenToClient = /* @__PURE__ */ b("ScreenToClient", "<HWND>ptr <POINT>ptr -> i32");
|
|
16647
|
+
var SetScrollInfo = /* @__PURE__ */ b("SetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr i32 -> i32", { SCROLLINFO });
|
|
16648
|
+
var GetScrollInfo = /* @__PURE__ */ b("GetScrollInfo", "<HWND>ptr u32 <SCROLLINFO>ptr -> i32");
|
|
16596
16649
|
var ShowScrollBar = /* @__PURE__ */ b("ShowScrollBar", "<HWND>ptr u32 i32 -> i32");
|
|
16597
16650
|
var GetSystemMetrics = /* @__PURE__ */ b("GetSystemMetrics", "i32 -> i32");
|
|
16651
|
+
var SystemParametersInfo = /* @__PURE__ */ b("SystemParametersInfoW", "u32 u32 <BYTE>ptr u32 -> i32");
|
|
16598
16652
|
|
|
16599
16653
|
// _build/lib/react-qw/reconciler.js
|
|
16600
16654
|
var import_react_reconciler = __toESM(require_react_reconciler(), 1);
|
|
@@ -16610,9 +16664,34 @@ var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap
|
|
|
16610
16664
|
var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
|
|
16611
16665
|
var CreateCompatibleDC = /* @__PURE__ */ b2("CreateCompatibleDC", "<HDC>ptr -> <HDC>ptr");
|
|
16612
16666
|
var SelectObject = /* @__PURE__ */ b2("SelectObject", "<HDC>ptr! <HGDIOBJ>ptr -> <HGDIOBJ>ptr");
|
|
16667
|
+
var CreateDIBSection = /* @__PURE__ */ b2("CreateDIBSection", "<HDC>ptr <>ptr u32@ColorUse <>ptr <>ptr u32 -> <HGDIOBJ>ptr");
|
|
16668
|
+
var SetDIBits = /* @__PURE__ */ b2("SetDIBits", "<HDC>ptr <HGDIOBJ>ptr! u32 u32 <BYTE>ptr <>ptr u32@ColorUse -> i32");
|
|
16613
16669
|
var GetObject = /* @__PURE__ */ b2("GetObjectW", "<HGDIOBJ>ptr i32 <BYTE>ptr -> i32");
|
|
16614
16670
|
var DeleteDC = /* @__PURE__ */ b2("DeleteDC", "<HDC>ptr! -> i32");
|
|
16615
16671
|
|
|
16672
|
+
// _build/lib/dpi.js
|
|
16673
|
+
function getScaleFactor() {
|
|
16674
|
+
const hdc = GetDC(NULL);
|
|
16675
|
+
const dpi = hdc ? GetDeviceCaps(
|
|
16676
|
+
hdc,
|
|
16677
|
+
88
|
|
16678
|
+
/* DeviceCap.LOGPIXELSX */
|
|
16679
|
+
) : 96;
|
|
16680
|
+
if (hdc)
|
|
16681
|
+
ReleaseDC(NULL, hdc);
|
|
16682
|
+
return dpi / 96;
|
|
16683
|
+
}
|
|
16684
|
+
function createSystemDpiFont() {
|
|
16685
|
+
const ncm = NONCLIENTMETRICSW.encode({ cbSize: NONCLIENTMETRICSW.size });
|
|
16686
|
+
if (!SystemParametersInfo(41, NONCLIENTMETRICSW.size, ncm, 0)) {
|
|
16687
|
+
const legacySize = NONCLIENTMETRICSW.size - 4;
|
|
16688
|
+
NONCLIENTMETRICSW.encode({ cbSize: legacySize }, ncm);
|
|
16689
|
+
if (!SystemParametersInfo(41, legacySize, ncm, 0))
|
|
16690
|
+
return NULL;
|
|
16691
|
+
}
|
|
16692
|
+
return CreateFontIndirect(NONCLIENTMETRICSW.decode(ncm).lfMessageFont);
|
|
16693
|
+
}
|
|
16694
|
+
|
|
16616
16695
|
// _build/lib/react-qw/props.js
|
|
16617
16696
|
import * as gui from "gui";
|
|
16618
16697
|
function applyProps(instance, newProps, _oldProps) {
|
|
@@ -16636,14 +16715,14 @@ function applyProps(instance, newProps, _oldProps) {
|
|
|
16636
16715
|
EnableWindow(hwnd, !newProps.disabled ? 1 : 0);
|
|
16637
16716
|
}
|
|
16638
16717
|
if ("hidden" in newProps) {
|
|
16639
|
-
|
|
16718
|
+
ShowWindow(
|
|
16640
16719
|
hwnd,
|
|
16641
16720
|
newProps.hidden ? 0 : 5
|
|
16642
16721
|
/* ShowWindowCmd.SHOW */
|
|
16643
16722
|
);
|
|
16644
16723
|
}
|
|
16645
16724
|
if ("visible" in newProps) {
|
|
16646
|
-
|
|
16725
|
+
ShowWindow(
|
|
16647
16726
|
hwnd,
|
|
16648
16727
|
newProps.visible ? 5 : 0
|
|
16649
16728
|
/* ShowWindowCmd.HIDE */
|
|
@@ -16763,24 +16842,21 @@ function measureTextForHwnd(hwnd, text) {
|
|
|
16763
16842
|
if (hFont)
|
|
16764
16843
|
SelectObject(hdc, oldFont);
|
|
16765
16844
|
ReleaseDC(hwnd, hdc);
|
|
16766
|
-
const wr =
|
|
16767
|
-
const cr =
|
|
16768
|
-
|
|
16769
|
-
|
|
16770
|
-
|
|
16845
|
+
const wr = RECT.alloc();
|
|
16846
|
+
const cr = RECT.alloc();
|
|
16847
|
+
const okWr = GetWindowRect(hwnd, wr.ptr);
|
|
16848
|
+
const okCr = GetClientRect(hwnd, cr.ptr);
|
|
16849
|
+
if (okWr && okCr) {
|
|
16850
|
+
const w = RECT.decode(wr), c = RECT.decode(cr);
|
|
16851
|
+
result.width += w.right - w.left - (c.right - c.left);
|
|
16852
|
+
result.height += w.bottom - w.top - (c.bottom - c.top);
|
|
16771
16853
|
}
|
|
16772
16854
|
return result;
|
|
16773
16855
|
}
|
|
16774
16856
|
|
|
16775
16857
|
// _build/lib/react-qw/reconciler.js
|
|
16776
|
-
var dpiFont =
|
|
16777
|
-
var scaleFactor = (
|
|
16778
|
-
const hdc = GetDC(NULL);
|
|
16779
|
-
const dpi = hdc ? GetDeviceCaps(hdc, 88) : 96;
|
|
16780
|
-
if (hdc)
|
|
16781
|
-
ReleaseDC(NULL, hdc);
|
|
16782
|
-
return dpi / 96;
|
|
16783
|
-
})();
|
|
16858
|
+
var dpiFont = createSystemDpiFont();
|
|
16859
|
+
var scaleFactor = getScaleFactor();
|
|
16784
16860
|
var DELAYED_CONTROLS = /* @__PURE__ */ new Set(["SysListView32", "SysTreeView32", "LISTBOX", "COMBOBOX", "msctls_trackbar32", "SysDateTimePick32", "SysLink"]);
|
|
16785
16861
|
function isDelayedControl(winClass) {
|
|
16786
16862
|
return DELAYED_CONTROLS.has(winClass);
|
|
@@ -16826,11 +16902,12 @@ function runFlexLayout(inst) {
|
|
|
16826
16902
|
const visible = children.filter((c) => !c.props.hidden);
|
|
16827
16903
|
if (visible.length === 0)
|
|
16828
16904
|
return;
|
|
16829
|
-
const
|
|
16830
|
-
if (!
|
|
16905
|
+
const rcBuf = RECT.alloc();
|
|
16906
|
+
if (!GetClientRect(inst.hwnd, rcBuf.ptr)) {
|
|
16831
16907
|
console.log("flex: no rect for", inst.hwnd, inst.type);
|
|
16832
16908
|
return;
|
|
16833
16909
|
}
|
|
16910
|
+
const rect = RECT.decode(rcBuf);
|
|
16834
16911
|
const pw = (rect.right - rect.left) / scaleFactor;
|
|
16835
16912
|
const ph = (rect.bottom - rect.top) / scaleFactor;
|
|
16836
16913
|
if (pw <= 0 || ph <= 0) {
|
|
@@ -17031,7 +17108,7 @@ var hostConfig = {
|
|
|
17031
17108
|
},
|
|
17032
17109
|
hideInstance(instance) {
|
|
17033
17110
|
if (instance.hwnd !== null)
|
|
17034
|
-
|
|
17111
|
+
ShowWindow(
|
|
17035
17112
|
instance.hwnd,
|
|
17036
17113
|
0
|
|
17037
17114
|
/* ShowWindowCmd.HIDE */
|
|
@@ -17039,7 +17116,7 @@ var hostConfig = {
|
|
|
17039
17116
|
},
|
|
17040
17117
|
hideTextInstance(instance) {
|
|
17041
17118
|
if (instance.hwnd !== null)
|
|
17042
|
-
|
|
17119
|
+
ShowWindow(
|
|
17043
17120
|
instance.hwnd,
|
|
17044
17121
|
0
|
|
17045
17122
|
/* ShowWindowCmd.HIDE */
|
|
@@ -17047,7 +17124,7 @@ var hostConfig = {
|
|
|
17047
17124
|
},
|
|
17048
17125
|
unhideInstance(instance, _props) {
|
|
17049
17126
|
if (instance.hwnd !== null)
|
|
17050
|
-
|
|
17127
|
+
ShowWindow(
|
|
17051
17128
|
instance.hwnd,
|
|
17052
17129
|
5
|
|
17053
17130
|
/* ShowWindowCmd.SHOW */
|
|
@@ -17055,7 +17132,7 @@ var hostConfig = {
|
|
|
17055
17132
|
},
|
|
17056
17133
|
unhideTextInstance(instance, _text) {
|
|
17057
17134
|
if (instance.hwnd !== null)
|
|
17058
|
-
|
|
17135
|
+
ShowWindow(
|
|
17059
17136
|
instance.hwnd,
|
|
17060
17137
|
5
|
|
17061
17138
|
/* ShowWindowCmd.SHOW */
|
|
@@ -17302,11 +17379,10 @@ var DateTimePicker = (0, import_react5.forwardRef)(function DateTimePicker2({ va
|
|
|
17302
17379
|
if (!h)
|
|
17303
17380
|
return;
|
|
17304
17381
|
InvalidateRect(h, NULL, 1);
|
|
17305
|
-
const cr =
|
|
17306
|
-
if (cr) {
|
|
17307
|
-
const
|
|
17308
|
-
|
|
17309
|
-
gui6.SendMessage(h, 5, 0, hh << 16 | w);
|
|
17382
|
+
const cr = RECT.alloc();
|
|
17383
|
+
if (GetClientRect(h, cr.ptr)) {
|
|
17384
|
+
const { left, top, right, bottom } = RECT.decode(cr);
|
|
17385
|
+
gui6.SendMessage(h, 5, 0, bottom - top << 16 | right - left);
|
|
17310
17386
|
}
|
|
17311
17387
|
}, []);
|
|
17312
17388
|
return (0, import_jsx_runtime4.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
@@ -17367,7 +17443,10 @@ var Input = (0, import_react6.forwardRef)(({ value: controlledValue, defaultValu
|
|
|
17367
17443
|
const h = inputRef.current;
|
|
17368
17444
|
if (!h)
|
|
17369
17445
|
return;
|
|
17370
|
-
const
|
|
17446
|
+
const cap = GetWindowTextLength(h) + 1;
|
|
17447
|
+
const buf = WCHAR.alloc(cap);
|
|
17448
|
+
GetWindowText(h, buf, cap);
|
|
17449
|
+
const newText = WCHAR.decode(buf);
|
|
17371
17450
|
if (!isControlled)
|
|
17372
17451
|
setInternalValue(newText);
|
|
17373
17452
|
onChange?.(newText);
|
|
@@ -17455,6 +17534,49 @@ var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
|
|
|
17455
17534
|
var import_react9 = __toESM(require_react(), 1);
|
|
17456
17535
|
import * as gui9 from "gui";
|
|
17457
17536
|
import * as ffi3 from "ffi";
|
|
17537
|
+
|
|
17538
|
+
// _build/lib/bitmap.js
|
|
17539
|
+
function createBitmapFromPixels(width, height, pixels) {
|
|
17540
|
+
if (width <= 0 || height <= 0)
|
|
17541
|
+
return NULL;
|
|
17542
|
+
const len = width * height * 4;
|
|
17543
|
+
if (pixels.byteLength < len)
|
|
17544
|
+
return NULL;
|
|
17545
|
+
const bi = BITMAPINFOHEADER.encode({
|
|
17546
|
+
biSize: BITMAPINFOHEADER.size,
|
|
17547
|
+
biWidth: width,
|
|
17548
|
+
biHeight: -height,
|
|
17549
|
+
biPlanes: 1,
|
|
17550
|
+
biBitCount: 32
|
|
17551
|
+
});
|
|
17552
|
+
const hbm = CreateDIBSection(NULL, bi.ptr, 0, NULL, NULL, 0);
|
|
17553
|
+
if (!hbm)
|
|
17554
|
+
return NULL;
|
|
17555
|
+
const src = new PtrArrayBuffer(len);
|
|
17556
|
+
new Uint8Array(src).set(new Uint8Array(pixels, 0, len));
|
|
17557
|
+
if (SetDIBits(
|
|
17558
|
+
NULL,
|
|
17559
|
+
hbm,
|
|
17560
|
+
0,
|
|
17561
|
+
height,
|
|
17562
|
+
src,
|
|
17563
|
+
bi.ptr,
|
|
17564
|
+
0
|
|
17565
|
+
/* ColorUse.RGB_COLORS */
|
|
17566
|
+
) !== height) {
|
|
17567
|
+
DeleteObject(hbm);
|
|
17568
|
+
return NULL;
|
|
17569
|
+
}
|
|
17570
|
+
return hbm;
|
|
17571
|
+
}
|
|
17572
|
+
|
|
17573
|
+
// _build/lib/windows/comctl32.js
|
|
17574
|
+
var b3 = (name, sig) => bind("comctl32.dll", name, sig);
|
|
17575
|
+
var ImageListCreate = /* @__PURE__ */ b3("ImageList_Create", "i32 i32 u32 i32 i32 -> <HIMAGELIST>ptr");
|
|
17576
|
+
var ImageListAdd = /* @__PURE__ */ b3("ImageList_Add", "<HIMAGELIST>ptr <HGDIOBJ>ptr <HGDIOBJ>ptr -> i32");
|
|
17577
|
+
var ImageListDestroy = /* @__PURE__ */ b3("ImageList_Destroy", "<HIMAGELIST>ptr -> i32");
|
|
17578
|
+
|
|
17579
|
+
// _build/lib/react-qw/components/ListView.js
|
|
17458
17580
|
function writeU32(ptr, offset, v) {
|
|
17459
17581
|
ffi3.writeByte(ptr + offset, v & 255);
|
|
17460
17582
|
ffi3.writeByte(ptr + offset + 1, v >> 8 & 255);
|
|
@@ -17544,7 +17666,7 @@ function resolveCellStyle(columns2, data2, row, colIndex) {
|
|
|
17544
17666
|
}
|
|
17545
17667
|
function makeLVItem(i, sub, text, image) {
|
|
17546
17668
|
const textBuf = WCHAR.encode(text);
|
|
17547
|
-
const
|
|
17669
|
+
const b7 = LVITEMW.encode({
|
|
17548
17670
|
mask: 1 | (image !== void 0 ? 2 : 0),
|
|
17549
17671
|
iItem: i,
|
|
17550
17672
|
iSubItem: sub,
|
|
@@ -17561,32 +17683,32 @@ function makeLVItem(i, sub, text, image) {
|
|
|
17561
17683
|
piColFmt: 0,
|
|
17562
17684
|
iGroup: 0
|
|
17563
17685
|
});
|
|
17564
|
-
|
|
17565
|
-
return
|
|
17686
|
+
b7.__textBuf = textBuf;
|
|
17687
|
+
return b7;
|
|
17566
17688
|
}
|
|
17567
17689
|
var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns: columns2, data: data2, style, icons, iconSize, getIcon }, ref) {
|
|
17568
17690
|
const lvRef = (0, import_react9.useRef)(null);
|
|
17569
|
-
const iconListRef = (0, import_react9.useRef)(
|
|
17691
|
+
const iconListRef = (0, import_react9.useRef)(NULL);
|
|
17570
17692
|
(0, import_react9.useEffect)(() => {
|
|
17571
17693
|
const h = lvRef.current;
|
|
17572
17694
|
if (!h)
|
|
17573
17695
|
return;
|
|
17574
17696
|
const il = iconListRef.current;
|
|
17575
|
-
iconListRef.current =
|
|
17697
|
+
iconListRef.current = NULL;
|
|
17576
17698
|
if (il) {
|
|
17577
17699
|
gui9.SendMessage(h, 4099, 1, 0);
|
|
17578
|
-
|
|
17700
|
+
ImageListDestroy(il);
|
|
17579
17701
|
}
|
|
17580
17702
|
if (!icons || icons.length === 0)
|
|
17581
17703
|
return;
|
|
17582
17704
|
const size = iconSize ?? 32;
|
|
17583
|
-
const img =
|
|
17705
|
+
const img = ImageListCreate(size, size, 32, icons.length, 1);
|
|
17584
17706
|
if (!img)
|
|
17585
17707
|
return;
|
|
17586
17708
|
for (const p of icons) {
|
|
17587
|
-
const hbm =
|
|
17709
|
+
const hbm = createBitmapFromPixels(size, size, p);
|
|
17588
17710
|
if (hbm) {
|
|
17589
|
-
|
|
17711
|
+
ImageListAdd(img, hbm, NULL);
|
|
17590
17712
|
DeleteObject(hbm);
|
|
17591
17713
|
}
|
|
17592
17714
|
}
|
|
@@ -17767,22 +17889,19 @@ var RadioButton = (0, import_react11.forwardRef)(({ checked: controlledChecked,
|
|
|
17767
17889
|
// _build/lib/react-qw/components/ScrollView.js
|
|
17768
17890
|
var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
|
|
17769
17891
|
var import_react12 = __toESM(require_react(), 1);
|
|
17770
|
-
import * as gui12 from "gui";
|
|
17771
17892
|
var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth, contentHeight }, ref) => {
|
|
17772
17893
|
const svRef = (0, import_react12.useRef)(null);
|
|
17773
17894
|
const contentRef = (0, import_react12.useRef)(null);
|
|
17774
17895
|
const scrollXRef = (0, import_react12.useRef)(0);
|
|
17775
17896
|
const scrollYRef = (0, import_react12.useRef)(0);
|
|
17776
17897
|
function updateScroll(sv, content) {
|
|
17777
|
-
const
|
|
17778
|
-
if (!
|
|
17898
|
+
const svBuf = RECT.alloc();
|
|
17899
|
+
if (!GetClientRect(sv, svBuf.ptr))
|
|
17779
17900
|
return;
|
|
17780
|
-
const
|
|
17781
|
-
const
|
|
17782
|
-
const
|
|
17783
|
-
const scale =
|
|
17784
|
-
if (hdc)
|
|
17785
|
-
ReleaseDC(NULL, hdc);
|
|
17901
|
+
const { left, top, right, bottom } = RECT.decode(svBuf);
|
|
17902
|
+
const svW = right - left;
|
|
17903
|
+
const svH = bottom - top;
|
|
17904
|
+
const scale = getScaleFactor();
|
|
17786
17905
|
const natW = Math.round((contentWidth ?? svW / scale) * scale);
|
|
17787
17906
|
const natH = Math.round((contentHeight ?? svH / scale) * scale);
|
|
17788
17907
|
scrollXRef.current = Math.max(0, Math.min(scrollXRef.current, natW - svW));
|
|
@@ -17799,14 +17918,28 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17799
17918
|
);
|
|
17800
17919
|
forceFlexLayout(content);
|
|
17801
17920
|
if (natW > svW) {
|
|
17802
|
-
|
|
17921
|
+
SetScrollInfo(sv, 0, {
|
|
17922
|
+
cbSize: SCROLLINFO.size,
|
|
17923
|
+
fMask: 1 | 2 | 4,
|
|
17924
|
+
nMin: 0,
|
|
17925
|
+
nMax: natW - 1,
|
|
17926
|
+
nPage: svW,
|
|
17927
|
+
nPos: scrollXRef.current
|
|
17928
|
+
}, 1);
|
|
17803
17929
|
ShowScrollBar(sv, 0, 1);
|
|
17804
17930
|
} else {
|
|
17805
17931
|
scrollXRef.current = 0;
|
|
17806
17932
|
ShowScrollBar(sv, 0, 0);
|
|
17807
17933
|
}
|
|
17808
17934
|
if (natH > svH) {
|
|
17809
|
-
|
|
17935
|
+
SetScrollInfo(sv, 1, {
|
|
17936
|
+
cbSize: SCROLLINFO.size,
|
|
17937
|
+
fMask: 1 | 2 | 4,
|
|
17938
|
+
nMin: 0,
|
|
17939
|
+
nMax: natH - 1,
|
|
17940
|
+
nPage: svH,
|
|
17941
|
+
nPos: scrollYRef.current
|
|
17942
|
+
}, 1);
|
|
17810
17943
|
ShowScrollBar(sv, 1, 1);
|
|
17811
17944
|
} else {
|
|
17812
17945
|
scrollYRef.current = 0;
|
|
@@ -17836,15 +17969,21 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17836
17969
|
1 | 4
|
|
17837
17970
|
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17838
17971
|
);
|
|
17839
|
-
|
|
17972
|
+
SetScrollInfo(sv, bar, { cbSize: SCROLLINFO.size, fMask: 4, nPos: newPos }, 1);
|
|
17840
17973
|
}
|
|
17841
17974
|
function handleScroll(e, bar) {
|
|
17842
17975
|
const sv = svRef.current;
|
|
17843
17976
|
const content = contentRef.current;
|
|
17844
17977
|
if (!sv || !content)
|
|
17845
17978
|
return;
|
|
17846
|
-
const
|
|
17847
|
-
|
|
17979
|
+
const si = SCROLLINFO.encode({
|
|
17980
|
+
cbSize: SCROLLINFO.size,
|
|
17981
|
+
fMask: 23
|
|
17982
|
+
/* ScrollInfoFlag.ALL */
|
|
17983
|
+
});
|
|
17984
|
+
GetScrollInfo(sv, bar, si.ptr);
|
|
17985
|
+
const info = SCROLLINFO.decode(si);
|
|
17986
|
+
const maxPos = info.nMax - info.nPage + 1;
|
|
17848
17987
|
const code = e.wParam & 65535;
|
|
17849
17988
|
const ref_ = bar === 1 ? scrollYRef : scrollXRef;
|
|
17850
17989
|
let newPos = ref_.current;
|
|
@@ -17855,9 +17994,9 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17855
17994
|
else if (code === 1)
|
|
17856
17995
|
newPos += 20;
|
|
17857
17996
|
else if (code === 2)
|
|
17858
|
-
newPos -= info.
|
|
17997
|
+
newPos -= info.nPage;
|
|
17859
17998
|
else if (code === 3)
|
|
17860
|
-
newPos += info.
|
|
17999
|
+
newPos += info.nPage;
|
|
17861
18000
|
else
|
|
17862
18001
|
return;
|
|
17863
18002
|
newPos = Math.max(0, Math.min(maxPos, newPos));
|
|
@@ -17877,8 +18016,14 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17877
18016
|
if (!isHorz && contentHeight === void 0)
|
|
17878
18017
|
return;
|
|
17879
18018
|
const bar = isHorz ? 0 : 1;
|
|
17880
|
-
const
|
|
17881
|
-
|
|
18019
|
+
const si = SCROLLINFO.encode({
|
|
18020
|
+
cbSize: SCROLLINFO.size,
|
|
18021
|
+
fMask: 23
|
|
18022
|
+
/* ScrollInfoFlag.ALL */
|
|
18023
|
+
});
|
|
18024
|
+
GetScrollInfo(sv, bar, si.ptr);
|
|
18025
|
+
const info = SCROLLINFO.decode(si);
|
|
18026
|
+
const maxPos = info.nMax - info.nPage + 1;
|
|
17882
18027
|
const ref_ = isHorz ? scrollXRef : scrollYRef;
|
|
17883
18028
|
let newPos = ref_.current + dy;
|
|
17884
18029
|
newPos = Math.max(0, Math.min(maxPos, newPos));
|
|
@@ -17926,7 +18071,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17926
18071
|
// _build/lib/react-qw/components/Slider.js
|
|
17927
18072
|
var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
|
|
17928
18073
|
var import_react13 = __toESM(require_react(), 1);
|
|
17929
|
-
import * as
|
|
18074
|
+
import * as gui12 from "gui";
|
|
17930
18075
|
var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 100, vertical = false, disabled, style }, ref) => {
|
|
17931
18076
|
const wrapperRef = (0, import_react13.useRef)(null);
|
|
17932
18077
|
const sliderRef = (0, import_react13.useRef)(null);
|
|
@@ -17935,14 +18080,14 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17935
18080
|
if (!h)
|
|
17936
18081
|
return;
|
|
17937
18082
|
const lParam = min & 65535 | (max & 65535) << 16;
|
|
17938
|
-
|
|
17939
|
-
|
|
18083
|
+
gui12.SendMessage(h, 1030, 0, lParam);
|
|
18084
|
+
gui12.SendMessage(h, 1029, 1, value);
|
|
17940
18085
|
}, [min, max]);
|
|
17941
18086
|
(0, import_react13.useEffect)(() => {
|
|
17942
18087
|
const h = sliderRef.current;
|
|
17943
18088
|
if (!h)
|
|
17944
18089
|
return;
|
|
17945
|
-
|
|
18090
|
+
gui12.SendMessage(h, 1029, 1, value);
|
|
17946
18091
|
}, [value]);
|
|
17947
18092
|
const tbStyle = 268435456 | 65536 | 1 | (vertical ? 2 : 0);
|
|
17948
18093
|
return (0, import_jsx_runtime12.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style, ref: (h) => {
|
|
@@ -17959,7 +18104,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17959
18104
|
const h = sliderRef.current;
|
|
17960
18105
|
if (!h)
|
|
17961
18106
|
return 0;
|
|
17962
|
-
const pos =
|
|
18107
|
+
const pos = gui12.SendMessage(h, 1024, 0, 0);
|
|
17963
18108
|
onChange?.(pos);
|
|
17964
18109
|
return 0;
|
|
17965
18110
|
}
|
|
@@ -17972,7 +18117,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17972
18117
|
// _build/lib/react-qw/components/Tab.js
|
|
17973
18118
|
var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
|
|
17974
18119
|
var import_react14 = __toESM(require_react(), 1);
|
|
17975
|
-
import * as
|
|
18120
|
+
import * as gui13 from "gui";
|
|
17976
18121
|
var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex, defaultSelectedIndex = 0, onChange, style }, ref) => {
|
|
17977
18122
|
const [internalIndex, setInternalIndex] = (0, import_react14.useState)(defaultSelectedIndex);
|
|
17978
18123
|
const isControlled = controlledIndex !== void 0;
|
|
@@ -17982,7 +18127,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
17982
18127
|
const h = tabHwnd.current;
|
|
17983
18128
|
if (!h)
|
|
17984
18129
|
return;
|
|
17985
|
-
|
|
18130
|
+
gui13.SendMessage(h, 4873, 0, 0);
|
|
17986
18131
|
for (let i = 0; i < tabs.length; i++) {
|
|
17987
18132
|
const titleBuf = WCHAR.encode(tabs[i].title);
|
|
17988
18133
|
const tci = TCITEMW.encode({
|
|
@@ -17995,14 +18140,14 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
17995
18140
|
lParam: 0
|
|
17996
18141
|
});
|
|
17997
18142
|
const tciPtr = tci.ptr;
|
|
17998
|
-
|
|
18143
|
+
gui13.SendMessage(h, 4926, i, tciPtr);
|
|
17999
18144
|
}
|
|
18000
|
-
|
|
18145
|
+
gui13.SendMessage(h, 4876, sel, 0);
|
|
18001
18146
|
}, [tabs]);
|
|
18002
18147
|
(0, import_react14.useEffect)(() => {
|
|
18003
18148
|
const h = tabHwnd.current;
|
|
18004
18149
|
if (h)
|
|
18005
|
-
|
|
18150
|
+
gui13.SendMessage(h, 4876, sel, 0);
|
|
18006
18151
|
}, [sel]);
|
|
18007
18152
|
return (0, import_jsx_runtime13.jsxs)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
18008
18153
|
if (e.msg === 78) {
|
|
@@ -18011,7 +18156,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
18011
18156
|
return;
|
|
18012
18157
|
const code = nmCode(e.lParam);
|
|
18013
18158
|
if (code === -552 || code === -2) {
|
|
18014
|
-
const newSel =
|
|
18159
|
+
const newSel = gui13.SendMessage(h, 4875, 0, 0);
|
|
18015
18160
|
if (newSel !== sel) {
|
|
18016
18161
|
if (!isControlled)
|
|
18017
18162
|
setInternalIndex(newSel);
|
|
@@ -18024,12 +18169,12 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
18024
18169
|
|
|
18025
18170
|
// _build/lib/react-qw/components/Tooltip.js
|
|
18026
18171
|
var import_react15 = __toESM(require_react(), 1);
|
|
18027
|
-
import * as
|
|
18172
|
+
import * as gui14 from "gui";
|
|
18028
18173
|
|
|
18029
18174
|
// _build/lib/react-qw/components/TreeView.js
|
|
18030
18175
|
var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
|
|
18031
18176
|
var import_react16 = __toESM(require_react(), 1);
|
|
18032
|
-
import * as
|
|
18177
|
+
import * as gui15 from "gui";
|
|
18033
18178
|
function buildTvItem(textPtr, cChildren) {
|
|
18034
18179
|
let mask = 1;
|
|
18035
18180
|
if (cChildren > 0)
|
|
@@ -18054,20 +18199,20 @@ function insertItems(hTree, nodes, parentHandle, hItemMap, keyMap) {
|
|
|
18054
18199
|
const itemBuf = buildTvItem(textBuf.ptr, cChildren);
|
|
18055
18200
|
const item = TVITEM.decode(itemBuf);
|
|
18056
18201
|
const tvins = TVINSERTSTRUCT.encode({ hParent: parentHandle, hInsertAfter: -65536, item });
|
|
18057
|
-
const hItem =
|
|
18202
|
+
const hItem = gui15.SendMessage(hTree, 4402, 0, tvins.ptr);
|
|
18058
18203
|
hItemMap.set(hItem, node);
|
|
18059
18204
|
if (node.key)
|
|
18060
18205
|
keyMap.set(node.key, hItem);
|
|
18061
18206
|
if (node.children && node.children.length > 0) {
|
|
18062
18207
|
insertItems(hTree, node.children, hItem, hItemMap, keyMap);
|
|
18063
|
-
|
|
18208
|
+
gui15.SendMessage(hTree, 4354, 2, hItem);
|
|
18064
18209
|
}
|
|
18065
18210
|
}
|
|
18066
18211
|
}
|
|
18067
18212
|
function deleteAllItems(hTree) {
|
|
18068
|
-
const n =
|
|
18213
|
+
const n = gui15.SendMessage(hTree, 4357, 0, 0);
|
|
18069
18214
|
if (n > 0)
|
|
18070
|
-
|
|
18215
|
+
gui15.SendMessage(
|
|
18071
18216
|
hTree,
|
|
18072
18217
|
4353,
|
|
18073
18218
|
1,
|
|
@@ -18099,7 +18244,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data: dat
|
|
|
18099
18244
|
const h = tvRef.current;
|
|
18100
18245
|
if (!h)
|
|
18101
18246
|
return;
|
|
18102
|
-
|
|
18247
|
+
gui15.SendMessage(
|
|
18103
18248
|
h,
|
|
18104
18249
|
4396,
|
|
18105
18250
|
0,
|
|
@@ -18115,7 +18260,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data: dat
|
|
|
18115
18260
|
return;
|
|
18116
18261
|
const hItem = keyMapRef.current.get(selKey);
|
|
18117
18262
|
if (hItem !== void 0)
|
|
18118
|
-
|
|
18263
|
+
gui15.SendMessage(h, 4363, 9, hItem);
|
|
18119
18264
|
}, [selKey]);
|
|
18120
18265
|
return (0, import_jsx_runtime14.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
18121
18266
|
if (e.msg === 78) {
|
|
@@ -18124,7 +18269,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data: dat
|
|
|
18124
18269
|
const h = tvRef.current;
|
|
18125
18270
|
if (!h)
|
|
18126
18271
|
return;
|
|
18127
|
-
const hCaret =
|
|
18272
|
+
const hCaret = gui15.SendMessage(h, 4362, 9, 0);
|
|
18128
18273
|
const node = hItemMapRef.current.get(hCaret) ?? null;
|
|
18129
18274
|
const key = node?.key ?? null;
|
|
18130
18275
|
if (!isControlled)
|
|
@@ -18142,24 +18287,24 @@ var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
|
|
|
18142
18287
|
var import_react17 = __toESM(require_react(), 1);
|
|
18143
18288
|
|
|
18144
18289
|
// _build/lib/windows/comdlg32.js
|
|
18145
|
-
var
|
|
18146
|
-
var GetOpenFileName = /* @__PURE__ */
|
|
18290
|
+
var b4 = (name, sig) => bind("comdlg32.dll", name, sig);
|
|
18291
|
+
var GetOpenFileName = /* @__PURE__ */ b4("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
|
|
18147
18292
|
|
|
18148
18293
|
// _build/lib/windows/shell32.js
|
|
18149
|
-
var
|
|
18150
|
-
var SHBrowseForFolder = /* @__PURE__ */
|
|
18151
|
-
var SHGetPathFromIDList = /* @__PURE__ */
|
|
18294
|
+
var b5 = (name, sig, encoders) => bind("shell32.dll", name, sig, encoders);
|
|
18295
|
+
var SHBrowseForFolder = /* @__PURE__ */ b5("SHBrowseForFolderW", "<BROWSEINFOW>ptr -> <>ptr");
|
|
18296
|
+
var SHGetPathFromIDList = /* @__PURE__ */ b5("SHGetPathFromIDListW", "<>ptr <BYTE>ptr -> u32");
|
|
18152
18297
|
var Shell_NotifyIconGetRect = (() => {
|
|
18153
18298
|
try {
|
|
18154
|
-
return
|
|
18299
|
+
return b5("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
|
|
18155
18300
|
} catch {
|
|
18156
18301
|
return null;
|
|
18157
18302
|
}
|
|
18158
18303
|
})();
|
|
18159
18304
|
|
|
18160
18305
|
// _build/lib/windows/ole32.js
|
|
18161
|
-
var
|
|
18162
|
-
var CoTaskMemFree = /* @__PURE__ */
|
|
18306
|
+
var b6 = (name, sig) => bind("ole32.dll", name, sig);
|
|
18307
|
+
var CoTaskMemFree = /* @__PURE__ */ b6("CoTaskMemFree", "<>ptr -> void");
|
|
18163
18308
|
|
|
18164
18309
|
// _build/lib/react-qw/components/PathPicker.js
|
|
18165
18310
|
function openFileDialog(owner, filter, title, multiple) {
|
|
@@ -18254,7 +18399,7 @@ var rootMap = /* @__PURE__ */ new Map();
|
|
|
18254
18399
|
function ensureDefaultClass() {
|
|
18255
18400
|
if (defaultClassRegistered)
|
|
18256
18401
|
return DEFAULT_CLASS;
|
|
18257
|
-
|
|
18402
|
+
gui16.RegisterClass(DEFAULT_CLASS, (hwnd, msg, wParam, lParam) => {
|
|
18258
18403
|
const entry = rootMap.get(hwnd);
|
|
18259
18404
|
if (msg === 2 && entry) {
|
|
18260
18405
|
rootMap.delete(hwnd);
|
|
@@ -18280,15 +18425,27 @@ function createRoot(container) {
|
|
|
18280
18425
|
const ws = (cfg.ws ?? 0) | 13565952;
|
|
18281
18426
|
const w = (cfg.width ?? 800) * scaleFactor;
|
|
18282
18427
|
const h = (cfg.height ?? 600) * scaleFactor;
|
|
18283
|
-
const [sw, sh] = [GetSystemMetrics(
|
|
18428
|
+
const [sw, sh] = [GetSystemMetrics(
|
|
18429
|
+
0
|
|
18430
|
+
/* SysMetrics.CXSCREEN */
|
|
18431
|
+
), GetSystemMetrics(
|
|
18432
|
+
1
|
|
18433
|
+
/* SysMetrics.CYSCREEN */
|
|
18434
|
+
)];
|
|
18284
18435
|
const x = cfg.x === void 0 ? (sw - w) / 2 | 0 : cfg.x === -2147483648 ? -2147483648 : cfg.x * scaleFactor;
|
|
18285
18436
|
const y = cfg.y === void 0 ? (sh - h) / 2 | 0 : cfg.y === -2147483648 ? -2147483648 : cfg.y * scaleFactor;
|
|
18286
|
-
const hwin =
|
|
18437
|
+
const hwin = gui16.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
|
|
18287
18438
|
if (!hwin)
|
|
18288
18439
|
throw new Error("CreateWindow failed");
|
|
18289
18440
|
hwnd = hwin;
|
|
18290
|
-
if (!cfg.noShowWindow)
|
|
18291
|
-
|
|
18441
|
+
if (!cfg.noShowWindow) {
|
|
18442
|
+
ShowWindow(
|
|
18443
|
+
hwnd,
|
|
18444
|
+
1
|
|
18445
|
+
/* ShowWindowCmd.SHOWNORMAL */
|
|
18446
|
+
);
|
|
18447
|
+
UpdateWindow(hwnd);
|
|
18448
|
+
}
|
|
18292
18449
|
} else {
|
|
18293
18450
|
hwnd = container;
|
|
18294
18451
|
}
|
|
@@ -18325,10 +18482,10 @@ function expect(label, actual, expected) {
|
|
|
18325
18482
|
}
|
|
18326
18483
|
}
|
|
18327
18484
|
function nm(size, code) {
|
|
18328
|
-
const
|
|
18329
|
-
const dv = new DataView(
|
|
18485
|
+
const b7 = new ArrayBuffer(size);
|
|
18486
|
+
const dv = new DataView(b7);
|
|
18330
18487
|
dv.setInt32(2 * P, code, true);
|
|
18331
|
-
return { b:
|
|
18488
|
+
return { b: b7, dv };
|
|
18332
18489
|
}
|
|
18333
18490
|
function setPtr(dv, off, v) {
|
|
18334
18491
|
if (P === 8)
|
|
@@ -18336,8 +18493,8 @@ function setPtr(dv, off, v) {
|
|
|
18336
18493
|
else
|
|
18337
18494
|
dv.setUint32(off, v >>> 0, true);
|
|
18338
18495
|
}
|
|
18339
|
-
function notify(h,
|
|
18340
|
-
return SendMessage(h, 78, 0, ffi4.bufferPtr(
|
|
18496
|
+
function notify(h, b7) {
|
|
18497
|
+
return SendMessage(h, 78, 0, ffi4.bufferPtr(b7));
|
|
18341
18498
|
}
|
|
18342
18499
|
var data = [
|
|
18343
18500
|
{ name: "a", size: "1", action: "x" },
|
|
@@ -18396,7 +18553,7 @@ function child(h) {
|
|
|
18396
18553
|
const c = GetWindow(
|
|
18397
18554
|
h,
|
|
18398
18555
|
5
|
|
18399
|
-
/*
|
|
18556
|
+
/* GetWindowCmd.CHILD */
|
|
18400
18557
|
);
|
|
18401
18558
|
if (!c)
|
|
18402
18559
|
throw new Error("no child window");
|
|
@@ -18556,7 +18713,7 @@ function runAll() {
|
|
|
18556
18713
|
const tabCtl = GetWindow(
|
|
18557
18714
|
child(tabW),
|
|
18558
18715
|
1
|
|
18559
|
-
/*
|
|
18716
|
+
/* GetWindowCmd.LAST */
|
|
18560
18717
|
);
|
|
18561
18718
|
if (!tabCtl)
|
|
18562
18719
|
throw new Error("no tab control");
|