@gjsify/gtk-host 0.51.0 → 0.52.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.md +154 -1
- package/lib/esm/accessibility.js +1 -0
- package/lib/esm/conformance/at-context.js +1 -0
- package/lib/esm/conformance/index.js +1 -1
- package/lib/esm/conformance/shared-tree-builder.js +1 -0
- package/lib/esm/errors.js +1 -1
- package/lib/esm/fonts.js +1 -1
- package/lib/esm/generated/accessibility.js +1 -0
- package/lib/esm/host.js +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/menu.js +1 -1
- package/lib/esm/policies.js +1 -1
- package/lib/esm/props.js +1 -1
- package/lib/types/accessibility.d.ts +56 -0
- package/lib/types/accessibility.spec.d.ts +2 -0
- package/lib/types/attrs.d.ts +15 -2
- package/lib/types/conformance/at-context.d.ts +31 -0
- package/lib/types/conformance/index.d.ts +2 -0
- package/lib/types/conformance/nick-vectors.d.mts +26 -0
- package/lib/types/conformance/shared-tree-builder.d.ts +26 -0
- package/lib/types/errors.d.ts +61 -1
- package/lib/types/font-dir.d.ts +5 -3
- package/lib/types/fonts.d.ts +66 -12
- package/lib/types/generated/accessibility.d.ts +208 -0
- package/lib/types/generated/enum-values.d.mts +1 -1
- package/lib/types/generated/props.d.ts +3310 -186
- package/lib/types/generated/surface-data.d.mts +10 -0
- package/lib/types/generated/value-types.d.mts +28 -0
- package/lib/types/generator/emit-types.d.mts +22 -0
- package/lib/types/generator/model.d.mts +20 -0
- package/lib/types/host.d.ts +26 -0
- package/lib/types/index.d.ts +1 -1
- package/lib/types/policies.d.ts +58 -1
- package/lib/types/props.d.ts +10 -5
- package/lib/types/react-jsx-runtime.d.ts +2 -2
- package/lib/types/types.d.ts +52 -0
- package/lib/types/ui-font.d.ts +12 -2
- package/package.json +17 -15
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type Gtk from '@girs/gtk-4.0';
|
|
2
|
+
/**
|
|
3
|
+
* Give this process an in-process accessibility backend, before anything asks for one.
|
|
4
|
+
*
|
|
5
|
+
* OVERWRITE is deliberate: CI sets `GTK_A11Y=none` explicitly, and honouring it would
|
|
6
|
+
* keep the vectors measuring an absent layer rather than the code under test.
|
|
7
|
+
*
|
|
8
|
+
* AND THE ORDER IS LOAD-BEARING, which is why this belongs at a test ENTRY POINT and
|
|
9
|
+
* not beside a `Gtk.init()`. GTK reads the variable lazily but exactly ONCE, at the
|
|
10
|
+
* first `get_at_context()`, and caches the answer — measured on gtk 4.22.5 starting
|
|
11
|
+
* from `GTK_A11Y=none`: set after `Gtk.init()` and before any widget is asked for its
|
|
12
|
+
* context, `test` takes; set after ONE widget has been asked, the answer is `null`
|
|
13
|
+
* forever. A module body runs after every `import` above it, so an entry point is
|
|
14
|
+
* early enough only for as long as nothing it imports touches an AT context while
|
|
15
|
+
* being evaluated. {@link withAtContext} is what NAMES the day that stops being true.
|
|
16
|
+
*/
|
|
17
|
+
export declare function installAccessibilityBackend(): void;
|
|
18
|
+
/**
|
|
19
|
+
* The widget, or a refusal that says why an ARIA assertion about it cannot mean anything.
|
|
20
|
+
*
|
|
21
|
+
* A THROW rather than an `expect`, because the SENTENCE is the whole value here. Without
|
|
22
|
+
* it the symptom is `Expected: true (boolean) / Actual: false (boolean)`, six times over,
|
|
23
|
+
* on three OS legs at once — and that shape reads as a marshalling defect in whichever
|
|
24
|
+
* runtime those legs happen to share. It is not one; it is this.
|
|
25
|
+
*
|
|
26
|
+
* It also guards the assertions that expect FALSE, and those are the ones that make this
|
|
27
|
+
* a gate rather than a nicety: with no AT context they pass VACUOUSLY. A reset vector, a
|
|
28
|
+
* "nothing was authored here" vector — every one of them is green against a layer that
|
|
29
|
+
* was never there.
|
|
30
|
+
*/
|
|
31
|
+
export declare function withAtContext<T extends Gtk.Accessible>(widget: T): T;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { describeLogRecord, installDiagnosticsGate, isEnvironmentDiagnostic, type DiagnosticsGate, } from './diagnostics.js';
|
|
2
2
|
export { windowChromeCensus, windowChromeProblems, type WindowChromeCensus } from './window-chrome.js';
|
|
3
|
+
export { buildSharedTree } from './shared-tree-builder.js';
|
|
4
|
+
export { installAccessibilityBackend, withAtContext } from './at-context.js';
|
|
3
5
|
import type Gtk from '@girs/gtk-4.0';
|
|
4
6
|
import type { ChildPolicy, HostElement, NodePlacement, WidgetDescriptor } from '../types.js';
|
|
5
7
|
/** Every method name a policy names, so the check does not have to know the shapes. */
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** What GObject must end up holding, or the refusal that must reach the caller. */
|
|
2
|
+
export type NickOutcome = {
|
|
3
|
+
readonly holds: number;
|
|
4
|
+
} | {
|
|
5
|
+
readonly refuses: string;
|
|
6
|
+
};
|
|
7
|
+
export interface NickVector {
|
|
8
|
+
/** What this row is about — a failing row prints it. */
|
|
9
|
+
readonly what: string;
|
|
10
|
+
readonly tag: string;
|
|
11
|
+
/** Kebab, as GObject knows the property. */
|
|
12
|
+
readonly prop: string;
|
|
13
|
+
/** What a template, a JSX file or a renderer writes. */
|
|
14
|
+
readonly authored: string | number;
|
|
15
|
+
readonly outcome: NickOutcome;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Every edge of nick resolution, against four bitfields and three enums.
|
|
19
|
+
*
|
|
20
|
+
* MORE THAN ONE BITFIELD TYPE ON PURPOSE. `GtkInputHints` alone would prove the
|
|
21
|
+
* parser and nothing about the JOIN that finds it: the type surface reaches a
|
|
22
|
+
* bitfield through `PROP_ENUMS`, keyed by the DECLARING type, so a property inherited
|
|
23
|
+
* from an interface (`GtkEditable`) and one declared on the class itself take
|
|
24
|
+
* different routes to the same answer.
|
|
25
|
+
*/
|
|
26
|
+
export declare const NICK_VECTORS: readonly NickVector[];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SharedTreeNode } from '@gjsify/adwaita-core/conformance';
|
|
2
|
+
import type { HostElement } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A `SharedTreeNode`, realised: a tag, its authored properties, its placement, its children,
|
|
5
|
+
* in that order.
|
|
6
|
+
*
|
|
7
|
+
* Recursive and total — no tag list, no property list, no per-block case. The authored
|
|
8
|
+
* property NAMES go to `setProp` verbatim (through `createElement`), which is the point:
|
|
9
|
+
* `buttonLabel` reaching `button-label` is the host's own coercion, and a caller spelling the
|
|
10
|
+
* GObject name itself would be testing its own translation table instead of this one's.
|
|
11
|
+
*
|
|
12
|
+
* `built` COLLECTS THE ELEMENTS THIS CALL CREATED, in authored order, for a caller that has to
|
|
13
|
+
* tell them from the widgets libadwaita built AROUND them. Filtering a realised tree by CLASS
|
|
14
|
+
* cannot: the moment a corpus block authored a `GtkButton`, `AdwEntryRow`'s own apply button
|
|
15
|
+
* answered to the same name and the walk read one node too many. Identity is the only filter
|
|
16
|
+
* that stays right as the corpus grows, and only the builder knows it.
|
|
17
|
+
*
|
|
18
|
+
* THE SLOT GOES THROUGH THE SAME DOOR, and it is not a table here either. `setProp(el,
|
|
19
|
+
* 'slot', …)` is `setSlot`, and every framework adapter in this package already writes a
|
|
20
|
+
* `slot=` attribute through it; placement is then the parent descriptor's `ChildPolicy`,
|
|
21
|
+
* which refuses a name the parent has no destination for BY NAME. This builder read `tag`,
|
|
22
|
+
* `props` and `children` and dropped `slot` silently until a real `.blp` authored one — a
|
|
23
|
+
* `[top]` header bar landed in the content and the window title was then discarded by the
|
|
24
|
+
* bar's own construction, at exit 0.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildSharedTree(node: SharedTreeNode, built?: HostElement[]): HostElement;
|
package/lib/types/errors.d.ts
CHANGED
|
@@ -35,6 +35,38 @@ export declare const err: {
|
|
|
35
35
|
*/
|
|
36
36
|
listModelMismatch: (tag: string, prop: string, gtypeName: string) => GtkHostError;
|
|
37
37
|
badAdjustment: (tag: string, prop: string, got: string) => GtkHostError;
|
|
38
|
+
/**
|
|
39
|
+
* The `accessibility` prop given something that is not an object of ARIA names.
|
|
40
|
+
*
|
|
41
|
+
* One grouped prop, so the shape of the value is the first thing that can be wrong —
|
|
42
|
+
* and a string or an array would reach `Object.entries` and produce refusals about
|
|
43
|
+
* index names rather than about the prop.
|
|
44
|
+
*/
|
|
45
|
+
badAccessibility: (tag: string, got: string) => GtkHostError;
|
|
46
|
+
unknownAria: (tag: string, name: string) => GtkHostError;
|
|
47
|
+
/**
|
|
48
|
+
* An ARIA name the SHIPPED table has and the INSTALLED GTK does not.
|
|
49
|
+
*
|
|
50
|
+
* The same version-gap question the generated widget table answers with `SINCE`, on the
|
|
51
|
+
* one axis where GTK's own failure is worst: `update_property` with an out-of-range
|
|
52
|
+
* member emits `gtk_accessible_value_collect_for_property_value: assertion failed`, then
|
|
53
|
+
* `gtk_accessible_attribute_set_remove: assertion failed`, and exits 0 (measured).
|
|
54
|
+
*/
|
|
55
|
+
ariaNotInstalled: (tag: string, name: string, table: string) => GtkHostError;
|
|
56
|
+
badAriaValue: (tag: string, name: string, wants: string, got: string) => GtkHostError;
|
|
57
|
+
badAriaEnum: (tag: string, name: string, nick: string, gtypeName: string) => GtkHostError;
|
|
58
|
+
/**
|
|
59
|
+
* A relation whose value is another widget — the one part of GTK's ARIA surface this
|
|
60
|
+
* host cannot express, named rather than half-built.
|
|
61
|
+
*
|
|
62
|
+
* `Gtk.AccessibleList.new_from_list([widget])` builds exactly the value GTK wants, so
|
|
63
|
+
* the MARSHALLING is not what is missing: the ADDRESSING is. This host has no `id` prop,
|
|
64
|
+
* and `ref` is resolved by each framework AFTER the props of the element that names it
|
|
65
|
+
* are applied — so a ref read at this point is null on the render that authored it, and
|
|
66
|
+
* GTK takes a null reference at exit 0.
|
|
67
|
+
*/
|
|
68
|
+
ariaReference: (tag: string, name: string) => GtkHostError;
|
|
69
|
+
notAccessible: (tag: string) => GtkHostError;
|
|
38
70
|
badEnum: (tag: string, prop: string, nick: string, gtypeName: string) => GtkHostError;
|
|
39
71
|
unknownSignal: (tag: string, prop: string, signal: string) => GtkHostError;
|
|
40
72
|
signalTaken: (tag: string, prop: string, other: string, signal: string) => GtkHostError;
|
|
@@ -54,10 +86,38 @@ export declare const err: {
|
|
|
54
86
|
eventModifier: (prop: string, modifier: string) => GtkHostError;
|
|
55
87
|
badString: (tag: string, prop: string, got: string) => GtkHostError;
|
|
56
88
|
badBoolean: (tag: string, prop: string, value: string) => GtkHostError;
|
|
89
|
+
/**
|
|
90
|
+
* A MEMBER of a flags value that names nothing — not the value as a whole.
|
|
91
|
+
*
|
|
92
|
+
* This used to refuse every string on a flags property, because resolving a nick
|
|
93
|
+
* set was nothing GObject exposed. GTK's `.ui` parser does resolve one, so what is
|
|
94
|
+
* left to refuse is the typo inside a set that otherwise reads fine, and the
|
|
95
|
+
* message has to name the SET as well as the type: `"spellcheck|lowecase"` fails
|
|
96
|
+
* on one member, and reporting only the type sends a reader looking at the wrong
|
|
97
|
+
* half of their own string.
|
|
98
|
+
*/
|
|
57
99
|
badFlags: (tag: string, prop: string, value: string, gtypeName: string) => GtkHostError;
|
|
58
|
-
|
|
100
|
+
/**
|
|
101
|
+
* The one flags input GTK's own parser answers SILENTLY, so this host does not.
|
|
102
|
+
*
|
|
103
|
+
* Measured on GTK 4.22.4: `""` and `" "` both parse to `[true, 0]`, and a leading
|
|
104
|
+
* empty member is dropped without a word. Zero is a legal flags value, so the
|
|
105
|
+
* caller gets every flag cleared, no diagnostic and exit 0 — while `"a||b"` and
|
|
106
|
+
* `"a|"` do raise. Refusing all of them by one name keeps the stray separator a
|
|
107
|
+
* spelling mistake rather than a value.
|
|
108
|
+
*/
|
|
109
|
+
blankFlags: (tag: string, prop: string, value: string, gtypeName: string) => GtkHostError;
|
|
59
110
|
textNotAccepted: (tag: string, text: string) => GtkHostError;
|
|
60
111
|
unclaimedChild: (parentTag: string, childTag: string) => GtkHostError;
|
|
112
|
+
/**
|
|
113
|
+
* A placement the parent has no destination for.
|
|
114
|
+
*
|
|
115
|
+
* The EMPTY case is the common one and it used to print `Known slots: .` — `ordered`,
|
|
116
|
+
* `indexed` and `none` parents declare no slot names at all, and those are exactly the
|
|
117
|
+
* parents a stray `slot=` lands on. A reader needs "this parent has none" to act; a
|
|
118
|
+
* trailing full stop after nothing reads like the message was cut off. Both other
|
|
119
|
+
* renderers already spell it out, so this is also what makes the three agree.
|
|
120
|
+
*/
|
|
61
121
|
unknownSlot: (parentTag: string, slot: string, known: string[]) => GtkHostError;
|
|
62
122
|
/**
|
|
63
123
|
* An adder-backed slot with nothing that takes the child back out.
|
package/lib/types/font-dir.d.ts
CHANGED
|
@@ -54,9 +54,11 @@ export declare function resolveFontSources(options?: ResolveFontSourcesOptions):
|
|
|
54
54
|
* which is the only party that knows whether the payload became `/usr`, a `--prefix` tree, `/app`,
|
|
55
55
|
* a bundle's `Contents/Resources` or a Windows program directory.
|
|
56
56
|
*
|
|
57
|
-
* There is NO system fallback,
|
|
58
|
-
*
|
|
59
|
-
*
|
|
57
|
+
* There is NO system fallback, on ANY platform — where `resolveLocaleDir` keeps one for Linux,
|
|
58
|
+
* whose `/usr/share/locale` default is there both correct and free (it has none for darwin or
|
|
59
|
+
* win32, which have no such directory). The analogous
|
|
60
|
+
* `/usr/share/fonts` is correct on no platform: fontconfig has already scanned it, so walking it
|
|
61
|
+
* again would add
|
|
60
62
|
* hundreds of `add_font_file` calls to every startup to arrive at families the font map holds
|
|
61
63
|
* anyway. `undefined` therefore means "this application ships no faces of its own" — the ordinary
|
|
62
64
|
* case, and a quiet one, because the launcher exports the variable only when it staged a face.
|
package/lib/types/fonts.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import Gtk from 'gi://Gtk?version=4.0';
|
|
1
2
|
import { type FontFamilyMatch } from './font-families.js';
|
|
2
3
|
import { type FontSource, type ResolveFontSourcesOptions } from './font-dir.js';
|
|
3
4
|
import { type PlanUiFontOptions, type UiFontPlan, type UiFontPolicy } from './ui-font.js';
|
|
@@ -40,6 +41,29 @@ export interface FontFaceFailure {
|
|
|
40
41
|
readonly path: string;
|
|
41
42
|
readonly message: string;
|
|
42
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* A {@link FontSource} and the faces IT contributed.
|
|
46
|
+
*
|
|
47
|
+
* WHY THE ATTRIBUTION IS PART OF THE RESULT rather than something a caller re-derives. Since the
|
|
48
|
+
* GTK runtime bundle started carrying the GNOME UI typeface there are TWO sources, and the flat
|
|
49
|
+
* {@link InitFontsResult.registered}, {@link InitFontsResult.declined} and
|
|
50
|
+
* {@link InitFontsResult.failed} lists span both — so "did MY staged face arrive" stopped being
|
|
51
|
+
* answerable from them the day a published bundle gained a face, silently, with no caller
|
|
52
|
+
* changing a line. The loop that hands each file to the font map is the only place that knows
|
|
53
|
+
* which directory it came from; anything downstream is reduced to comparing path prefixes, which
|
|
54
|
+
* is a guess about filesystem layout rather than a measurement.
|
|
55
|
+
*
|
|
56
|
+
* The same argument {@link InitFontsResult.families} makes about the family diff, one field over:
|
|
57
|
+
* only the call that did the work is in a position to take the reading.
|
|
58
|
+
*/
|
|
59
|
+
export interface FontSourceOutcome extends FontSource {
|
|
60
|
+
/** Faces from THIS directory now on the default font map. */
|
|
61
|
+
readonly registered: readonly string[];
|
|
62
|
+
/** Faces from THIS directory the font map declined — see {@link isUnsupportedByFontMap}. */
|
|
63
|
+
readonly declined: readonly string[];
|
|
64
|
+
/** Faces from THIS directory that failed otherwise, plus the directory itself if unreadable. */
|
|
65
|
+
readonly failed: readonly FontFaceFailure[];
|
|
66
|
+
}
|
|
43
67
|
/** What {@link initFonts} did, so a caller that cares can assert on it. */
|
|
44
68
|
export interface InitFontsResult {
|
|
45
69
|
/**
|
|
@@ -50,8 +74,16 @@ export interface InitFontsResult {
|
|
|
50
74
|
* answering `true` because the platform's were. {@link sources} is the full list.
|
|
51
75
|
*/
|
|
52
76
|
readonly dir: string | undefined;
|
|
53
|
-
/**
|
|
54
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Every directory registered, runtime first, and what each one contributed.
|
|
79
|
+
*
|
|
80
|
+
* THE ONLY PLACE A FACE IS ATTRIBUTED TO A DIRECTORY. Read this, not the flat lists below,
|
|
81
|
+
* whenever the question is about ONE source — "did the face I staged arrive", "did the
|
|
82
|
+
* runtime bundle bring its own" — because the flat lists answer for all of them at once and
|
|
83
|
+
* their counts move whenever a published bundle changes what it carries. See
|
|
84
|
+
* {@link FontSourceOutcome}.
|
|
85
|
+
*/
|
|
86
|
+
readonly sources: readonly FontSourceOutcome[];
|
|
55
87
|
/**
|
|
56
88
|
* What the UI-font-size policy did, or `undefined` when it did not run.
|
|
57
89
|
*
|
|
@@ -59,11 +91,17 @@ export interface InitFontsResult {
|
|
|
59
91
|
* there, so the default leaves `gtk-font-name` alone entirely.
|
|
60
92
|
*/
|
|
61
93
|
readonly uiFont: UiFontPlan | undefined;
|
|
62
|
-
/** Faces now on the default font map. */
|
|
94
|
+
/** Faces now on the default font map, ACROSS EVERY {@link sources} entry. */
|
|
63
95
|
readonly registered: readonly string[];
|
|
64
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Faces the font map declined as unsupported, across every {@link sources} entry — see
|
|
98
|
+
* {@link isUnsupportedByFontMap}.
|
|
99
|
+
*/
|
|
65
100
|
readonly declined: readonly string[];
|
|
66
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* Faces that failed for any other reason, across every {@link sources} entry. Each was warned
|
|
103
|
+
* about; none threw.
|
|
104
|
+
*/
|
|
67
105
|
readonly failed: readonly FontFaceFailure[];
|
|
68
106
|
/**
|
|
69
107
|
* The family names the default font map GAINED across this call, sorted.
|
|
@@ -112,9 +150,12 @@ export interface InitFontsResult {
|
|
|
112
150
|
* Keyed on the ERROR rather than on `process.platform`, which is the difference between a
|
|
113
151
|
* capability test and a guess about who is asking. It costs no `gjsify.os` declaration (this
|
|
114
152
|
* package makes no OS decision, and ADR 0018's candidate set is derived from the code that reads
|
|
115
|
-
* the host), it stays right
|
|
116
|
-
*
|
|
117
|
-
*
|
|
153
|
+
* the host), and it stays right for any other map that declines. The OS name was never the thing
|
|
154
|
+
* being asked — which stopped being hypothetical: the backend is whichever one is selected rather
|
|
155
|
+
* than one per platform, and `@gjsify/node-gi`'s loader selects `PANGOCAIRO_BACKEND=fc` on the
|
|
156
|
+
* bundled windowing runtime (ADR 0038 § Amendment 3), so a darwin process on it reaches this
|
|
157
|
+
* arm's other side and REGISTERS the faces. A `process.platform` branch would have had to be
|
|
158
|
+
* found and reversed instead.
|
|
118
159
|
*/
|
|
119
160
|
export declare function isUnsupportedByFontMap(error: unknown): boolean;
|
|
120
161
|
/**
|
|
@@ -144,6 +185,14 @@ export declare function initFonts(options?: InitFontsOptions): InitFontsResult;
|
|
|
144
185
|
/** Everything {@link planUiFontPolicy} takes except what this module supplies itself. */
|
|
145
186
|
export interface ApplyUiFontPolicyOptions extends PlanUiFontOptions {
|
|
146
187
|
readonly policy: UiFontPolicy;
|
|
188
|
+
/**
|
|
189
|
+
* The settings object to act on. Defaults to `Gtk.Settings.get_default()`.
|
|
190
|
+
*
|
|
191
|
+
* A seam, not a knob: the null arm below is the one a real consumer hit, and on a host with a
|
|
192
|
+
* display there is no way to reach it through the default — `get_default()` never answers null
|
|
193
|
+
* once GTK is up. Passing `null` explicitly is how the test for it exists at all.
|
|
194
|
+
*/
|
|
195
|
+
readonly settings?: Gtk.Settings | null;
|
|
147
196
|
}
|
|
148
197
|
/**
|
|
149
198
|
* `gtk-font-name` as this process first found it — what the `system` policy restores.
|
|
@@ -165,10 +214,15 @@ export declare function uiFontBaseline(): string | undefined;
|
|
|
165
214
|
* captured before the first write, which is why switching `adwaita` → `system` at runtime
|
|
166
215
|
* returns the host's own `Segoe UI 9` rather than an approximation of it.
|
|
167
216
|
*
|
|
168
|
-
* `Gtk.Settings.get_default()` answers null before `Gtk.init()
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
217
|
+
* `Gtk.Settings.get_default()` answers null before `Gtk.init()`. That is not an error to throw
|
|
218
|
+
* over — a program may register its faces before it initialises the toolkit — but it is NOT the
|
|
219
|
+
* same answer as "the policy ran and had nothing to do", and reporting it as `unparsed` said it
|
|
220
|
+
* was. A consumer that called this at module scope got a plan indistinguishable from a host that
|
|
221
|
+
* needed no correction, so its setting silently did nothing: measured in Learn6502 0.8.0, where
|
|
222
|
+
* `ui-font: policy=size -> unparsed (unchanged)` was printed on macOS and on Windows — the one
|
|
223
|
+
* platform whose 16 px against GNOME's 19 is the reason the policy exists. It now reports
|
|
224
|
+
* `uninitialised` and says so once, because a caller that is too early can only find out from
|
|
225
|
+
* here.
|
|
172
226
|
*/
|
|
173
227
|
export declare function applyUiFontPolicy(request: UiFontPolicy | ApplyUiFontPolicyOptions): UiFontPlan;
|
|
174
228
|
/**
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import type Gtk from '@girs/gtk-4.0';
|
|
2
|
+
import type { AriaSlot } from '../types.js';
|
|
3
|
+
import type { GtkAccessibleAutocompleteNick, GtkAccessibleInvalidStateNick, GtkAccessibleSortNick, GtkAccessibleTristateNick, GtkOrientationNick } from './props.js';
|
|
4
|
+
/**
|
|
5
|
+
* ARIA name -> the table it belongs to and the kind of value GTK collects for it.
|
|
6
|
+
*
|
|
7
|
+
* Keyed by the NAME alone: across the three tables of this GTK the names are distinct,
|
|
8
|
+
* and `girs-vocabulary.mts` fails the generation rather than emit a map that silently
|
|
9
|
+
* kept one of two. The table name is what the runtime derives its GTK call from.
|
|
10
|
+
*/
|
|
11
|
+
export declare const ARIA_SLOTS: Readonly<Record<string, AriaSlot>>;
|
|
12
|
+
/**
|
|
13
|
+
* What `accessibility={{ … }}` accepts.
|
|
14
|
+
*
|
|
15
|
+
* ONE OBJECT PROP, NOT 53 FLAT ONES, and the decision is measured rather than
|
|
16
|
+
* stylistic. Measured in this repo's own type surface: TypeScript exempts every
|
|
17
|
+
* hyphen-containing JSX attribute from excess-property checking, so a flat `aria-labell`
|
|
18
|
+
* would be accepted in silence, while a key inside a FRESH object literal is checked —
|
|
19
|
+
* `accessibility={{ labell: 'x' }}` is TS2561, naming the key and suggesting `label`. A grouped
|
|
20
|
+
* prop is also the spelling the other surface over this same vocabulary has: a `.blp` author
|
|
21
|
+
* writes `accessibility { label: "…"; }`, and ADR 0034 exists so two surfaces over one
|
|
22
|
+
* vocabulary do not invent two spellings for one name.
|
|
23
|
+
*
|
|
24
|
+
* KEBAB, THE SPELLING GTK ITSELF USES. A second camelCase spelling would double the
|
|
25
|
+
* surface for nothing: unlike a JSX attribute, a quoted key in an object literal IS
|
|
26
|
+
* excess-property checked, so the one spelling already catches the typo.
|
|
27
|
+
*
|
|
28
|
+
* `null` clears a slot, as it does for every property on this host — `gtk_accessible_reset_*`
|
|
29
|
+
* is what GTK offers and what the host calls.
|
|
30
|
+
*/
|
|
31
|
+
export interface AccessibilityAttributes {
|
|
32
|
+
/**
|
|
33
|
+
* `GtkAccessibleRelation.active-descendant` — a REFERENCE to another widget, and this host has no way
|
|
34
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
35
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
36
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
37
|
+
*/
|
|
38
|
+
'active-descendant'?: never;
|
|
39
|
+
/** `GtkAccessibleProperty.autocomplete` — a GtkAccessibleAutocomplete, which GTK collects as an int: the nick or the constant. */
|
|
40
|
+
autocomplete?: GtkAccessibleAutocompleteNick | Gtk.AccessibleAutocomplete | null;
|
|
41
|
+
/** `GtkAccessibleState.busy` — GTK collects it as a boolean. */
|
|
42
|
+
busy?: boolean | null;
|
|
43
|
+
/** `GtkAccessibleState.checked` — a GtkAccessibleTristate, which GTK collects as an int: the nick or the constant. */
|
|
44
|
+
checked?: GtkAccessibleTristateNick | Gtk.AccessibleTristate | null;
|
|
45
|
+
/** `GtkAccessibleRelation.col-count` — GTK collects it as an integer. */
|
|
46
|
+
'col-count'?: number | null;
|
|
47
|
+
/** `GtkAccessibleRelation.col-index` — GTK collects it as an integer. */
|
|
48
|
+
'col-index'?: number | null;
|
|
49
|
+
/** `GtkAccessibleRelation.col-index-text` — GTK collects it as a string. */
|
|
50
|
+
'col-index-text'?: string | null;
|
|
51
|
+
/** `GtkAccessibleRelation.col-span` — GTK collects it as an integer. */
|
|
52
|
+
'col-span'?: number | null;
|
|
53
|
+
/**
|
|
54
|
+
* `GtkAccessibleRelation.controlled-by` — a REFERENCE to another widget, and this host has no way
|
|
55
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
56
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
57
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
58
|
+
*/
|
|
59
|
+
'controlled-by'?: never;
|
|
60
|
+
/**
|
|
61
|
+
* `GtkAccessibleRelation.controls` — a REFERENCE to another widget, and this host has no way
|
|
62
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
63
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
64
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
65
|
+
*/
|
|
66
|
+
controls?: never;
|
|
67
|
+
/**
|
|
68
|
+
* `GtkAccessibleRelation.described-by` — a REFERENCE to another widget, and this host has no way
|
|
69
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
70
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
71
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
72
|
+
*/
|
|
73
|
+
'described-by'?: never;
|
|
74
|
+
/** `GtkAccessibleProperty.description` — GTK collects it as a string. */
|
|
75
|
+
description?: string | null;
|
|
76
|
+
/**
|
|
77
|
+
* `GtkAccessibleRelation.description-for` — a REFERENCE to another widget, and this host has no way
|
|
78
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
79
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
80
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
81
|
+
*/
|
|
82
|
+
'description-for'?: never;
|
|
83
|
+
/**
|
|
84
|
+
* `GtkAccessibleRelation.details` — a REFERENCE to another widget, and this host has no way
|
|
85
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
86
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
87
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
88
|
+
*/
|
|
89
|
+
details?: never;
|
|
90
|
+
/**
|
|
91
|
+
* `GtkAccessibleRelation.details-for` — a REFERENCE to another widget, and this host has no way
|
|
92
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
93
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
94
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
95
|
+
*/
|
|
96
|
+
'details-for'?: never;
|
|
97
|
+
/** `GtkAccessibleState.disabled` — GTK collects it as a boolean. */
|
|
98
|
+
disabled?: boolean | null;
|
|
99
|
+
/**
|
|
100
|
+
* `GtkAccessibleRelation.error-message` — a REFERENCE to another widget, and this host has no way
|
|
101
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
102
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
103
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
104
|
+
*/
|
|
105
|
+
'error-message'?: never;
|
|
106
|
+
/**
|
|
107
|
+
* `GtkAccessibleRelation.error-message-for` — a REFERENCE to another widget, and this host has no way
|
|
108
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
109
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
110
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
111
|
+
*/
|
|
112
|
+
'error-message-for'?: never;
|
|
113
|
+
/** `GtkAccessibleState.expanded` — GTK collects it as a boolean. */
|
|
114
|
+
expanded?: boolean | null;
|
|
115
|
+
/**
|
|
116
|
+
* `GtkAccessibleRelation.flow-from` — a REFERENCE to another widget, and this host has no way
|
|
117
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
118
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
119
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
120
|
+
*/
|
|
121
|
+
'flow-from'?: never;
|
|
122
|
+
/**
|
|
123
|
+
* `GtkAccessibleRelation.flow-to` — a REFERENCE to another widget, and this host has no way
|
|
124
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
125
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
126
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
127
|
+
*/
|
|
128
|
+
'flow-to'?: never;
|
|
129
|
+
/** `GtkAccessibleProperty.has-popup` — GTK collects it as a boolean. */
|
|
130
|
+
'has-popup'?: boolean | null;
|
|
131
|
+
/** `GtkAccessibleProperty.help-text` — GTK collects it as a string. */
|
|
132
|
+
'help-text'?: string | null;
|
|
133
|
+
/** `GtkAccessibleState.hidden` — GTK collects it as a boolean. */
|
|
134
|
+
hidden?: boolean | null;
|
|
135
|
+
/** `GtkAccessibleState.invalid` — a GtkAccessibleInvalidState, which GTK collects as an int: the nick or the constant. */
|
|
136
|
+
invalid?: GtkAccessibleInvalidStateNick | Gtk.AccessibleInvalidState | null;
|
|
137
|
+
/** `GtkAccessibleProperty.key-shortcuts` — GTK collects it as a string. */
|
|
138
|
+
'key-shortcuts'?: string | null;
|
|
139
|
+
/** `GtkAccessibleProperty.label` — GTK collects it as a string. */
|
|
140
|
+
label?: string | null;
|
|
141
|
+
/**
|
|
142
|
+
* `GtkAccessibleRelation.label-for` — a REFERENCE to another widget, and this host has no way
|
|
143
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
144
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
145
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
146
|
+
*/
|
|
147
|
+
'label-for'?: never;
|
|
148
|
+
/**
|
|
149
|
+
* `GtkAccessibleRelation.labelled-by` — a REFERENCE to another widget, and this host has no way
|
|
150
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
151
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
152
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
153
|
+
*/
|
|
154
|
+
'labelled-by'?: never;
|
|
155
|
+
/** `GtkAccessibleProperty.level` — GTK collects it as an integer. */
|
|
156
|
+
level?: number | null;
|
|
157
|
+
/** `GtkAccessibleProperty.modal` — GTK collects it as a boolean. */
|
|
158
|
+
modal?: boolean | null;
|
|
159
|
+
/** `GtkAccessibleProperty.multi-line` — GTK collects it as a boolean. */
|
|
160
|
+
'multi-line'?: boolean | null;
|
|
161
|
+
/** `GtkAccessibleProperty.multi-selectable` — GTK collects it as a boolean. */
|
|
162
|
+
'multi-selectable'?: boolean | null;
|
|
163
|
+
/** `GtkAccessibleProperty.orientation` — a GtkOrientation, which GTK collects as an int: the nick or the constant. */
|
|
164
|
+
orientation?: GtkOrientationNick | Gtk.Orientation | null;
|
|
165
|
+
/**
|
|
166
|
+
* `GtkAccessibleRelation.owns` — a REFERENCE to another widget, and this host has no way
|
|
167
|
+
* to name one. There is no `id` prop and `ref` is resolved by the framework after the
|
|
168
|
+
* props are applied, so the value would be `null` on the render that authors it. Declared
|
|
169
|
+
* and unwritable rather than absent: GTK has this name, the gap is ours.
|
|
170
|
+
*/
|
|
171
|
+
owns?: never;
|
|
172
|
+
/** `GtkAccessibleProperty.placeholder` — GTK collects it as a string. */
|
|
173
|
+
placeholder?: string | null;
|
|
174
|
+
/** `GtkAccessibleRelation.pos-in-set` — GTK collects it as an integer. */
|
|
175
|
+
'pos-in-set'?: number | null;
|
|
176
|
+
/** `GtkAccessibleState.pressed` — a GtkAccessibleTristate, which GTK collects as an int: the nick or the constant. */
|
|
177
|
+
pressed?: GtkAccessibleTristateNick | Gtk.AccessibleTristate | null;
|
|
178
|
+
/** `GtkAccessibleProperty.read-only` — GTK collects it as a boolean. */
|
|
179
|
+
'read-only'?: boolean | null;
|
|
180
|
+
/** `GtkAccessibleProperty.required` — GTK collects it as a boolean. */
|
|
181
|
+
required?: boolean | null;
|
|
182
|
+
/** `GtkAccessibleProperty.role-description` — GTK collects it as a string. */
|
|
183
|
+
'role-description'?: string | null;
|
|
184
|
+
/** `GtkAccessibleRelation.row-count` — GTK collects it as an integer. */
|
|
185
|
+
'row-count'?: number | null;
|
|
186
|
+
/** `GtkAccessibleRelation.row-index` — GTK collects it as an integer. */
|
|
187
|
+
'row-index'?: number | null;
|
|
188
|
+
/** `GtkAccessibleRelation.row-index-text` — GTK collects it as a string. */
|
|
189
|
+
'row-index-text'?: string | null;
|
|
190
|
+
/** `GtkAccessibleRelation.row-span` — GTK collects it as an integer. */
|
|
191
|
+
'row-span'?: number | null;
|
|
192
|
+
/** `GtkAccessibleState.selected` — GTK collects it as a boolean. */
|
|
193
|
+
selected?: boolean | null;
|
|
194
|
+
/** `GtkAccessibleRelation.set-size` — GTK collects it as an integer. */
|
|
195
|
+
'set-size'?: number | null;
|
|
196
|
+
/** `GtkAccessibleProperty.sort` — a GtkAccessibleSort, which GTK collects as an int: the nick or the constant. */
|
|
197
|
+
sort?: GtkAccessibleSortNick | Gtk.AccessibleSort | null;
|
|
198
|
+
/** `GtkAccessibleProperty.value-max` — GTK collects it as a double. */
|
|
199
|
+
'value-max'?: number | null;
|
|
200
|
+
/** `GtkAccessibleProperty.value-min` — GTK collects it as a double. */
|
|
201
|
+
'value-min'?: number | null;
|
|
202
|
+
/** `GtkAccessibleProperty.value-now` — GTK collects it as a double. */
|
|
203
|
+
'value-now'?: number | null;
|
|
204
|
+
/** `GtkAccessibleProperty.value-text` — GTK collects it as a string. */
|
|
205
|
+
'value-text'?: string | null;
|
|
206
|
+
/** `GtkAccessibleState.visited` — GTK collects it as a boolean. */
|
|
207
|
+
visited?: boolean | null;
|
|
208
|
+
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* A value, not only a header comment: `generated.spec.ts` compares it with the
|
|
6
6
|
* running library to decide whether a disagreement is a defect or a version gap.
|
|
7
7
|
*/
|
|
8
|
-
export declare const VALUES_PROVENANCE = "Adw-1/1.9.3 Gtk-4.0/4.22.4 Pango-1.0/1.57.1";
|
|
8
|
+
export declare const VALUES_PROVENANCE = "Adw-1/1.9.3 Gio-2.0 Gtk-4.0/4.22.4 Pango-1.0/1.57.1";
|
|
9
9
|
/** `<enum GType>.<nick>` -> the integer the library registers for it. */
|
|
10
10
|
export declare const ENUM_VALUES: Readonly<Record<string, number>>;
|
|
11
11
|
/**
|