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
package/test/test_react_flex.js
CHANGED
|
@@ -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,10 +15357,10 @@ 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
|
|
|
15362
15362
|
// _build/lib/react-qw/index.js
|
|
15363
|
-
import * as
|
|
15363
|
+
import * as gui16 from "gui";
|
|
15364
15364
|
|
|
15365
15365
|
// _build/lib/windows/user32.js
|
|
15366
15366
|
import * as os3 from "os";
|
|
@@ -15369,7 +15369,6 @@ import * as os3 from "os";
|
|
|
15369
15369
|
import * as ffi from "ffi";
|
|
15370
15370
|
import * as os2 from "os";
|
|
15371
15371
|
import * as std from "std";
|
|
15372
|
-
import * as win from "win";
|
|
15373
15372
|
|
|
15374
15373
|
// _build/lib/text-codec.js
|
|
15375
15374
|
var _labelMap = {
|
|
@@ -15391,19 +15390,19 @@ function _normalizeLabel(label) {
|
|
|
15391
15390
|
function _decodeUTF8(buf, fatal) {
|
|
15392
15391
|
let out = "";
|
|
15393
15392
|
for (let i = 0; i < buf.length; ) {
|
|
15394
|
-
const
|
|
15395
|
-
if (
|
|
15396
|
-
out += String.fromCharCode(
|
|
15393
|
+
const b7 = buf[i++];
|
|
15394
|
+
if (b7 < 128) {
|
|
15395
|
+
out += String.fromCharCode(b7);
|
|
15397
15396
|
continue;
|
|
15398
15397
|
}
|
|
15399
|
-
if (
|
|
15398
|
+
if (b7 < 192) {
|
|
15400
15399
|
out += fatal ? (() => {
|
|
15401
15400
|
throw new TypeError("unexpected continuation byte");
|
|
15402
15401
|
})() : "\uFFFD";
|
|
15403
15402
|
continue;
|
|
15404
15403
|
}
|
|
15405
15404
|
let c, min;
|
|
15406
|
-
if (
|
|
15405
|
+
if (b7 < 224) {
|
|
15407
15406
|
if (i >= buf.length) {
|
|
15408
15407
|
out += fatal ? (() => {
|
|
15409
15408
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15415,9 +15414,9 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15415
15414
|
out += "\uFFFD";
|
|
15416
15415
|
continue;
|
|
15417
15416
|
}
|
|
15418
|
-
c = (
|
|
15417
|
+
c = (b7 & 31) << 6 | b22 & 63;
|
|
15419
15418
|
min = 128;
|
|
15420
|
-
} else if (
|
|
15419
|
+
} else if (b7 < 240) {
|
|
15421
15420
|
if (i + 1 >= buf.length) {
|
|
15422
15421
|
out += fatal ? (() => {
|
|
15423
15422
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15430,9 +15429,9 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15430
15429
|
out += "\uFFFD";
|
|
15431
15430
|
continue;
|
|
15432
15431
|
}
|
|
15433
|
-
c = (
|
|
15432
|
+
c = (b7 & 15) << 12 | (b22 & 63) << 6 | b32 & 63;
|
|
15434
15433
|
min = 2048;
|
|
15435
|
-
} else if (
|
|
15434
|
+
} else if (b7 < 248) {
|
|
15436
15435
|
if (i + 2 >= buf.length) {
|
|
15437
15436
|
out += fatal ? (() => {
|
|
15438
15437
|
throw new TypeError("incomplete utf-8");
|
|
@@ -15446,7 +15445,7 @@ function _decodeUTF8(buf, fatal) {
|
|
|
15446
15445
|
out += "\uFFFD";
|
|
15447
15446
|
continue;
|
|
15448
15447
|
}
|
|
15449
|
-
c = (
|
|
15448
|
+
c = (b7 & 7) << 18 | (b22 & 63) << 12 | (b32 & 63) << 6 | b42 & 63;
|
|
15450
15449
|
min = 65536;
|
|
15451
15450
|
} else {
|
|
15452
15451
|
out += fatal ? (() => {
|
|
@@ -15750,7 +15749,7 @@ function loadDll(dll) {
|
|
|
15750
15749
|
const cached = _dllCache.get(dll);
|
|
15751
15750
|
if (cached !== void 0)
|
|
15752
15751
|
return cached;
|
|
15753
|
-
const loaded =
|
|
15752
|
+
const loaded = ffi.LoadLibrary(dll);
|
|
15754
15753
|
if (!loaded)
|
|
15755
15754
|
throw new Error(`ffi-bind: LoadLibrary("${dll}") failed`);
|
|
15756
15755
|
_dllCache.set(dll, loaded);
|
|
@@ -15960,7 +15959,7 @@ var BYTE = {
|
|
|
15960
15959
|
};
|
|
15961
15960
|
var builtinCodecs = { WCHAR, BYTE };
|
|
15962
15961
|
function bind(dll, name, sig, encoders, decoders) {
|
|
15963
|
-
const proc =
|
|
15962
|
+
const proc = ffi.GetProcAddress(loadDll(dll), name);
|
|
15964
15963
|
if (!proc)
|
|
15965
15964
|
throw new Error(`ffi-bind: proc "${name}" not found in ${dll}`);
|
|
15966
15965
|
const effDec = decoders ?? encoders;
|
|
@@ -16000,13 +15999,13 @@ function lower(v) {
|
|
|
16000
15999
|
type: { tag: "array", elementType: el.type, elementSize: el.size }
|
|
16001
16000
|
};
|
|
16002
16001
|
}
|
|
16003
|
-
const
|
|
16004
|
-
if (
|
|
16005
|
-
const rawUnit =
|
|
16002
|
+
const b7 = /^([A-Za-z_]\w*):(\d+)$/.exec(v);
|
|
16003
|
+
if (b7) {
|
|
16004
|
+
const rawUnit = b7[1];
|
|
16006
16005
|
const unit = normToken(rawUnit);
|
|
16007
16006
|
if (!isCNumberToken(unit) || unit === "f32" || unit === "f64")
|
|
16008
16007
|
throw new Error(`ffi-struct: bitfield unit must be an integer type, got "${rawUnit}"`);
|
|
16009
|
-
const width = Number(
|
|
16008
|
+
const width = Number(b7[2]);
|
|
16010
16009
|
const s2 = SizeAlign[unit];
|
|
16011
16010
|
const cap = s2 * 8;
|
|
16012
16011
|
if (!Number.isInteger(width) || width < 1)
|
|
@@ -16322,10 +16321,10 @@ function buildDecl(kind, member, pack) {
|
|
|
16322
16321
|
decl[k] = v;
|
|
16323
16322
|
return decl;
|
|
16324
16323
|
}
|
|
16325
|
-
function struct(a,
|
|
16324
|
+
function struct(a, b7, c) {
|
|
16326
16325
|
const isNamed = typeof a === "string";
|
|
16327
|
-
const raw = isNamed ?
|
|
16328
|
-
const opts = isNamed ? c :
|
|
16326
|
+
const raw = isNamed ? b7 : a;
|
|
16327
|
+
const opts = isNamed ? c : b7;
|
|
16329
16328
|
return createStruct(buildDecl("struct", raw, opts?.pack));
|
|
16330
16329
|
}
|
|
16331
16330
|
|
|
@@ -16350,6 +16349,17 @@ var SIZE_DECL = {
|
|
|
16350
16349
|
cy: "i32"
|
|
16351
16350
|
};
|
|
16352
16351
|
var SIZE = /* @__PURE__ */ struct("SIZE", SIZE_DECL);
|
|
16352
|
+
var SCROLLINFO_DECL = {
|
|
16353
|
+
"#": "struct",
|
|
16354
|
+
cbSize: "u32",
|
|
16355
|
+
fMask: "u32",
|
|
16356
|
+
nMin: "i32",
|
|
16357
|
+
nMax: "i32",
|
|
16358
|
+
nPage: "u32",
|
|
16359
|
+
nPos: "i32",
|
|
16360
|
+
nTrackPos: "i32"
|
|
16361
|
+
};
|
|
16362
|
+
var SCROLLINFO = /* @__PURE__ */ struct("SCROLLINFO", SCROLLINFO_DECL);
|
|
16353
16363
|
var LOGFONTW_DECL = {
|
|
16354
16364
|
"#": "struct",
|
|
16355
16365
|
lfHeight: "i32",
|
|
@@ -16368,6 +16378,41 @@ var LOGFONTW_DECL = {
|
|
|
16368
16378
|
lfFaceName: "u16[32]@utf-16le"
|
|
16369
16379
|
};
|
|
16370
16380
|
var LOGFONTW = /* @__PURE__ */ struct("LOGFONTW", LOGFONTW_DECL);
|
|
16381
|
+
var NONCLIENTMETRICSW_DECL = {
|
|
16382
|
+
"#": "struct",
|
|
16383
|
+
cbSize: "u32",
|
|
16384
|
+
iBorderWidth: "i32",
|
|
16385
|
+
iScrollWidth: "i32",
|
|
16386
|
+
iScrollHeight: "i32",
|
|
16387
|
+
iCaptionWidth: "i32",
|
|
16388
|
+
iCaptionHeight: "i32",
|
|
16389
|
+
lfCaptionFont: LOGFONTW_DECL,
|
|
16390
|
+
iSmCaptionWidth: "i32",
|
|
16391
|
+
iSmCaptionHeight: "i32",
|
|
16392
|
+
lfSmCaptionFont: LOGFONTW_DECL,
|
|
16393
|
+
iMenuWidth: "i32",
|
|
16394
|
+
iMenuHeight: "i32",
|
|
16395
|
+
lfMenuFont: LOGFONTW_DECL,
|
|
16396
|
+
lfStatusFont: LOGFONTW_DECL,
|
|
16397
|
+
lfMessageFont: LOGFONTW_DECL,
|
|
16398
|
+
iPaddedBorderWidth: "i32"
|
|
16399
|
+
};
|
|
16400
|
+
var NONCLIENTMETRICSW = /* @__PURE__ */ struct("NONCLIENTMETRICSW", NONCLIENTMETRICSW_DECL);
|
|
16401
|
+
var BITMAPINFOHEADER_DECL = {
|
|
16402
|
+
"#": "struct",
|
|
16403
|
+
biSize: "u32",
|
|
16404
|
+
biWidth: "i32",
|
|
16405
|
+
biHeight: "i32",
|
|
16406
|
+
biPlanes: "u16",
|
|
16407
|
+
biBitCount: "u16",
|
|
16408
|
+
biCompression: "u32",
|
|
16409
|
+
biSizeImage: "u32",
|
|
16410
|
+
biXPelsPerMeter: "i32",
|
|
16411
|
+
biYPelsPerMeter: "i32",
|
|
16412
|
+
biClrUsed: "u32",
|
|
16413
|
+
biClrImportant: "u32"
|
|
16414
|
+
};
|
|
16415
|
+
var BITMAPINFOHEADER = /* @__PURE__ */ struct("BITMAPINFOHEADER", BITMAPINFOHEADER_DECL);
|
|
16371
16416
|
var OPENFILENAMEW_DECL = {
|
|
16372
16417
|
"#": "struct",
|
|
16373
16418
|
lStructSize: "u32",
|
|
@@ -16574,24 +16619,35 @@ var NOTIFYICONIDENTIFIER = /* @__PURE__ */ struct("NOTIFYICONIDENTIFIER", NOTIFY
|
|
|
16574
16619
|
var b = (name, sig, encoders) => bind("user32.dll", name, sig, encoders);
|
|
16575
16620
|
var _bProbe = b("GetDesktopWindow", " -> <HWND>ptr");
|
|
16576
16621
|
var LONG_PTR_SYM = os3.arch === "x64" ? "PtrW" : "W";
|
|
16622
|
+
var ShowWindow = /* @__PURE__ */ b("ShowWindow", "<HWND>ptr i32@ShowWindowCmd -> i32");
|
|
16577
16623
|
var SetWindowPos = /* @__PURE__ */ b("SetWindowPos", "<HWND>ptr <>ptr@SetWindowPosHwnd i32 i32 i32 i32 u32 -> i32");
|
|
16624
|
+
var GetWindowRect = /* @__PURE__ */ b("GetWindowRect", "<HWND>ptr <RECT>ptr -> i32");
|
|
16625
|
+
var GetClientRect = /* @__PURE__ */ b("GetClientRect", "<HWND>ptr <RECT>ptr -> i32");
|
|
16626
|
+
var GetWindowText = /* @__PURE__ */ b("GetWindowTextW", "<HWND>ptr <BYTE>ptr i32 -> i32");
|
|
16578
16627
|
var SetWindowText = /* @__PURE__ */ b("SetWindowTextW", "<HWND>ptr <WCHAR>ptr -> i32");
|
|
16628
|
+
var GetWindowTextLength = /* @__PURE__ */ b("GetWindowTextLengthW", "<HWND>ptr -> i32");
|
|
16579
16629
|
var GetWindowLongPtr = /* @__PURE__ */ b("GetWindowLong" + LONG_PTR_SYM, "<HWND>ptr i32@Gwlp -> <>ptr");
|
|
16580
16630
|
var SetWindowLongPtr = /* @__PURE__ */ b("SetWindowLong" + LONG_PTR_SYM, "<HWND>ptr i32@Gwlp <>ptr -> <>ptr");
|
|
16581
16631
|
var EnableWindow = /* @__PURE__ */ b("EnableWindow", "<HWND>ptr i32 -> i32");
|
|
16582
16632
|
var SetParent = /* @__PURE__ */ b("SetParent", "<HWND>ptr <HWND>ptr -> <HWND>ptr");
|
|
16633
|
+
var GetWindow = /* @__PURE__ */ b("GetWindow", "<HWND>ptr u32@GetWindowCmd -> <HWND>ptr");
|
|
16634
|
+
var PostQuitMessage = /* @__PURE__ */ b("PostQuitMessage", "i32 -> void");
|
|
16583
16635
|
var DefWindowProc = /* @__PURE__ */ b("DefWindowProcW", "<HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr");
|
|
16584
16636
|
var CallWindowProc = /* @__PURE__ */ b("CallWindowProcW", "<>ptr <HWND>ptr u32@AnyMsg <>ptr <>ptr -> <>ptr");
|
|
16585
16637
|
var GetDC = /* @__PURE__ */ b("GetDC", "<HWND>ptr -> <HDC>ptr");
|
|
16586
16638
|
var ReleaseDC = /* @__PURE__ */ b("ReleaseDC", "<HWND>ptr <HDC>ptr! -> i32");
|
|
16587
16639
|
var DrawText = /* @__PURE__ */ b("DrawTextW", "<HDC>ptr! <WCHAR>ptr i32 <RECT>ptr i32 -> i32");
|
|
16588
16640
|
var InvalidateRect = /* @__PURE__ */ b("InvalidateRect", "<HWND>ptr <RECT>ptr i32 -> i32", { RECT });
|
|
16641
|
+
var UpdateWindow = /* @__PURE__ */ b("UpdateWindow", "<HWND>ptr -> i32");
|
|
16589
16642
|
var SetCursor = /* @__PURE__ */ b("SetCursor", "<HCURSOR>ptr -> <HCURSOR>ptr");
|
|
16590
16643
|
var LoadCursor = /* @__PURE__ */ b("LoadCursorW", "<HMODULE>ptr <>ptr -> <HCURSOR>ptr");
|
|
16591
16644
|
var GetCursorPos = /* @__PURE__ */ b("GetCursorPos", "<POINT>ptr -> i32");
|
|
16592
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");
|
|
16593
16648
|
var ShowScrollBar = /* @__PURE__ */ b("ShowScrollBar", "<HWND>ptr u32 i32 -> i32");
|
|
16594
16649
|
var GetSystemMetrics = /* @__PURE__ */ b("GetSystemMetrics", "i32 -> i32");
|
|
16650
|
+
var SystemParametersInfo = /* @__PURE__ */ b("SystemParametersInfoW", "u32 u32 <BYTE>ptr u32 -> i32");
|
|
16595
16651
|
|
|
16596
16652
|
// _build/lib/react-qw/reconciler.js
|
|
16597
16653
|
var import_react_reconciler = __toESM(require_react_reconciler(), 1);
|
|
@@ -16606,8 +16662,33 @@ var DeleteObject = /* @__PURE__ */ b2("DeleteObject", "<HGDIOBJ>ptr -> i32");
|
|
|
16606
16662
|
var GetDeviceCaps = /* @__PURE__ */ b2("GetDeviceCaps", "<HDC>ptr! i32@DeviceCap -> i32");
|
|
16607
16663
|
var CreateFontIndirect = /* @__PURE__ */ b2("CreateFontIndirectW", "<LOGFONTW>ptr -> <HGDIOBJ>ptr", { LOGFONTW });
|
|
16608
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");
|
|
16609
16667
|
var GetObject = /* @__PURE__ */ b2("GetObjectW", "<HGDIOBJ>ptr i32 <BYTE>ptr -> i32");
|
|
16610
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
|
+
|
|
16611
16692
|
// _build/lib/react-qw/props.js
|
|
16612
16693
|
import * as gui from "gui";
|
|
16613
16694
|
function applyProps(instance, newProps, _oldProps) {
|
|
@@ -16631,14 +16712,14 @@ function applyProps(instance, newProps, _oldProps) {
|
|
|
16631
16712
|
EnableWindow(hwnd, !newProps.disabled ? 1 : 0);
|
|
16632
16713
|
}
|
|
16633
16714
|
if ("hidden" in newProps) {
|
|
16634
|
-
|
|
16715
|
+
ShowWindow(
|
|
16635
16716
|
hwnd,
|
|
16636
16717
|
newProps.hidden ? 0 : 5
|
|
16637
16718
|
/* ShowWindowCmd.SHOW */
|
|
16638
16719
|
);
|
|
16639
16720
|
}
|
|
16640
16721
|
if ("visible" in newProps) {
|
|
16641
|
-
|
|
16722
|
+
ShowWindow(
|
|
16642
16723
|
hwnd,
|
|
16643
16724
|
newProps.visible ? 5 : 0
|
|
16644
16725
|
/* ShowWindowCmd.HIDE */
|
|
@@ -16758,24 +16839,21 @@ function measureTextForHwnd(hwnd, text) {
|
|
|
16758
16839
|
if (hFont)
|
|
16759
16840
|
SelectObject(hdc, oldFont);
|
|
16760
16841
|
ReleaseDC(hwnd, hdc);
|
|
16761
|
-
const wr =
|
|
16762
|
-
const cr =
|
|
16763
|
-
|
|
16764
|
-
|
|
16765
|
-
|
|
16842
|
+
const wr = RECT.alloc();
|
|
16843
|
+
const cr = RECT.alloc();
|
|
16844
|
+
const okWr = GetWindowRect(hwnd, wr.ptr);
|
|
16845
|
+
const okCr = GetClientRect(hwnd, 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);
|
|
16766
16850
|
}
|
|
16767
16851
|
return result;
|
|
16768
16852
|
}
|
|
16769
16853
|
|
|
16770
16854
|
// _build/lib/react-qw/reconciler.js
|
|
16771
|
-
var dpiFont =
|
|
16772
|
-
var scaleFactor = (
|
|
16773
|
-
const hdc = GetDC(NULL);
|
|
16774
|
-
const dpi = hdc ? GetDeviceCaps(hdc, 88) : 96;
|
|
16775
|
-
if (hdc)
|
|
16776
|
-
ReleaseDC(NULL, hdc);
|
|
16777
|
-
return dpi / 96;
|
|
16778
|
-
})();
|
|
16855
|
+
var dpiFont = createSystemDpiFont();
|
|
16856
|
+
var scaleFactor = getScaleFactor();
|
|
16779
16857
|
var DELAYED_CONTROLS = /* @__PURE__ */ new Set(["SysListView32", "SysTreeView32", "LISTBOX", "COMBOBOX", "msctls_trackbar32", "SysDateTimePick32", "SysLink"]);
|
|
16780
16858
|
function isDelayedControl(winClass) {
|
|
16781
16859
|
return DELAYED_CONTROLS.has(winClass);
|
|
@@ -16821,11 +16899,12 @@ function runFlexLayout(inst) {
|
|
|
16821
16899
|
const visible = children.filter((c) => !c.props.hidden);
|
|
16822
16900
|
if (visible.length === 0)
|
|
16823
16901
|
return;
|
|
16824
|
-
const
|
|
16825
|
-
if (!
|
|
16902
|
+
const rcBuf = RECT.alloc();
|
|
16903
|
+
if (!GetClientRect(inst.hwnd, rcBuf.ptr)) {
|
|
16826
16904
|
console.log("flex: no rect for", inst.hwnd, inst.type);
|
|
16827
16905
|
return;
|
|
16828
16906
|
}
|
|
16907
|
+
const rect = RECT.decode(rcBuf);
|
|
16829
16908
|
const pw = (rect.right - rect.left) / scaleFactor;
|
|
16830
16909
|
const ph = (rect.bottom - rect.top) / scaleFactor;
|
|
16831
16910
|
if (pw <= 0 || ph <= 0) {
|
|
@@ -17026,7 +17105,7 @@ var hostConfig = {
|
|
|
17026
17105
|
},
|
|
17027
17106
|
hideInstance(instance) {
|
|
17028
17107
|
if (instance.hwnd !== null)
|
|
17029
|
-
|
|
17108
|
+
ShowWindow(
|
|
17030
17109
|
instance.hwnd,
|
|
17031
17110
|
0
|
|
17032
17111
|
/* ShowWindowCmd.HIDE */
|
|
@@ -17034,7 +17113,7 @@ var hostConfig = {
|
|
|
17034
17113
|
},
|
|
17035
17114
|
hideTextInstance(instance) {
|
|
17036
17115
|
if (instance.hwnd !== null)
|
|
17037
|
-
|
|
17116
|
+
ShowWindow(
|
|
17038
17117
|
instance.hwnd,
|
|
17039
17118
|
0
|
|
17040
17119
|
/* ShowWindowCmd.HIDE */
|
|
@@ -17042,7 +17121,7 @@ var hostConfig = {
|
|
|
17042
17121
|
},
|
|
17043
17122
|
unhideInstance(instance, _props) {
|
|
17044
17123
|
if (instance.hwnd !== null)
|
|
17045
|
-
|
|
17124
|
+
ShowWindow(
|
|
17046
17125
|
instance.hwnd,
|
|
17047
17126
|
5
|
|
17048
17127
|
/* ShowWindowCmd.SHOW */
|
|
@@ -17050,7 +17129,7 @@ var hostConfig = {
|
|
|
17050
17129
|
},
|
|
17051
17130
|
unhideTextInstance(instance, _text) {
|
|
17052
17131
|
if (instance.hwnd !== null)
|
|
17053
|
-
|
|
17132
|
+
ShowWindow(
|
|
17054
17133
|
instance.hwnd,
|
|
17055
17134
|
5
|
|
17056
17135
|
/* ShowWindowCmd.SHOW */
|
|
@@ -17297,11 +17376,10 @@ var DateTimePicker = (0, import_react5.forwardRef)(function DateTimePicker2({ va
|
|
|
17297
17376
|
if (!h)
|
|
17298
17377
|
return;
|
|
17299
17378
|
InvalidateRect(h, NULL, 1);
|
|
17300
|
-
const cr =
|
|
17301
|
-
if (cr) {
|
|
17302
|
-
const
|
|
17303
|
-
|
|
17304
|
-
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);
|
|
17305
17383
|
}
|
|
17306
17384
|
}, []);
|
|
17307
17385
|
return (0, import_jsx_runtime4.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
@@ -17362,7 +17440,10 @@ var Input = (0, import_react6.forwardRef)(({ value: controlledValue, defaultValu
|
|
|
17362
17440
|
const h = inputRef.current;
|
|
17363
17441
|
if (!h)
|
|
17364
17442
|
return;
|
|
17365
|
-
const
|
|
17443
|
+
const cap = GetWindowTextLength(h) + 1;
|
|
17444
|
+
const buf = WCHAR.alloc(cap);
|
|
17445
|
+
GetWindowText(h, buf, cap);
|
|
17446
|
+
const newText = WCHAR.decode(buf);
|
|
17366
17447
|
if (!isControlled)
|
|
17367
17448
|
setInternalValue(newText);
|
|
17368
17449
|
onChange?.(newText);
|
|
@@ -17450,6 +17531,49 @@ var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
|
|
|
17450
17531
|
var import_react9 = __toESM(require_react(), 1);
|
|
17451
17532
|
import * as gui9 from "gui";
|
|
17452
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
|
|
17453
17577
|
function writeU32(ptr, offset, v) {
|
|
17454
17578
|
ffi3.writeByte(ptr + offset, v & 255);
|
|
17455
17579
|
ffi3.writeByte(ptr + offset + 1, v >> 8 & 255);
|
|
@@ -17539,7 +17663,7 @@ function resolveCellStyle(columns, data, row, colIndex) {
|
|
|
17539
17663
|
}
|
|
17540
17664
|
function makeLVItem(i, sub, text, image) {
|
|
17541
17665
|
const textBuf = WCHAR.encode(text);
|
|
17542
|
-
const
|
|
17666
|
+
const b7 = LVITEMW.encode({
|
|
17543
17667
|
mask: 1 | (image !== void 0 ? 2 : 0),
|
|
17544
17668
|
iItem: i,
|
|
17545
17669
|
iSubItem: sub,
|
|
@@ -17556,32 +17680,32 @@ function makeLVItem(i, sub, text, image) {
|
|
|
17556
17680
|
piColFmt: 0,
|
|
17557
17681
|
iGroup: 0
|
|
17558
17682
|
});
|
|
17559
|
-
|
|
17560
|
-
return
|
|
17683
|
+
b7.__textBuf = textBuf;
|
|
17684
|
+
return b7;
|
|
17561
17685
|
}
|
|
17562
17686
|
var ListView = (0, import_react9.forwardRef)(function ListViewInner({ columns, data, style, icons, iconSize, getIcon }, ref) {
|
|
17563
17687
|
const lvRef = (0, import_react9.useRef)(null);
|
|
17564
|
-
const iconListRef = (0, import_react9.useRef)(
|
|
17688
|
+
const iconListRef = (0, import_react9.useRef)(NULL);
|
|
17565
17689
|
(0, import_react9.useEffect)(() => {
|
|
17566
17690
|
const h = lvRef.current;
|
|
17567
17691
|
if (!h)
|
|
17568
17692
|
return;
|
|
17569
17693
|
const il = iconListRef.current;
|
|
17570
|
-
iconListRef.current =
|
|
17694
|
+
iconListRef.current = NULL;
|
|
17571
17695
|
if (il) {
|
|
17572
17696
|
gui9.SendMessage(h, 4099, 1, 0);
|
|
17573
|
-
|
|
17697
|
+
ImageListDestroy(il);
|
|
17574
17698
|
}
|
|
17575
17699
|
if (!icons || icons.length === 0)
|
|
17576
17700
|
return;
|
|
17577
17701
|
const size = iconSize ?? 32;
|
|
17578
|
-
const img =
|
|
17702
|
+
const img = ImageListCreate(size, size, 32, icons.length, 1);
|
|
17579
17703
|
if (!img)
|
|
17580
17704
|
return;
|
|
17581
17705
|
for (const p of icons) {
|
|
17582
|
-
const hbm =
|
|
17706
|
+
const hbm = createBitmapFromPixels(size, size, p);
|
|
17583
17707
|
if (hbm) {
|
|
17584
|
-
|
|
17708
|
+
ImageListAdd(img, hbm, NULL);
|
|
17585
17709
|
DeleteObject(hbm);
|
|
17586
17710
|
}
|
|
17587
17711
|
}
|
|
@@ -17762,22 +17886,19 @@ var RadioButton = (0, import_react11.forwardRef)(({ checked: controlledChecked,
|
|
|
17762
17886
|
// _build/lib/react-qw/components/ScrollView.js
|
|
17763
17887
|
var import_jsx_runtime11 = __toESM(require_jsx_runtime(), 1);
|
|
17764
17888
|
var import_react12 = __toESM(require_react(), 1);
|
|
17765
|
-
import * as gui12 from "gui";
|
|
17766
17889
|
var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth, contentHeight }, ref) => {
|
|
17767
17890
|
const svRef = (0, import_react12.useRef)(null);
|
|
17768
17891
|
const contentRef = (0, import_react12.useRef)(null);
|
|
17769
17892
|
const scrollXRef = (0, import_react12.useRef)(0);
|
|
17770
17893
|
const scrollYRef = (0, import_react12.useRef)(0);
|
|
17771
17894
|
function updateScroll(sv, content) {
|
|
17772
|
-
const
|
|
17773
|
-
if (!
|
|
17895
|
+
const svBuf = RECT.alloc();
|
|
17896
|
+
if (!GetClientRect(sv, svBuf.ptr))
|
|
17774
17897
|
return;
|
|
17775
|
-
const
|
|
17776
|
-
const
|
|
17777
|
-
const
|
|
17778
|
-
const scale =
|
|
17779
|
-
if (hdc)
|
|
17780
|
-
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();
|
|
17781
17902
|
const natW = Math.round((contentWidth ?? svW / scale) * scale);
|
|
17782
17903
|
const natH = Math.round((contentHeight ?? svH / scale) * scale);
|
|
17783
17904
|
scrollXRef.current = Math.max(0, Math.min(scrollXRef.current, natW - svW));
|
|
@@ -17794,14 +17915,28 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17794
17915
|
);
|
|
17795
17916
|
forceFlexLayout(content);
|
|
17796
17917
|
if (natW > svW) {
|
|
17797
|
-
|
|
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);
|
|
17798
17926
|
ShowScrollBar(sv, 0, 1);
|
|
17799
17927
|
} else {
|
|
17800
17928
|
scrollXRef.current = 0;
|
|
17801
17929
|
ShowScrollBar(sv, 0, 0);
|
|
17802
17930
|
}
|
|
17803
17931
|
if (natH > svH) {
|
|
17804
|
-
|
|
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);
|
|
17805
17940
|
ShowScrollBar(sv, 1, 1);
|
|
17806
17941
|
} else {
|
|
17807
17942
|
scrollYRef.current = 0;
|
|
@@ -17831,15 +17966,21 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17831
17966
|
1 | 4
|
|
17832
17967
|
/* SetWindowPosFlag.SWP_NOZORDER */
|
|
17833
17968
|
);
|
|
17834
|
-
|
|
17969
|
+
SetScrollInfo(sv, bar, { cbSize: SCROLLINFO.size, fMask: 4, nPos: newPos }, 1);
|
|
17835
17970
|
}
|
|
17836
17971
|
function handleScroll(e, bar) {
|
|
17837
17972
|
const sv = svRef.current;
|
|
17838
17973
|
const content = contentRef.current;
|
|
17839
17974
|
if (!sv || !content)
|
|
17840
17975
|
return;
|
|
17841
|
-
const
|
|
17842
|
-
|
|
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;
|
|
17843
17984
|
const code = e.wParam & 65535;
|
|
17844
17985
|
const ref_ = bar === 1 ? scrollYRef : scrollXRef;
|
|
17845
17986
|
let newPos = ref_.current;
|
|
@@ -17850,9 +17991,9 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17850
17991
|
else if (code === 1)
|
|
17851
17992
|
newPos += 20;
|
|
17852
17993
|
else if (code === 2)
|
|
17853
|
-
newPos -= info.
|
|
17994
|
+
newPos -= info.nPage;
|
|
17854
17995
|
else if (code === 3)
|
|
17855
|
-
newPos += info.
|
|
17996
|
+
newPos += info.nPage;
|
|
17856
17997
|
else
|
|
17857
17998
|
return;
|
|
17858
17999
|
newPos = Math.max(0, Math.min(maxPos, newPos));
|
|
@@ -17872,8 +18013,14 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17872
18013
|
if (!isHorz && contentHeight === void 0)
|
|
17873
18014
|
return;
|
|
17874
18015
|
const bar = isHorz ? 0 : 1;
|
|
17875
|
-
const
|
|
17876
|
-
|
|
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;
|
|
17877
18024
|
const ref_ = isHorz ? scrollXRef : scrollYRef;
|
|
17878
18025
|
let newPos = ref_.current + dy;
|
|
17879
18026
|
newPos = Math.max(0, Math.min(maxPos, newPos));
|
|
@@ -17921,7 +18068,7 @@ var ScrollView = (0, import_react12.forwardRef)(({ children, style, contentWidth
|
|
|
17921
18068
|
// _build/lib/react-qw/components/Slider.js
|
|
17922
18069
|
var import_jsx_runtime12 = __toESM(require_jsx_runtime(), 1);
|
|
17923
18070
|
var import_react13 = __toESM(require_react(), 1);
|
|
17924
|
-
import * as
|
|
18071
|
+
import * as gui12 from "gui";
|
|
17925
18072
|
var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 100, vertical = false, disabled, style }, ref) => {
|
|
17926
18073
|
const wrapperRef = (0, import_react13.useRef)(null);
|
|
17927
18074
|
const sliderRef = (0, import_react13.useRef)(null);
|
|
@@ -17930,14 +18077,14 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17930
18077
|
if (!h)
|
|
17931
18078
|
return;
|
|
17932
18079
|
const lParam = min & 65535 | (max & 65535) << 16;
|
|
17933
|
-
|
|
17934
|
-
|
|
18080
|
+
gui12.SendMessage(h, 1030, 0, lParam);
|
|
18081
|
+
gui12.SendMessage(h, 1029, 1, value);
|
|
17935
18082
|
}, [min, max]);
|
|
17936
18083
|
(0, import_react13.useEffect)(() => {
|
|
17937
18084
|
const h = sliderRef.current;
|
|
17938
18085
|
if (!h)
|
|
17939
18086
|
return;
|
|
17940
|
-
|
|
18087
|
+
gui12.SendMessage(h, 1029, 1, value);
|
|
17941
18088
|
}, [value]);
|
|
17942
18089
|
const tbStyle = 268435456 | 65536 | 1 | (vertical ? 2 : 0);
|
|
17943
18090
|
return (0, import_jsx_runtime12.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style, ref: (h) => {
|
|
@@ -17954,7 +18101,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17954
18101
|
const h = sliderRef.current;
|
|
17955
18102
|
if (!h)
|
|
17956
18103
|
return 0;
|
|
17957
|
-
const pos =
|
|
18104
|
+
const pos = gui12.SendMessage(h, 1024, 0, 0);
|
|
17958
18105
|
onChange?.(pos);
|
|
17959
18106
|
return 0;
|
|
17960
18107
|
}
|
|
@@ -17967,7 +18114,7 @@ var Slider = (0, import_react13.forwardRef)(({ value, onChange, min = 0, max = 1
|
|
|
17967
18114
|
// _build/lib/react-qw/components/Tab.js
|
|
17968
18115
|
var import_jsx_runtime13 = __toESM(require_jsx_runtime(), 1);
|
|
17969
18116
|
var import_react14 = __toESM(require_react(), 1);
|
|
17970
|
-
import * as
|
|
18117
|
+
import * as gui13 from "gui";
|
|
17971
18118
|
var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex, defaultSelectedIndex = 0, onChange, style }, ref) => {
|
|
17972
18119
|
const [internalIndex, setInternalIndex] = (0, import_react14.useState)(defaultSelectedIndex);
|
|
17973
18120
|
const isControlled = controlledIndex !== void 0;
|
|
@@ -17977,7 +18124,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
17977
18124
|
const h = tabHwnd.current;
|
|
17978
18125
|
if (!h)
|
|
17979
18126
|
return;
|
|
17980
|
-
|
|
18127
|
+
gui13.SendMessage(h, 4873, 0, 0);
|
|
17981
18128
|
for (let i = 0; i < tabs.length; i++) {
|
|
17982
18129
|
const titleBuf = WCHAR.encode(tabs[i].title);
|
|
17983
18130
|
const tci = TCITEMW.encode({
|
|
@@ -17990,14 +18137,14 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
17990
18137
|
lParam: 0
|
|
17991
18138
|
});
|
|
17992
18139
|
const tciPtr = tci.ptr;
|
|
17993
|
-
|
|
18140
|
+
gui13.SendMessage(h, 4926, i, tciPtr);
|
|
17994
18141
|
}
|
|
17995
|
-
|
|
18142
|
+
gui13.SendMessage(h, 4876, sel, 0);
|
|
17996
18143
|
}, [tabs]);
|
|
17997
18144
|
(0, import_react14.useEffect)(() => {
|
|
17998
18145
|
const h = tabHwnd.current;
|
|
17999
18146
|
if (h)
|
|
18000
|
-
|
|
18147
|
+
gui13.SendMessage(h, 4876, sel, 0);
|
|
18001
18148
|
}, [sel]);
|
|
18002
18149
|
return (0, import_jsx_runtime13.jsxs)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
18003
18150
|
if (e.msg === 78) {
|
|
@@ -18006,7 +18153,7 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
18006
18153
|
return;
|
|
18007
18154
|
const code = nmCode(e.lParam);
|
|
18008
18155
|
if (code === -552 || code === -2) {
|
|
18009
|
-
const newSel =
|
|
18156
|
+
const newSel = gui13.SendMessage(h, 4875, 0, 0);
|
|
18010
18157
|
if (newSel !== sel) {
|
|
18011
18158
|
if (!isControlled)
|
|
18012
18159
|
setInternalIndex(newSel);
|
|
@@ -18019,12 +18166,12 @@ var Tab = (0, import_react14.forwardRef)(({ tabs, selectedIndex: controlledIndex
|
|
|
18019
18166
|
|
|
18020
18167
|
// _build/lib/react-qw/components/Tooltip.js
|
|
18021
18168
|
var import_react15 = __toESM(require_react(), 1);
|
|
18022
|
-
import * as
|
|
18169
|
+
import * as gui14 from "gui";
|
|
18023
18170
|
|
|
18024
18171
|
// _build/lib/react-qw/components/TreeView.js
|
|
18025
18172
|
var import_jsx_runtime14 = __toESM(require_jsx_runtime(), 1);
|
|
18026
18173
|
var import_react16 = __toESM(require_react(), 1);
|
|
18027
|
-
import * as
|
|
18174
|
+
import * as gui15 from "gui";
|
|
18028
18175
|
function buildTvItem(textPtr, cChildren) {
|
|
18029
18176
|
let mask = 1;
|
|
18030
18177
|
if (cChildren > 0)
|
|
@@ -18049,20 +18196,20 @@ function insertItems(hTree, nodes, parentHandle, hItemMap, keyMap) {
|
|
|
18049
18196
|
const itemBuf = buildTvItem(textBuf.ptr, cChildren);
|
|
18050
18197
|
const item = TVITEM.decode(itemBuf);
|
|
18051
18198
|
const tvins = TVINSERTSTRUCT.encode({ hParent: parentHandle, hInsertAfter: -65536, item });
|
|
18052
|
-
const hItem =
|
|
18199
|
+
const hItem = gui15.SendMessage(hTree, 4402, 0, tvins.ptr);
|
|
18053
18200
|
hItemMap.set(hItem, node);
|
|
18054
18201
|
if (node.key)
|
|
18055
18202
|
keyMap.set(node.key, hItem);
|
|
18056
18203
|
if (node.children && node.children.length > 0) {
|
|
18057
18204
|
insertItems(hTree, node.children, hItem, hItemMap, keyMap);
|
|
18058
|
-
|
|
18205
|
+
gui15.SendMessage(hTree, 4354, 2, hItem);
|
|
18059
18206
|
}
|
|
18060
18207
|
}
|
|
18061
18208
|
}
|
|
18062
18209
|
function deleteAllItems(hTree) {
|
|
18063
|
-
const n =
|
|
18210
|
+
const n = gui15.SendMessage(hTree, 4357, 0, 0);
|
|
18064
18211
|
if (n > 0)
|
|
18065
|
-
|
|
18212
|
+
gui15.SendMessage(
|
|
18066
18213
|
hTree,
|
|
18067
18214
|
4353,
|
|
18068
18215
|
1,
|
|
@@ -18094,7 +18241,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18094
18241
|
const h = tvRef.current;
|
|
18095
18242
|
if (!h)
|
|
18096
18243
|
return;
|
|
18097
|
-
|
|
18244
|
+
gui15.SendMessage(
|
|
18098
18245
|
h,
|
|
18099
18246
|
4396,
|
|
18100
18247
|
0,
|
|
@@ -18110,7 +18257,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18110
18257
|
return;
|
|
18111
18258
|
const hItem = keyMapRef.current.get(selKey);
|
|
18112
18259
|
if (hItem !== void 0)
|
|
18113
|
-
|
|
18260
|
+
gui15.SendMessage(h, 4363, 9, hItem);
|
|
18114
18261
|
}, [selKey]);
|
|
18115
18262
|
return (0, import_jsx_runtime14.jsx)("w", { type: "STATIC", ws: 268435456 | 33554432, style: { ...style, flexDirection: "column", alignItems: "stretch" }, ref, onEvent: (e) => {
|
|
18116
18263
|
if (e.msg === 78) {
|
|
@@ -18119,7 +18266,7 @@ var TreeView = (0, import_react16.forwardRef)(function TreeViewInner({ data, onS
|
|
|
18119
18266
|
const h = tvRef.current;
|
|
18120
18267
|
if (!h)
|
|
18121
18268
|
return;
|
|
18122
|
-
const hCaret =
|
|
18269
|
+
const hCaret = gui15.SendMessage(h, 4362, 9, 0);
|
|
18123
18270
|
const node = hItemMapRef.current.get(hCaret) ?? null;
|
|
18124
18271
|
const key = node?.key ?? null;
|
|
18125
18272
|
if (!isControlled)
|
|
@@ -18137,24 +18284,24 @@ var import_jsx_runtime15 = __toESM(require_jsx_runtime(), 1);
|
|
|
18137
18284
|
var import_react17 = __toESM(require_react(), 1);
|
|
18138
18285
|
|
|
18139
18286
|
// _build/lib/windows/comdlg32.js
|
|
18140
|
-
var
|
|
18141
|
-
var GetOpenFileName = /* @__PURE__ */
|
|
18287
|
+
var b4 = (name, sig) => bind("comdlg32.dll", name, sig);
|
|
18288
|
+
var GetOpenFileName = /* @__PURE__ */ b4("GetOpenFileNameW", "<OPENFILENAMEW>ptr -> u32");
|
|
18142
18289
|
|
|
18143
18290
|
// _build/lib/windows/shell32.js
|
|
18144
|
-
var
|
|
18145
|
-
var SHBrowseForFolder = /* @__PURE__ */
|
|
18146
|
-
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");
|
|
18147
18294
|
var Shell_NotifyIconGetRect = (() => {
|
|
18148
18295
|
try {
|
|
18149
|
-
return
|
|
18296
|
+
return b5("Shell_NotifyIconGetRect", "<NOTIFYICONIDENTIFIER>ptr <RECT>ptr -> i32", { NOTIFYICONIDENTIFIER });
|
|
18150
18297
|
} catch {
|
|
18151
18298
|
return null;
|
|
18152
18299
|
}
|
|
18153
18300
|
})();
|
|
18154
18301
|
|
|
18155
18302
|
// _build/lib/windows/ole32.js
|
|
18156
|
-
var
|
|
18157
|
-
var CoTaskMemFree = /* @__PURE__ */
|
|
18303
|
+
var b6 = (name, sig) => bind("ole32.dll", name, sig);
|
|
18304
|
+
var CoTaskMemFree = /* @__PURE__ */ b6("CoTaskMemFree", "<>ptr -> void");
|
|
18158
18305
|
|
|
18159
18306
|
// _build/lib/react-qw/components/PathPicker.js
|
|
18160
18307
|
function openFileDialog(owner, filter, title, multiple) {
|
|
@@ -18249,7 +18396,7 @@ var rootMap = /* @__PURE__ */ new Map();
|
|
|
18249
18396
|
function ensureDefaultClass() {
|
|
18250
18397
|
if (defaultClassRegistered)
|
|
18251
18398
|
return DEFAULT_CLASS;
|
|
18252
|
-
|
|
18399
|
+
gui16.RegisterClass(DEFAULT_CLASS, (hwnd, msg, wParam, lParam) => {
|
|
18253
18400
|
const entry = rootMap.get(hwnd);
|
|
18254
18401
|
if (msg === 2 && entry) {
|
|
18255
18402
|
rootMap.delete(hwnd);
|
|
@@ -18275,15 +18422,27 @@ function createRoot(container) {
|
|
|
18275
18422
|
const ws = (cfg.ws ?? 0) | 13565952;
|
|
18276
18423
|
const w = (cfg.width ?? 800) * scaleFactor;
|
|
18277
18424
|
const h = (cfg.height ?? 600) * scaleFactor;
|
|
18278
|
-
const [sw, sh] = [GetSystemMetrics(
|
|
18425
|
+
const [sw, sh] = [GetSystemMetrics(
|
|
18426
|
+
0
|
|
18427
|
+
/* SysMetrics.CXSCREEN */
|
|
18428
|
+
), GetSystemMetrics(
|
|
18429
|
+
1
|
|
18430
|
+
/* SysMetrics.CYSCREEN */
|
|
18431
|
+
)];
|
|
18279
18432
|
const x = cfg.x === void 0 ? (sw - w) / 2 | 0 : cfg.x === -2147483648 ? -2147483648 : cfg.x * scaleFactor;
|
|
18280
18433
|
const y = cfg.y === void 0 ? (sh - h) / 2 | 0 : cfg.y === -2147483648 ? -2147483648 : cfg.y * scaleFactor;
|
|
18281
|
-
const hwin =
|
|
18434
|
+
const hwin = gui16.CreateWindow(className, cfg.text || "", ws, x, y, w, h, null, null);
|
|
18282
18435
|
if (!hwin)
|
|
18283
18436
|
throw new Error("CreateWindow failed");
|
|
18284
18437
|
hwnd = hwin;
|
|
18285
|
-
if (!cfg.noShowWindow)
|
|
18286
|
-
|
|
18438
|
+
if (!cfg.noShowWindow) {
|
|
18439
|
+
ShowWindow(
|
|
18440
|
+
hwnd,
|
|
18441
|
+
1
|
|
18442
|
+
/* ShowWindowCmd.SHOWNORMAL */
|
|
18443
|
+
);
|
|
18444
|
+
UpdateWindow(hwnd);
|
|
18445
|
+
}
|
|
18287
18446
|
} else {
|
|
18288
18447
|
hwnd = container;
|
|
18289
18448
|
}
|
|
@@ -18371,25 +18530,25 @@ var Tester = class {
|
|
|
18371
18530
|
|
|
18372
18531
|
// _build/test/test_react_flex.js
|
|
18373
18532
|
var __setItems = null;
|
|
18374
|
-
|
|
18533
|
+
gui17.RegisterClass("FlexTest", (hwnd, msg, wParam, lParam) => {
|
|
18375
18534
|
if (!hwnd)
|
|
18376
|
-
return
|
|
18535
|
+
return gui17.DefWindowProc(hwnd, msg, wParam, lParam);
|
|
18377
18536
|
if (msg === 2) {
|
|
18378
|
-
|
|
18537
|
+
PostQuitMessage(0);
|
|
18379
18538
|
return 0;
|
|
18380
18539
|
}
|
|
18381
|
-
return
|
|
18540
|
+
return gui17.DefWindowProc(hwnd, msg, wParam, lParam);
|
|
18382
18541
|
});
|
|
18383
18542
|
function childrenOf(hwnd) {
|
|
18384
18543
|
const kids = [];
|
|
18385
|
-
let child =
|
|
18544
|
+
let child = GetWindow(
|
|
18386
18545
|
hwnd,
|
|
18387
18546
|
5
|
|
18388
18547
|
/* GetWindowCmd.CHILD */
|
|
18389
18548
|
);
|
|
18390
18549
|
while (child) {
|
|
18391
18550
|
kids.push(child);
|
|
18392
|
-
child =
|
|
18551
|
+
child = GetWindow(
|
|
18393
18552
|
child,
|
|
18394
18553
|
2
|
|
18395
18554
|
/* GetWindowCmd.NEXT */
|
|
@@ -18398,10 +18557,10 @@ function childrenOf(hwnd) {
|
|
|
18398
18557
|
return kids.reverse();
|
|
18399
18558
|
}
|
|
18400
18559
|
function getRelativeRect(childHwnd, parentHwnd) {
|
|
18401
|
-
const
|
|
18402
|
-
|
|
18403
|
-
if (!pr || !cr)
|
|
18560
|
+
const pBuf = RECT.alloc(), cBuf = RECT.alloc();
|
|
18561
|
+
if (!GetWindowRect(parentHwnd, pBuf.ptr) || !GetWindowRect(childHwnd, cBuf.ptr))
|
|
18404
18562
|
return { x: 0, y: 0, width: 0, height: 0 };
|
|
18563
|
+
const pr = RECT.decode(pBuf), cr = RECT.decode(cBuf);
|
|
18405
18564
|
return {
|
|
18406
18565
|
x: cr.left - pr.left,
|
|
18407
18566
|
y: cr.top - pr.top,
|
|
@@ -18516,7 +18675,7 @@ async function testRowCol(tester, root, rootHwnd, name, dir, parentW, parentH, c
|
|
|
18516
18675
|
}
|
|
18517
18676
|
async function main() {
|
|
18518
18677
|
const tester = new Tester();
|
|
18519
|
-
const hwnd =
|
|
18678
|
+
const hwnd = gui17.CreateWindow("FlexTest", "", 0, 0, 0, 800, 600, null, null);
|
|
18520
18679
|
if (!hwnd) {
|
|
18521
18680
|
tester.check("create root window", true, false);
|
|
18522
18681
|
tester.summary();
|
|
@@ -18650,7 +18809,7 @@ async function main() {
|
|
|
18650
18809
|
outer4 = childrenOf(hwnd);
|
|
18651
18810
|
checkDynamic(outer4, [175]);
|
|
18652
18811
|
tester.summary();
|
|
18653
|
-
|
|
18812
|
+
PostQuitMessage(0);
|
|
18654
18813
|
}
|
|
18655
18814
|
main();
|
|
18656
18815
|
/*! Bundled license information:
|