@gtkx/ffi 0.18.5 → 0.18.6

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.
Files changed (77) hide show
  1. package/dist/generated/adw/constants.d.ts +2 -2
  2. package/dist/generated/adw/constants.js +2 -2
  3. package/dist/generated/gdkwayland/index.d.ts +9 -0
  4. package/dist/generated/gdkwayland/index.d.ts.map +1 -0
  5. package/dist/generated/gdkwayland/index.js +9 -0
  6. package/dist/generated/gdkwayland/index.js.map +1 -0
  7. package/dist/generated/gdkwayland/wayland-device.d.ts +29 -0
  8. package/dist/generated/gdkwayland/wayland-device.d.ts.map +1 -0
  9. package/dist/generated/gdkwayland/wayland-device.js +81 -0
  10. package/dist/generated/gdkwayland/wayland-device.js.map +1 -0
  11. package/dist/generated/gdkwayland/wayland-display.d.ts +44 -0
  12. package/dist/generated/gdkwayland/wayland-display.d.ts.map +1 -0
  13. package/dist/generated/gdkwayland/wayland-display.js +161 -0
  14. package/dist/generated/gdkwayland/wayland-display.js.map +1 -0
  15. package/dist/generated/gdkwayland/wayland-gl-context.d.ts +8 -0
  16. package/dist/generated/gdkwayland/wayland-gl-context.d.ts.map +1 -0
  17. package/dist/generated/gdkwayland/wayland-gl-context.js +33 -0
  18. package/dist/generated/gdkwayland/wayland-gl-context.js.map +1 -0
  19. package/dist/generated/gdkwayland/wayland-monitor.d.ts +14 -0
  20. package/dist/generated/gdkwayland/wayland-monitor.d.ts.map +1 -0
  21. package/dist/generated/gdkwayland/wayland-monitor.js +39 -0
  22. package/dist/generated/gdkwayland/wayland-monitor.js.map +1 -0
  23. package/dist/generated/gdkwayland/wayland-popup.d.ts +49 -0
  24. package/dist/generated/gdkwayland/wayland-popup.d.ts.map +1 -0
  25. package/dist/generated/gdkwayland/wayland-popup.js +199 -0
  26. package/dist/generated/gdkwayland/wayland-popup.js.map +1 -0
  27. package/dist/generated/gdkwayland/wayland-seat.d.ts +14 -0
  28. package/dist/generated/gdkwayland/wayland-seat.d.ts.map +1 -0
  29. package/dist/generated/gdkwayland/wayland-seat.js +39 -0
  30. package/dist/generated/gdkwayland/wayland-seat.js.map +1 -0
  31. package/dist/generated/gdkwayland/wayland-surface.d.ts +16 -0
  32. package/dist/generated/gdkwayland/wayland-surface.d.ts.map +1 -0
  33. package/dist/generated/gdkwayland/wayland-surface.js +53 -0
  34. package/dist/generated/gdkwayland/wayland-surface.js.map +1 -0
  35. package/dist/generated/gdkwayland/wayland-toplevel.d.ts +252 -0
  36. package/dist/generated/gdkwayland/wayland-toplevel.d.ts.map +1 -0
  37. package/dist/generated/gdkwayland/wayland-toplevel.js +1022 -0
  38. package/dist/generated/gdkwayland/wayland-toplevel.js.map +1 -0
  39. package/dist/generated/gst/constants.d.ts +1 -1
  40. package/dist/generated/gst/constants.d.ts.map +1 -1
  41. package/dist/generated/gst/constants.js +1 -1
  42. package/dist/generated/gst/constants.js.map +1 -1
  43. package/dist/generated/gtk4layershell/functions.d.ts +18 -7
  44. package/dist/generated/gtk4layershell/functions.d.ts.map +1 -1
  45. package/dist/generated/gtk4layershell/functions.js +50 -5
  46. package/dist/generated/gtk4layershell/functions.js.map +1 -1
  47. package/dist/generated/gtk4sessionlock/functions.d.ts +3 -0
  48. package/dist/generated/gtk4sessionlock/functions.d.ts.map +1 -0
  49. package/dist/generated/gtk4sessionlock/functions.js +8 -0
  50. package/dist/generated/gtk4sessionlock/functions.js.map +1 -0
  51. package/dist/generated/gtk4sessionlock/index.d.ts +3 -0
  52. package/dist/generated/gtk4sessionlock/index.d.ts.map +1 -0
  53. package/dist/generated/gtk4sessionlock/index.js +3 -0
  54. package/dist/generated/gtk4sessionlock/index.js.map +1 -0
  55. package/dist/generated/gtk4sessionlock/instance.d.ts +36 -0
  56. package/dist/generated/gtk4sessionlock/instance.d.ts.map +1 -0
  57. package/dist/generated/gtk4sessionlock/instance.js +215 -0
  58. package/dist/generated/gtk4sessionlock/instance.js.map +1 -0
  59. package/dist/generated/vte/constants.d.ts +1 -1
  60. package/dist/generated/vte/constants.js +1 -1
  61. package/package.json +3 -3
  62. package/src/generated/adw/constants.ts +2 -2
  63. package/src/generated/gdkwayland/index.ts +8 -0
  64. package/src/generated/gdkwayland/wayland-device.ts +99 -0
  65. package/src/generated/gdkwayland/wayland-display.ts +197 -0
  66. package/src/generated/gdkwayland/wayland-gl-context.ts +39 -0
  67. package/src/generated/gdkwayland/wayland-monitor.ts +45 -0
  68. package/src/generated/gdkwayland/wayland-popup.ts +247 -0
  69. package/src/generated/gdkwayland/wayland-seat.ts +45 -0
  70. package/src/generated/gdkwayland/wayland-surface.ts +65 -0
  71. package/src/generated/gdkwayland/wayland-toplevel.ts +1260 -0
  72. package/src/generated/gst/constants.ts +1 -1
  73. package/src/generated/gtk4layershell/functions.ts +62 -8
  74. package/src/generated/gtk4sessionlock/functions.ts +8 -0
  75. package/src/generated/gtk4sessionlock/index.ts +2 -0
  76. package/src/generated/gtk4sessionlock/instance.ts +271 -0
  77. package/src/generated/vte/constants.ts +1 -1
@@ -0,0 +1,1260 @@
1
+ import { isInstantiating, setInstantiating } from "../../lifecycle.js";
2
+ import { NativeHandle } from "../../object.js";
3
+ import { call } from "../../native.js";
4
+ import { getNativeObject, registerNativeClass, registerNativeObject } from "../../registry.js";
5
+ import { WaylandSurface } from "./wayland-surface.js";
6
+ import * as GObject from "../gobject/index.js";
7
+ import * as Gdk from "../gdk/index.js";
8
+
9
+ /**
10
+ * The Wayland implementation of `GdkToplevel`.
11
+ *
12
+ * Beyond the {@link Gdk.Toplevel} API, the Wayland implementation
13
+ * has API to set up cross-process parent-child relationships between
14
+ * surfaces with {@link GdkWayland.WaylandToplevel.export_handle} and
15
+ * {@link GdkWayland.WaylandToplevel.set_transient_for_exported}.
16
+ */
17
+ export class WaylandToplevel extends WaylandSurface {
18
+ static override readonly glibTypeName: string = "GdkWaylandToplevel";
19
+ static override readonly objectType = "gobject" as const;
20
+
21
+ constructor() {
22
+ if (!isInstantiating) {
23
+ setInstantiating(true);
24
+ // @ts-ignore
25
+ super();
26
+ setInstantiating(false);
27
+ const gtype = call("libgtk-4.so.1", "gdk_wayland_toplevel_get_type", [], {
28
+ type: "int",
29
+ size: 64,
30
+ unsigned: true,
31
+ });
32
+ this.handle = call(
33
+ "libgobject-2.0.so.0",
34
+ "g_object_new",
35
+ [
36
+ { type: { type: "int", size: 64, unsigned: true }, value: gtype, optional: false },
37
+ { type: { type: "null" }, value: null, optional: false },
38
+ ],
39
+ { type: "gobject", ownership: "full" },
40
+ ) as NativeHandle;
41
+ registerNativeObject(this);
42
+ } else {
43
+ // @ts-ignore
44
+ super();
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Destroy a handle that was obtained with gdk_wayland_toplevel_export_handle().
50
+ *
51
+ * Note that this API depends on an unstable Wayland protocol,
52
+ * and thus may require changes in the future.
53
+ */
54
+ dropExportedHandle(handle: string) {
55
+ call(
56
+ "libgtk-4.so.1",
57
+ "gdk_wayland_toplevel_drop_exported_handle",
58
+ [
59
+ {
60
+ type: {
61
+ type: "gobject",
62
+ ownership: "borrowed",
63
+ },
64
+ value: this.handle,
65
+ },
66
+ {
67
+ type: {
68
+ type: "string",
69
+ ownership: "borrowed",
70
+ },
71
+ value: handle,
72
+ },
73
+ ],
74
+ {
75
+ type: "undefined",
76
+ },
77
+ );
78
+ }
79
+
80
+ /** Sets the application id on a `GdkToplevel`. */
81
+ setApplicationId(applicationId: string) {
82
+ call(
83
+ "libgtk-4.so.1",
84
+ "gdk_wayland_toplevel_set_application_id",
85
+ [
86
+ {
87
+ type: {
88
+ type: "gobject",
89
+ ownership: "borrowed",
90
+ },
91
+ value: this.handle,
92
+ },
93
+ {
94
+ type: {
95
+ type: "string",
96
+ ownership: "borrowed",
97
+ },
98
+ value: applicationId,
99
+ },
100
+ ],
101
+ {
102
+ type: "undefined",
103
+ },
104
+ );
105
+ }
106
+
107
+ /**
108
+ * Marks `toplevel` as transient for the surface to which the given
109
+ * `parent_handle_str` refers.
110
+ *
111
+ * Typically, the handle will originate from a
112
+ * {@link GdkWayland.WaylandToplevel.export_handle} call in another process.
113
+ *
114
+ * Note that this API depends on an unstable Wayland protocol,
115
+ * and thus may require changes in the future.
116
+ */
117
+ setTransientForExported(parentHandleStr: string): boolean {
118
+ return call(
119
+ "libgtk-4.so.1",
120
+ "gdk_wayland_toplevel_set_transient_for_exported",
121
+ [
122
+ {
123
+ type: {
124
+ type: "gobject",
125
+ ownership: "borrowed",
126
+ },
127
+ value: this.handle,
128
+ },
129
+ {
130
+ type: {
131
+ type: "string",
132
+ ownership: "borrowed",
133
+ },
134
+ value: parentHandleStr,
135
+ },
136
+ ],
137
+ {
138
+ type: "boolean",
139
+ },
140
+ ) as boolean;
141
+ }
142
+
143
+ /**
144
+ * Destroys the handle that was obtained with
145
+ * gdk_wayland_toplevel_export_handle().
146
+ *
147
+ * It is an error to call this function on a surface that
148
+ * does not have a handle.
149
+ *
150
+ * Since 4.12, this function does nothing. Use
151
+ * {@link GdkWayland.WaylandToplevel.drop_exported_handle} instead to drop a
152
+ * handle that was obtained with {@link GdkWayland.WaylandToplevel.export_handle}.
153
+ *
154
+ * Note that this API depends on an unstable Wayland protocol,
155
+ * and thus may require changes in the future.
156
+ */
157
+ unexportHandle() {
158
+ call(
159
+ "libgtk-4.so.1",
160
+ "gdk_wayland_toplevel_unexport_handle",
161
+ [
162
+ {
163
+ type: {
164
+ type: "gobject",
165
+ ownership: "borrowed",
166
+ },
167
+ value: this.handle,
168
+ },
169
+ ],
170
+ {
171
+ type: "undefined",
172
+ },
173
+ );
174
+ }
175
+
176
+ /**
177
+ * Begins an interactive move operation.
178
+ *
179
+ * You might use this function to implement draggable titlebars.
180
+ */
181
+ beginMove(device: Gdk.Device, button: number, x: number, y: number, timestamp: number) {
182
+ call(
183
+ "libgtk-4.so.1",
184
+ "gdk_toplevel_begin_move",
185
+ [
186
+ {
187
+ type: {
188
+ type: "gobject",
189
+ ownership: "borrowed",
190
+ },
191
+ value: this.handle,
192
+ },
193
+ {
194
+ type: {
195
+ type: "gobject",
196
+ ownership: "borrowed",
197
+ },
198
+ value: device.handle,
199
+ },
200
+ {
201
+ type: {
202
+ type: "int",
203
+ size: 32,
204
+ unsigned: false,
205
+ },
206
+ value: button,
207
+ },
208
+ {
209
+ type: {
210
+ type: "float",
211
+ size: 64,
212
+ },
213
+ value: x,
214
+ },
215
+ {
216
+ type: {
217
+ type: "float",
218
+ size: 64,
219
+ },
220
+ value: y,
221
+ },
222
+ {
223
+ type: {
224
+ type: "int",
225
+ size: 32,
226
+ unsigned: true,
227
+ },
228
+ value: timestamp,
229
+ },
230
+ ],
231
+ {
232
+ type: "undefined",
233
+ },
234
+ );
235
+ }
236
+
237
+ /**
238
+ * Begins an interactive resize operation.
239
+ *
240
+ * You might use this function to implement a “window resize grip.”
241
+ */
242
+ beginResize(
243
+ edge: Gdk.SurfaceEdge,
244
+ button: number,
245
+ x: number,
246
+ y: number,
247
+ timestamp: number,
248
+ device?: Gdk.Device | null,
249
+ ) {
250
+ call(
251
+ "libgtk-4.so.1",
252
+ "gdk_toplevel_begin_resize",
253
+ [
254
+ {
255
+ type: {
256
+ type: "gobject",
257
+ ownership: "borrowed",
258
+ },
259
+ value: this.handle,
260
+ },
261
+ {
262
+ type: {
263
+ type: "int",
264
+ size: 32,
265
+ unsigned: false,
266
+ library: "libgtk-4.so.1",
267
+ getTypeFn: "gdk_surface_edge_get_type",
268
+ },
269
+ value: edge,
270
+ },
271
+ {
272
+ type: {
273
+ type: "gobject",
274
+ ownership: "borrowed",
275
+ },
276
+ value: device?.handle,
277
+ optional: true,
278
+ },
279
+ {
280
+ type: {
281
+ type: "int",
282
+ size: 32,
283
+ unsigned: false,
284
+ },
285
+ value: button,
286
+ },
287
+ {
288
+ type: {
289
+ type: "float",
290
+ size: 64,
291
+ },
292
+ value: x,
293
+ },
294
+ {
295
+ type: {
296
+ type: "float",
297
+ size: 64,
298
+ },
299
+ value: y,
300
+ },
301
+ {
302
+ type: {
303
+ type: "int",
304
+ size: 32,
305
+ unsigned: true,
306
+ },
307
+ value: timestamp,
308
+ },
309
+ ],
310
+ {
311
+ type: "undefined",
312
+ },
313
+ );
314
+ }
315
+
316
+ /**
317
+ * Sets keyboard focus to `surface`.
318
+ *
319
+ * In most cases, gtk_window_present_with_time()
320
+ * should be used on a GtkWindow, rather than
321
+ * calling this function.
322
+ */
323
+ focus(timestamp: number) {
324
+ call(
325
+ "libgtk-4.so.1",
326
+ "gdk_toplevel_focus",
327
+ [
328
+ {
329
+ type: {
330
+ type: "gobject",
331
+ ownership: "borrowed",
332
+ },
333
+ value: this.handle,
334
+ },
335
+ {
336
+ type: {
337
+ type: "int",
338
+ size: 32,
339
+ unsigned: true,
340
+ },
341
+ value: timestamp,
342
+ },
343
+ ],
344
+ {
345
+ type: "undefined",
346
+ },
347
+ );
348
+ }
349
+
350
+ /** The capabilities that are available for this toplevel. */
351
+ getCapabilities(): Gdk.ToplevelCapabilities {
352
+ return call(
353
+ "libgtk-4.so.1",
354
+ "gdk_toplevel_get_capabilities",
355
+ [
356
+ {
357
+ type: {
358
+ type: "gobject",
359
+ ownership: "borrowed",
360
+ },
361
+ value: this.handle,
362
+ },
363
+ ],
364
+ {
365
+ type: "int",
366
+ size: 32,
367
+ unsigned: true,
368
+ library: "libgtk-4.so.1",
369
+ getTypeFn: "gdk_toplevel_capabilities_get_type",
370
+ },
371
+ ) as Gdk.ToplevelCapabilities;
372
+ }
373
+
374
+ /**
375
+ * Returns the gravity that is used when changing the toplevel
376
+ * size programmatically.
377
+ */
378
+ getGravity(): Gdk.Gravity {
379
+ return call(
380
+ "libgtk-4.so.1",
381
+ "gdk_toplevel_get_gravity",
382
+ [
383
+ {
384
+ type: {
385
+ type: "gobject",
386
+ ownership: "borrowed",
387
+ },
388
+ value: this.handle,
389
+ },
390
+ ],
391
+ {
392
+ type: "int",
393
+ size: 32,
394
+ unsigned: false,
395
+ library: "libgtk-4.so.1",
396
+ getTypeFn: "gdk_gravity_get_type",
397
+ },
398
+ ) as Gdk.Gravity;
399
+ }
400
+
401
+ /**
402
+ * Gets the bitwise or of the currently active surface state flags,
403
+ * from the `GdkToplevelState` enumeration.
404
+ */
405
+ getState(): Gdk.ToplevelState {
406
+ return call(
407
+ "libgtk-4.so.1",
408
+ "gdk_toplevel_get_state",
409
+ [
410
+ {
411
+ type: {
412
+ type: "gobject",
413
+ ownership: "borrowed",
414
+ },
415
+ value: this.handle,
416
+ },
417
+ ],
418
+ {
419
+ type: "int",
420
+ size: 32,
421
+ unsigned: true,
422
+ library: "libgtk-4.so.1",
423
+ getTypeFn: "gdk_toplevel_state_get_type",
424
+ },
425
+ ) as Gdk.ToplevelState;
426
+ }
427
+
428
+ /**
429
+ * Requests that the `toplevel` inhibit the system shortcuts.
430
+ *
431
+ * This is asking the desktop environment/windowing system to let all
432
+ * keyboard events reach the surface, as long as it is focused, instead
433
+ * of triggering system actions.
434
+ *
435
+ * If granted, the rerouting remains active until the default shortcuts
436
+ * processing is restored with {@link Gdk.Toplevel.restore_system_shortcuts},
437
+ * or the request is revoked by the desktop environment, windowing system
438
+ * or the user.
439
+ *
440
+ * A typical use case for this API is remote desktop or virtual machine
441
+ * viewers which need to inhibit the default system keyboard shortcuts
442
+ * so that the remote session or virtual host gets those instead of the
443
+ * local environment.
444
+ *
445
+ * The windowing system or desktop environment may ask the user to grant
446
+ * or deny the request or even choose to ignore the request entirely.
447
+ *
448
+ * The caller can be notified whenever the request is granted or revoked
449
+ * by listening to the {@link Gdk.Toplevel.shortcuts-inhibited} property.
450
+ */
451
+ inhibitSystemShortcuts(event?: Gdk.Event | null) {
452
+ call(
453
+ "libgtk-4.so.1",
454
+ "gdk_toplevel_inhibit_system_shortcuts",
455
+ [
456
+ {
457
+ type: {
458
+ type: "gobject",
459
+ ownership: "borrowed",
460
+ },
461
+ value: this.handle,
462
+ },
463
+ {
464
+ type: {
465
+ type: "fundamental",
466
+ ownership: "borrowed",
467
+ library: "libgtk-4.so.1",
468
+ refFn: "gdk_event_ref",
469
+ unrefFn: "gdk_event_unref",
470
+ },
471
+ value: event?.handle,
472
+ optional: true,
473
+ },
474
+ ],
475
+ {
476
+ type: "undefined",
477
+ },
478
+ );
479
+ }
480
+
481
+ /**
482
+ * Asks to lower the `toplevel` below other windows.
483
+ *
484
+ * The windowing system may choose to ignore the request.
485
+ */
486
+ lower(): boolean {
487
+ return call(
488
+ "libgtk-4.so.1",
489
+ "gdk_toplevel_lower",
490
+ [
491
+ {
492
+ type: {
493
+ type: "gobject",
494
+ ownership: "borrowed",
495
+ },
496
+ value: this.handle,
497
+ },
498
+ ],
499
+ {
500
+ type: "boolean",
501
+ },
502
+ ) as boolean;
503
+ }
504
+
505
+ /**
506
+ * Asks to minimize the `toplevel`.
507
+ *
508
+ * The windowing system may choose to ignore the request.
509
+ */
510
+ minimize(): boolean {
511
+ return call(
512
+ "libgtk-4.so.1",
513
+ "gdk_toplevel_minimize",
514
+ [
515
+ {
516
+ type: {
517
+ type: "gobject",
518
+ ownership: "borrowed",
519
+ },
520
+ value: this.handle,
521
+ },
522
+ ],
523
+ {
524
+ type: "boolean",
525
+ },
526
+ ) as boolean;
527
+ }
528
+
529
+ /**
530
+ * Present `toplevel` after having processed the `GdkToplevelLayout` rules.
531
+ *
532
+ * If the toplevel was previously not showing, it will be showed,
533
+ * otherwise it will change layout according to `layout`.
534
+ *
535
+ * GDK may emit the {@link Gdk.Toplevel.:compute-size} signal to let
536
+ * the user of this toplevel compute the preferred size of the toplevel
537
+ * surface.
538
+ *
539
+ * Presenting is asynchronous and the specified layout parameters are not
540
+ * guaranteed to be respected.
541
+ */
542
+ present(layout: Gdk.ToplevelLayout) {
543
+ call(
544
+ "libgtk-4.so.1",
545
+ "gdk_toplevel_present",
546
+ [
547
+ {
548
+ type: {
549
+ type: "gobject",
550
+ ownership: "borrowed",
551
+ },
552
+ value: this.handle,
553
+ },
554
+ {
555
+ type: {
556
+ type: "boxed",
557
+ ownership: "borrowed",
558
+ innerType: "GdkToplevelLayout",
559
+ library: "libgtk-4.so.1",
560
+ getTypeFn: "gdk_toplevel_layout_get_type",
561
+ },
562
+ value: layout.handle,
563
+ },
564
+ ],
565
+ {
566
+ type: "undefined",
567
+ },
568
+ );
569
+ }
570
+
571
+ /**
572
+ * Restore default system keyboard shortcuts which were previously
573
+ * inhibited.
574
+ *
575
+ * This undoes the effect of {@link Gdk.Toplevel.inhibit_system_shortcuts}.
576
+ */
577
+ restoreSystemShortcuts() {
578
+ call(
579
+ "libgtk-4.so.1",
580
+ "gdk_toplevel_restore_system_shortcuts",
581
+ [
582
+ {
583
+ type: {
584
+ type: "gobject",
585
+ ownership: "borrowed",
586
+ },
587
+ value: this.handle,
588
+ },
589
+ ],
590
+ {
591
+ type: "undefined",
592
+ },
593
+ );
594
+ }
595
+
596
+ /**
597
+ * Sets the toplevel to be decorated.
598
+ *
599
+ * Setting `decorated` to %FALSE hints the desktop environment
600
+ * that the surface has its own, client-side decorations and
601
+ * does not need to have window decorations added.
602
+ */
603
+ setDecorated(decorated: boolean) {
604
+ call(
605
+ "libgtk-4.so.1",
606
+ "gdk_toplevel_set_decorated",
607
+ [
608
+ {
609
+ type: {
610
+ type: "gobject",
611
+ ownership: "borrowed",
612
+ },
613
+ value: this.handle,
614
+ },
615
+ {
616
+ type: {
617
+ type: "boolean",
618
+ },
619
+ value: decorated,
620
+ },
621
+ ],
622
+ {
623
+ type: "undefined",
624
+ },
625
+ );
626
+ }
627
+
628
+ /**
629
+ * Sets the toplevel to be deletable.
630
+ *
631
+ * Setting `deletable` to %TRUE hints the desktop environment
632
+ * that it should offer the user a way to close the surface.
633
+ */
634
+ setDeletable(deletable: boolean) {
635
+ call(
636
+ "libgtk-4.so.1",
637
+ "gdk_toplevel_set_deletable",
638
+ [
639
+ {
640
+ type: {
641
+ type: "gobject",
642
+ ownership: "borrowed",
643
+ },
644
+ value: this.handle,
645
+ },
646
+ {
647
+ type: {
648
+ type: "boolean",
649
+ },
650
+ value: deletable,
651
+ },
652
+ ],
653
+ {
654
+ type: "undefined",
655
+ },
656
+ );
657
+ }
658
+
659
+ /**
660
+ * Sets the gravity that is used when changing the toplevel
661
+ * size programmatically.
662
+ */
663
+ setGravity(gravity: Gdk.Gravity) {
664
+ call(
665
+ "libgtk-4.so.1",
666
+ "gdk_toplevel_set_gravity",
667
+ [
668
+ {
669
+ type: {
670
+ type: "gobject",
671
+ ownership: "borrowed",
672
+ },
673
+ value: this.handle,
674
+ },
675
+ {
676
+ type: {
677
+ type: "int",
678
+ size: 32,
679
+ unsigned: false,
680
+ library: "libgtk-4.so.1",
681
+ getTypeFn: "gdk_gravity_get_type",
682
+ },
683
+ value: gravity,
684
+ },
685
+ ],
686
+ {
687
+ type: "undefined",
688
+ },
689
+ );
690
+ }
691
+
692
+ /**
693
+ * Sets a list of icons for the surface.
694
+ *
695
+ * One of these will be used to represent the surface in iconic form.
696
+ * The icon may be shown in window lists or task bars. Which icon
697
+ * size is shown depends on the window manager. The window manager
698
+ * can scale the icon but setting several size icons can give better
699
+ * image quality.
700
+ *
701
+ * Note that some platforms don't support surface icons.
702
+ */
703
+ setIconList(surfaces: Gdk.Texture[]) {
704
+ call(
705
+ "libgtk-4.so.1",
706
+ "gdk_toplevel_set_icon_list",
707
+ [
708
+ {
709
+ type: {
710
+ type: "gobject",
711
+ ownership: "borrowed",
712
+ },
713
+ value: this.handle,
714
+ },
715
+ {
716
+ type: {
717
+ type: "array",
718
+ itemType: {
719
+ type: "gobject",
720
+ ownership: "borrowed",
721
+ },
722
+ kind: "glist",
723
+ ownership: "borrowed",
724
+ },
725
+ value: surfaces.map((item) => item.handle),
726
+ },
727
+ ],
728
+ {
729
+ type: "undefined",
730
+ },
731
+ );
732
+ }
733
+
734
+ /**
735
+ * Sets the toplevel to be modal.
736
+ *
737
+ * The application can use this hint to tell the
738
+ * window manager that a certain surface has modal
739
+ * behaviour. The window manager can use this information
740
+ * to handle modal surfaces in a special way.
741
+ *
742
+ * You should only use this on surfaces for which you have
743
+ * previously called {@link Gdk.Toplevel.set_transient_for}.
744
+ */
745
+ setModal(modal: boolean) {
746
+ call(
747
+ "libgtk-4.so.1",
748
+ "gdk_toplevel_set_modal",
749
+ [
750
+ {
751
+ type: {
752
+ type: "gobject",
753
+ ownership: "borrowed",
754
+ },
755
+ value: this.handle,
756
+ },
757
+ {
758
+ type: {
759
+ type: "boolean",
760
+ },
761
+ value: modal,
762
+ },
763
+ ],
764
+ {
765
+ type: "undefined",
766
+ },
767
+ );
768
+ }
769
+
770
+ /**
771
+ * Sets the startup notification ID.
772
+ *
773
+ * When using GTK, typically you should use
774
+ * gtk_window_set_startup_id()
775
+ * instead of this low-level function.
776
+ */
777
+ setStartupId(startupId: string) {
778
+ call(
779
+ "libgtk-4.so.1",
780
+ "gdk_toplevel_set_startup_id",
781
+ [
782
+ {
783
+ type: {
784
+ type: "gobject",
785
+ ownership: "borrowed",
786
+ },
787
+ value: this.handle,
788
+ },
789
+ {
790
+ type: {
791
+ type: "string",
792
+ ownership: "borrowed",
793
+ },
794
+ value: startupId,
795
+ },
796
+ ],
797
+ {
798
+ type: "undefined",
799
+ },
800
+ );
801
+ }
802
+
803
+ /**
804
+ * Sets the title of a toplevel surface.
805
+ *
806
+ * The title maybe be displayed in the titlebar,
807
+ * in lists of windows, etc.
808
+ */
809
+ setTitle(title: string) {
810
+ call(
811
+ "libgtk-4.so.1",
812
+ "gdk_toplevel_set_title",
813
+ [
814
+ {
815
+ type: {
816
+ type: "gobject",
817
+ ownership: "borrowed",
818
+ },
819
+ value: this.handle,
820
+ },
821
+ {
822
+ type: {
823
+ type: "string",
824
+ ownership: "borrowed",
825
+ },
826
+ value: title,
827
+ },
828
+ ],
829
+ {
830
+ type: "undefined",
831
+ },
832
+ );
833
+ }
834
+
835
+ /**
836
+ * Sets a transient-for parent.
837
+ *
838
+ * Indicates to the window manager that `surface` is a transient
839
+ * dialog associated with the application surface `parent`. This
840
+ * allows the window manager to do things like center `surface`
841
+ * on `parent` and keep `surface` above `parent`.
842
+ *
843
+ * See gtk_window_set_transient_for()
844
+ * if you’re using GtkWindow.
845
+ */
846
+ setTransientFor(parent: Gdk.Surface) {
847
+ call(
848
+ "libgtk-4.so.1",
849
+ "gdk_toplevel_set_transient_for",
850
+ [
851
+ {
852
+ type: {
853
+ type: "gobject",
854
+ ownership: "borrowed",
855
+ },
856
+ value: this.handle,
857
+ },
858
+ {
859
+ type: {
860
+ type: "gobject",
861
+ ownership: "borrowed",
862
+ },
863
+ value: parent.handle,
864
+ },
865
+ ],
866
+ {
867
+ type: "undefined",
868
+ },
869
+ );
870
+ }
871
+
872
+ /**
873
+ * Asks the windowing system to show the window menu.
874
+ *
875
+ * The window menu is the menu shown when right-clicking the titlebar
876
+ * on traditional windows managed by the window manager. This is useful
877
+ * for windows using client-side decorations, activating it with a
878
+ * right-click on the window decorations.
879
+ */
880
+ showWindowMenu(event: Gdk.Event): boolean {
881
+ return call(
882
+ "libgtk-4.so.1",
883
+ "gdk_toplevel_show_window_menu",
884
+ [
885
+ {
886
+ type: {
887
+ type: "gobject",
888
+ ownership: "borrowed",
889
+ },
890
+ value: this.handle,
891
+ },
892
+ {
893
+ type: {
894
+ type: "fundamental",
895
+ ownership: "borrowed",
896
+ library: "libgtk-4.so.1",
897
+ refFn: "gdk_event_ref",
898
+ unrefFn: "gdk_event_unref",
899
+ },
900
+ value: event.handle,
901
+ },
902
+ ],
903
+ {
904
+ type: "boolean",
905
+ },
906
+ ) as boolean;
907
+ }
908
+
909
+ /**
910
+ * Returns whether the desktop environment supports
911
+ * tiled window states.
912
+ */
913
+ supportsEdgeConstraints(): boolean {
914
+ return call(
915
+ "libgtk-4.so.1",
916
+ "gdk_toplevel_supports_edge_constraints",
917
+ [
918
+ {
919
+ type: {
920
+ type: "gobject",
921
+ ownership: "borrowed",
922
+ },
923
+ value: this.handle,
924
+ },
925
+ ],
926
+ {
927
+ type: "boolean",
928
+ },
929
+ ) as boolean;
930
+ }
931
+
932
+ /** Performs a title bar gesture. */
933
+ titlebarGesture(gesture: Gdk.TitlebarGesture): boolean {
934
+ return call(
935
+ "libgtk-4.so.1",
936
+ "gdk_toplevel_titlebar_gesture",
937
+ [
938
+ {
939
+ type: {
940
+ type: "gobject",
941
+ ownership: "borrowed",
942
+ },
943
+ value: this.handle,
944
+ },
945
+ {
946
+ type: {
947
+ type: "int",
948
+ size: 32,
949
+ unsigned: false,
950
+ library: "libgtk-4.so.1",
951
+ getTypeFn: "gdk_titlebar_gesture_get_type",
952
+ },
953
+ value: gesture,
954
+ },
955
+ ],
956
+ {
957
+ type: "boolean",
958
+ },
959
+ ) as boolean;
960
+ }
961
+
962
+ connect(
963
+ signal: "compute-size",
964
+ handler: (self: WaylandToplevel, size: Gdk.ToplevelSize) => void,
965
+ after?: boolean,
966
+ ): number;
967
+ connect(signal: string, handler: (...args: any[]) => any, after?: boolean): number;
968
+ /**
969
+ * Connects a handler to a signal on this WaylandToplevel.
970
+ *
971
+ * @param signal - The signal name to connect to
972
+ * @param handler - Callback function invoked when signal is emitted
973
+ * @param after - If true, handler is called after default handler
974
+ * @returns Connection ID for disconnecting
975
+ */
976
+ connect(signal: string, handler: (...args: any[]) => any, after = false): number {
977
+ switch (signal) {
978
+ case "compute-size": {
979
+ const wrappedHandler = (...args: unknown[]) => {
980
+ return handler(
981
+ getNativeObject(args[0] as NativeHandle) as WaylandToplevel,
982
+ getNativeObject(args[1] as NativeHandle, Gdk.ToplevelSize),
983
+ );
984
+ };
985
+ return call(
986
+ "libgtk-4.so.1",
987
+ "g_signal_connect_closure",
988
+ [
989
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
990
+ { type: { type: "string", ownership: "borrowed" }, value: signal },
991
+ {
992
+ type: {
993
+ type: "callback",
994
+ argTypes: [
995
+ { type: "gobject", ownership: "borrowed" },
996
+ {
997
+ type: "boxed",
998
+ ownership: "borrowed",
999
+ innerType: "GdkToplevelSize",
1000
+ library: "libgtk-4.so.1",
1001
+ getTypeFn: "gdk_toplevel_size_get_type",
1002
+ },
1003
+ ],
1004
+ returnType: {
1005
+ type: "undefined",
1006
+ },
1007
+ kind: "closure",
1008
+ },
1009
+ value: wrappedHandler,
1010
+ },
1011
+ { type: { type: "boolean" }, value: after },
1012
+ ],
1013
+ { type: "int", size: 64, unsigned: true },
1014
+ ) as number;
1015
+ }
1016
+ default:
1017
+ return super.connect(signal, handler, after);
1018
+ }
1019
+ }
1020
+
1021
+ /** Gets Whether the window manager should add decorations. */
1022
+ getDecorated(): boolean {
1023
+ const gvalue = new GObject.Value();
1024
+ gvalue.init(GObject.typeFromName("gboolean"));
1025
+ call(
1026
+ "libgobject-2.0.so.0",
1027
+ "g_object_get_property",
1028
+ [
1029
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1030
+ { type: { type: "string", ownership: "borrowed" }, value: "decorated" },
1031
+ {
1032
+ type: {
1033
+ type: "boxed",
1034
+ ownership: "borrowed",
1035
+ innerType: "GValue",
1036
+ library: "libgobject-2.0.so.0",
1037
+ getTypeFn: "g_value_get_type",
1038
+ },
1039
+ value: gvalue.handle,
1040
+ },
1041
+ ],
1042
+ { type: "undefined" },
1043
+ );
1044
+ return gvalue.getBoolean();
1045
+ }
1046
+
1047
+ /** Gets Whether the window manager should allow to close the surface. */
1048
+ getDeletable(): boolean {
1049
+ const gvalue = new GObject.Value();
1050
+ gvalue.init(GObject.typeFromName("gboolean"));
1051
+ call(
1052
+ "libgobject-2.0.so.0",
1053
+ "g_object_get_property",
1054
+ [
1055
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1056
+ { type: { type: "string", ownership: "borrowed" }, value: "deletable" },
1057
+ {
1058
+ type: {
1059
+ type: "boxed",
1060
+ ownership: "borrowed",
1061
+ innerType: "GValue",
1062
+ library: "libgobject-2.0.so.0",
1063
+ getTypeFn: "g_value_get_type",
1064
+ },
1065
+ value: gvalue.handle,
1066
+ },
1067
+ ],
1068
+ { type: "undefined" },
1069
+ );
1070
+ return gvalue.getBoolean();
1071
+ }
1072
+
1073
+ /** Gets The fullscreen mode of the surface. */
1074
+ getFullscreenMode(): Gdk.FullscreenMode {
1075
+ const gvalue = new GObject.Value();
1076
+ gvalue.init(GObject.typeFromName("gint"));
1077
+ call(
1078
+ "libgobject-2.0.so.0",
1079
+ "g_object_get_property",
1080
+ [
1081
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1082
+ { type: { type: "string", ownership: "borrowed" }, value: "fullscreen-mode" },
1083
+ {
1084
+ type: {
1085
+ type: "boxed",
1086
+ ownership: "borrowed",
1087
+ innerType: "GValue",
1088
+ library: "libgobject-2.0.so.0",
1089
+ getTypeFn: "g_value_get_type",
1090
+ },
1091
+ value: gvalue.handle,
1092
+ },
1093
+ ],
1094
+ { type: "undefined" },
1095
+ );
1096
+ return gvalue.getEnum() as Gdk.FullscreenMode;
1097
+ }
1098
+
1099
+ /** Gets Whether the surface is modal. */
1100
+ getModal(): boolean {
1101
+ const gvalue = new GObject.Value();
1102
+ gvalue.init(GObject.typeFromName("gboolean"));
1103
+ call(
1104
+ "libgobject-2.0.so.0",
1105
+ "g_object_get_property",
1106
+ [
1107
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1108
+ { type: { type: "string", ownership: "borrowed" }, value: "modal" },
1109
+ {
1110
+ type: {
1111
+ type: "boxed",
1112
+ ownership: "borrowed",
1113
+ innerType: "GValue",
1114
+ library: "libgobject-2.0.so.0",
1115
+ getTypeFn: "g_value_get_type",
1116
+ },
1117
+ value: gvalue.handle,
1118
+ },
1119
+ ],
1120
+ { type: "undefined" },
1121
+ );
1122
+ return gvalue.getBoolean();
1123
+ }
1124
+
1125
+ /** Gets Whether the surface should inhibit keyboard shortcuts. */
1126
+ getShortcutsInhibited(): boolean {
1127
+ const gvalue = new GObject.Value();
1128
+ gvalue.init(GObject.typeFromName("gboolean"));
1129
+ call(
1130
+ "libgobject-2.0.so.0",
1131
+ "g_object_get_property",
1132
+ [
1133
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1134
+ { type: { type: "string", ownership: "borrowed" }, value: "shortcuts-inhibited" },
1135
+ {
1136
+ type: {
1137
+ type: "boxed",
1138
+ ownership: "borrowed",
1139
+ innerType: "GValue",
1140
+ library: "libgobject-2.0.so.0",
1141
+ getTypeFn: "g_value_get_type",
1142
+ },
1143
+ value: gvalue.handle,
1144
+ },
1145
+ ],
1146
+ { type: "undefined" },
1147
+ );
1148
+ return gvalue.getBoolean();
1149
+ }
1150
+
1151
+ /**
1152
+ * Gets The startup ID of the surface.
1153
+ *
1154
+ * See {@link Gdk.AppLaunchContext} for more information about
1155
+ * startup feedback.
1156
+ */
1157
+ getStartupId(): string {
1158
+ const gvalue = new GObject.Value();
1159
+ gvalue.init(GObject.typeFromName("gchararray"));
1160
+ call(
1161
+ "libgobject-2.0.so.0",
1162
+ "g_object_get_property",
1163
+ [
1164
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1165
+ { type: { type: "string", ownership: "borrowed" }, value: "startup-id" },
1166
+ {
1167
+ type: {
1168
+ type: "boxed",
1169
+ ownership: "borrowed",
1170
+ innerType: "GValue",
1171
+ library: "libgobject-2.0.so.0",
1172
+ getTypeFn: "g_value_get_type",
1173
+ },
1174
+ value: gvalue.handle,
1175
+ },
1176
+ ],
1177
+ { type: "undefined" },
1178
+ );
1179
+ return gvalue.getString() as string;
1180
+ }
1181
+
1182
+ /** Gets The title of the surface. */
1183
+ getTitle(): string {
1184
+ const gvalue = new GObject.Value();
1185
+ gvalue.init(GObject.typeFromName("gchararray"));
1186
+ call(
1187
+ "libgobject-2.0.so.0",
1188
+ "g_object_get_property",
1189
+ [
1190
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1191
+ { type: { type: "string", ownership: "borrowed" }, value: "title" },
1192
+ {
1193
+ type: {
1194
+ type: "boxed",
1195
+ ownership: "borrowed",
1196
+ innerType: "GValue",
1197
+ library: "libgobject-2.0.so.0",
1198
+ getTypeFn: "g_value_get_type",
1199
+ },
1200
+ value: gvalue.handle,
1201
+ },
1202
+ ],
1203
+ { type: "undefined" },
1204
+ );
1205
+ return gvalue.getString() as string;
1206
+ }
1207
+
1208
+ /** Gets The transient parent of the surface. */
1209
+ getTransientFor(): Gdk.Surface {
1210
+ const gvalue = new GObject.Value();
1211
+ gvalue.init(GObject.typeFromName("GObject"));
1212
+ call(
1213
+ "libgobject-2.0.so.0",
1214
+ "g_object_get_property",
1215
+ [
1216
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1217
+ { type: { type: "string", ownership: "borrowed" }, value: "transient-for" },
1218
+ {
1219
+ type: {
1220
+ type: "boxed",
1221
+ ownership: "borrowed",
1222
+ innerType: "GValue",
1223
+ library: "libgobject-2.0.so.0",
1224
+ getTypeFn: "g_value_get_type",
1225
+ },
1226
+ value: gvalue.handle,
1227
+ },
1228
+ ],
1229
+ { type: "undefined" },
1230
+ );
1231
+ return gvalue.getObject() as Gdk.Surface;
1232
+ }
1233
+
1234
+ /** Sets The fullscreen mode of the surface. */
1235
+ setFullscreenMode(value: Gdk.FullscreenMode): void {
1236
+ const gvalue = new GObject.Value();
1237
+ gvalue.init(GObject.typeFromName("gint"));
1238
+ gvalue.setInt(value as number);
1239
+ call(
1240
+ "libgobject-2.0.so.0",
1241
+ "g_object_set_property",
1242
+ [
1243
+ { type: { type: "gobject", ownership: "borrowed" }, value: this.handle },
1244
+ { type: { type: "string", ownership: "borrowed" }, value: "fullscreen-mode" },
1245
+ {
1246
+ type: {
1247
+ type: "boxed",
1248
+ ownership: "borrowed",
1249
+ innerType: "GValue",
1250
+ library: "libgobject-2.0.so.0",
1251
+ getTypeFn: "g_value_get_type",
1252
+ },
1253
+ value: gvalue.handle,
1254
+ },
1255
+ ],
1256
+ { type: "undefined" },
1257
+ );
1258
+ }
1259
+ }
1260
+ registerNativeClass(WaylandToplevel);