main 602baa7

requests_generated.go RawHistoryFolder

1// Code generated by xtgen; DO NOT EDIT.
2package xfixes
3
4import "bnema.dev/xturbo/render"
5import "bnema.dev/xturbo/shape"
6import "bnema.dev/xturbo/xproto"
7import "encoding/binary"
8import "bnema.dev/xturbo"
9
10func QueryVersion(b *xturbo.Buf, clientMajorVersion uint32, clientMinorVersion uint32) xturbo.Seq {
11	if b.Ext == nil {
12		b.Fail(xturbo.ErrExtMissing)
13		return 0
14	}
15	major := b.Ext.Major(xturbo.ExtXFixes)
16	if major == 0 {
17		b.Fail(xturbo.ErrExtMissing)
18		return 0
19	}
20	p, seq := b.Request(major, 0, 8)
21	if p == nil {
22		return 0
23	}
24	binary.LittleEndian.PutUint32(p[0:], uint32(clientMajorVersion))
25	binary.LittleEndian.PutUint32(p[4:], uint32(clientMinorVersion))
26	return seq
27}
28
29func ChangeSaveSet(b *xturbo.Buf, mode SaveSetMode, target SaveSetTarget, map_ SaveSetMapping, window xproto.Window) xturbo.Seq {
30	if b.Ext == nil {
31		b.Fail(xturbo.ErrExtMissing)
32		return 0
33	}
34	major := b.Ext.Major(xturbo.ExtXFixes)
35	if major == 0 {
36		b.Fail(xturbo.ErrExtMissing)
37		return 0
38	}
39	p, seq := b.Request(major, 1, 8)
40	if p == nil {
41		return 0
42	}
43	p[0:][0] = byte(mode)
44	p[1:][0] = byte(target)
45	p[2:][0] = byte(map_)
46	binary.LittleEndian.PutUint32(p[4:], uint32(window))
47	return seq
48}
49
50func SelectSelectionInput(b *xturbo.Buf, window xproto.Window, selection xproto.Atom, eventMask SelectionEventMask) xturbo.Seq {
51	if b.Ext == nil {
52		b.Fail(xturbo.ErrExtMissing)
53		return 0
54	}
55	major := b.Ext.Major(xturbo.ExtXFixes)
56	if major == 0 {
57		b.Fail(xturbo.ErrExtMissing)
58		return 0
59	}
60	p, seq := b.Request(major, 2, 12)
61	if p == nil {
62		return 0
63	}
64	binary.LittleEndian.PutUint32(p[0:], uint32(window))
65	binary.LittleEndian.PutUint32(p[4:], uint32(selection))
66	binary.LittleEndian.PutUint32(p[8:], uint32(eventMask))
67	return seq
68}
69
70func SelectCursorInput(b *xturbo.Buf, window xproto.Window, eventMask CursorNotifyMask) xturbo.Seq {
71	if b.Ext == nil {
72		b.Fail(xturbo.ErrExtMissing)
73		return 0
74	}
75	major := b.Ext.Major(xturbo.ExtXFixes)
76	if major == 0 {
77		b.Fail(xturbo.ErrExtMissing)
78		return 0
79	}
80	p, seq := b.Request(major, 3, 8)
81	if p == nil {
82		return 0
83	}
84	binary.LittleEndian.PutUint32(p[0:], uint32(window))
85	binary.LittleEndian.PutUint32(p[4:], uint32(eventMask))
86	return seq
87}
88
89func GetCursorImage(b *xturbo.Buf) xturbo.Seq {
90	if b.Ext == nil {
91		b.Fail(xturbo.ErrExtMissing)
92		return 0
93	}
94	major := b.Ext.Major(xturbo.ExtXFixes)
95	if major == 0 {
96		b.Fail(xturbo.ErrExtMissing)
97		return 0
98	}
99	p, seq := b.Request(major, 4, 0)
100	if p == nil {
101		return 0
102	}
103	return seq
104}
105
106func CreateRegion(b *xturbo.Buf, region Region, rectangles []xproto.Rectangle) xturbo.Seq {
107	size := 0
108	size += 4
109	size += len(rectangles) * 8
110	size = (size + 3) &^ 3
111	if b.Ext == nil {
112		b.Fail(xturbo.ErrExtMissing)
113		return 0
114	}
115	major := b.Ext.Major(xturbo.ExtXFixes)
116	if major == 0 {
117		b.Fail(xturbo.ErrExtMissing)
118		return 0
119	}
120	p, seq := b.Request(major, 5, size)
121	if p == nil {
122		return 0
123	}
124	off := 0
125	binary.LittleEndian.PutUint32(p[off:], uint32(region))
126	off += 4
127	for i := range rectangles {
128		rectangles[i].Put(p[off:])
129		off += 8
130	}
131	return seq
132}
133
134func CreateRegionFromBitmap(b *xturbo.Buf, region Region, bitmap xproto.Pixmap) xturbo.Seq {
135	if b.Ext == nil {
136		b.Fail(xturbo.ErrExtMissing)
137		return 0
138	}
139	major := b.Ext.Major(xturbo.ExtXFixes)
140	if major == 0 {
141		b.Fail(xturbo.ErrExtMissing)
142		return 0
143	}
144	p, seq := b.Request(major, 6, 8)
145	if p == nil {
146		return 0
147	}
148	binary.LittleEndian.PutUint32(p[0:], uint32(region))
149	binary.LittleEndian.PutUint32(p[4:], uint32(bitmap))
150	return seq
151}
152
153func CreateRegionFromWindow(b *xturbo.Buf, region Region, window xproto.Window, kind shape.Sk) xturbo.Seq {
154	if b.Ext == nil {
155		b.Fail(xturbo.ErrExtMissing)
156		return 0
157	}
158	major := b.Ext.Major(xturbo.ExtXFixes)
159	if major == 0 {
160		b.Fail(xturbo.ErrExtMissing)
161		return 0
162	}
163	p, seq := b.Request(major, 7, 12)
164	if p == nil {
165		return 0
166	}
167	binary.LittleEndian.PutUint32(p[0:], uint32(region))
168	binary.LittleEndian.PutUint32(p[4:], uint32(window))
169	p[8:][0] = byte(kind)
170	return seq
171}
172
173func CreateRegionFromGC(b *xturbo.Buf, region Region, gc xproto.Gcontext) xturbo.Seq {
174	if b.Ext == nil {
175		b.Fail(xturbo.ErrExtMissing)
176		return 0
177	}
178	major := b.Ext.Major(xturbo.ExtXFixes)
179	if major == 0 {
180		b.Fail(xturbo.ErrExtMissing)
181		return 0
182	}
183	p, seq := b.Request(major, 8, 8)
184	if p == nil {
185		return 0
186	}
187	binary.LittleEndian.PutUint32(p[0:], uint32(region))
188	binary.LittleEndian.PutUint32(p[4:], uint32(gc))
189	return seq
190}
191
192func CreateRegionFromPicture(b *xturbo.Buf, region Region, picture render.Picture) xturbo.Seq {
193	if b.Ext == nil {
194		b.Fail(xturbo.ErrExtMissing)
195		return 0
196	}
197	major := b.Ext.Major(xturbo.ExtXFixes)
198	if major == 0 {
199		b.Fail(xturbo.ErrExtMissing)
200		return 0
201	}
202	p, seq := b.Request(major, 9, 8)
203	if p == nil {
204		return 0
205	}
206	binary.LittleEndian.PutUint32(p[0:], uint32(region))
207	binary.LittleEndian.PutUint32(p[4:], uint32(picture))
208	return seq
209}
210
211func DestroyRegion(b *xturbo.Buf, region Region) xturbo.Seq {
212	if b.Ext == nil {
213		b.Fail(xturbo.ErrExtMissing)
214		return 0
215	}
216	major := b.Ext.Major(xturbo.ExtXFixes)
217	if major == 0 {
218		b.Fail(xturbo.ErrExtMissing)
219		return 0
220	}
221	p, seq := b.Request(major, 10, 4)
222	if p == nil {
223		return 0
224	}
225	binary.LittleEndian.PutUint32(p[0:], uint32(region))
226	return seq
227}
228
229func SetRegion(b *xturbo.Buf, region Region, rectangles []xproto.Rectangle) xturbo.Seq {
230	size := 0
231	size += 4
232	size += len(rectangles) * 8
233	size = (size + 3) &^ 3
234	if b.Ext == nil {
235		b.Fail(xturbo.ErrExtMissing)
236		return 0
237	}
238	major := b.Ext.Major(xturbo.ExtXFixes)
239	if major == 0 {
240		b.Fail(xturbo.ErrExtMissing)
241		return 0
242	}
243	p, seq := b.Request(major, 11, size)
244	if p == nil {
245		return 0
246	}
247	off := 0
248	binary.LittleEndian.PutUint32(p[off:], uint32(region))
249	off += 4
250	for i := range rectangles {
251		rectangles[i].Put(p[off:])
252		off += 8
253	}
254	return seq
255}
256
257func CopyRegion(b *xturbo.Buf, source Region, destination Region) xturbo.Seq {
258	if b.Ext == nil {
259		b.Fail(xturbo.ErrExtMissing)
260		return 0
261	}
262	major := b.Ext.Major(xturbo.ExtXFixes)
263	if major == 0 {
264		b.Fail(xturbo.ErrExtMissing)
265		return 0
266	}
267	p, seq := b.Request(major, 12, 8)
268	if p == nil {
269		return 0
270	}
271	binary.LittleEndian.PutUint32(p[0:], uint32(source))
272	binary.LittleEndian.PutUint32(p[4:], uint32(destination))
273	return seq
274}
275
276func UnionRegion(b *xturbo.Buf, source1 Region, source2 Region, destination Region) xturbo.Seq {
277	if b.Ext == nil {
278		b.Fail(xturbo.ErrExtMissing)
279		return 0
280	}
281	major := b.Ext.Major(xturbo.ExtXFixes)
282	if major == 0 {
283		b.Fail(xturbo.ErrExtMissing)
284		return 0
285	}
286	p, seq := b.Request(major, 13, 12)
287	if p == nil {
288		return 0
289	}
290	binary.LittleEndian.PutUint32(p[0:], uint32(source1))
291	binary.LittleEndian.PutUint32(p[4:], uint32(source2))
292	binary.LittleEndian.PutUint32(p[8:], uint32(destination))
293	return seq
294}
295
296func IntersectRegion(b *xturbo.Buf, source1 Region, source2 Region, destination Region) xturbo.Seq {
297	if b.Ext == nil {
298		b.Fail(xturbo.ErrExtMissing)
299		return 0
300	}
301	major := b.Ext.Major(xturbo.ExtXFixes)
302	if major == 0 {
303		b.Fail(xturbo.ErrExtMissing)
304		return 0
305	}
306	p, seq := b.Request(major, 14, 12)
307	if p == nil {
308		return 0
309	}
310	binary.LittleEndian.PutUint32(p[0:], uint32(source1))
311	binary.LittleEndian.PutUint32(p[4:], uint32(source2))
312	binary.LittleEndian.PutUint32(p[8:], uint32(destination))
313	return seq
314}
315
316func SubtractRegion(b *xturbo.Buf, source1 Region, source2 Region, destination Region) xturbo.Seq {
317	if b.Ext == nil {
318		b.Fail(xturbo.ErrExtMissing)
319		return 0
320	}
321	major := b.Ext.Major(xturbo.ExtXFixes)
322	if major == 0 {
323		b.Fail(xturbo.ErrExtMissing)
324		return 0
325	}
326	p, seq := b.Request(major, 15, 12)
327	if p == nil {
328		return 0
329	}
330	binary.LittleEndian.PutUint32(p[0:], uint32(source1))
331	binary.LittleEndian.PutUint32(p[4:], uint32(source2))
332	binary.LittleEndian.PutUint32(p[8:], uint32(destination))
333	return seq
334}
335
336func InvertRegion(b *xturbo.Buf, source Region, bounds xproto.Rectangle, destination Region) xturbo.Seq {
337	if b.Ext == nil {
338		b.Fail(xturbo.ErrExtMissing)
339		return 0
340	}
341	major := b.Ext.Major(xturbo.ExtXFixes)
342	if major == 0 {
343		b.Fail(xturbo.ErrExtMissing)
344		return 0
345	}
346	p, seq := b.Request(major, 16, 16)
347	if p == nil {
348		return 0
349	}
350	binary.LittleEndian.PutUint32(p[0:], uint32(source))
351	bounds.Put(p[4:])
352	binary.LittleEndian.PutUint32(p[12:], uint32(destination))
353	return seq
354}
355
356func TranslateRegion(b *xturbo.Buf, region Region, dx int16, dy int16) xturbo.Seq {
357	if b.Ext == nil {
358		b.Fail(xturbo.ErrExtMissing)
359		return 0
360	}
361	major := b.Ext.Major(xturbo.ExtXFixes)
362	if major == 0 {
363		b.Fail(xturbo.ErrExtMissing)
364		return 0
365	}
366	p, seq := b.Request(major, 17, 8)
367	if p == nil {
368		return 0
369	}
370	binary.LittleEndian.PutUint32(p[0:], uint32(region))
371	binary.LittleEndian.PutUint16(p[4:], uint16(dx))
372	binary.LittleEndian.PutUint16(p[6:], uint16(dy))
373	return seq
374}
375
376func RegionExtents(b *xturbo.Buf, source Region, destination Region) xturbo.Seq {
377	if b.Ext == nil {
378		b.Fail(xturbo.ErrExtMissing)
379		return 0
380	}
381	major := b.Ext.Major(xturbo.ExtXFixes)
382	if major == 0 {
383		b.Fail(xturbo.ErrExtMissing)
384		return 0
385	}
386	p, seq := b.Request(major, 18, 8)
387	if p == nil {
388		return 0
389	}
390	binary.LittleEndian.PutUint32(p[0:], uint32(source))
391	binary.LittleEndian.PutUint32(p[4:], uint32(destination))
392	return seq
393}
394
395func FetchRegion(b *xturbo.Buf, region Region) xturbo.Seq {
396	if b.Ext == nil {
397		b.Fail(xturbo.ErrExtMissing)
398		return 0
399	}
400	major := b.Ext.Major(xturbo.ExtXFixes)
401	if major == 0 {
402		b.Fail(xturbo.ErrExtMissing)
403		return 0
404	}
405	p, seq := b.Request(major, 19, 4)
406	if p == nil {
407		return 0
408	}
409	binary.LittleEndian.PutUint32(p[0:], uint32(region))
410	return seq
411}
412
413func SetGCClipRegion(b *xturbo.Buf, gc xproto.Gcontext, region Region, xOrigin int16, yOrigin int16) xturbo.Seq {
414	if b.Ext == nil {
415		b.Fail(xturbo.ErrExtMissing)
416		return 0
417	}
418	major := b.Ext.Major(xturbo.ExtXFixes)
419	if major == 0 {
420		b.Fail(xturbo.ErrExtMissing)
421		return 0
422	}
423	p, seq := b.Request(major, 20, 12)
424	if p == nil {
425		return 0
426	}
427	binary.LittleEndian.PutUint32(p[0:], uint32(gc))
428	binary.LittleEndian.PutUint32(p[4:], uint32(region))
429	binary.LittleEndian.PutUint16(p[8:], uint16(xOrigin))
430	binary.LittleEndian.PutUint16(p[10:], uint16(yOrigin))
431	return seq
432}
433
434func SetWindowShapeRegion(b *xturbo.Buf, dest xproto.Window, destKind shape.Sk, xOffset int16, yOffset int16, region Region) xturbo.Seq {
435	if b.Ext == nil {
436		b.Fail(xturbo.ErrExtMissing)
437		return 0
438	}
439	major := b.Ext.Major(xturbo.ExtXFixes)
440	if major == 0 {
441		b.Fail(xturbo.ErrExtMissing)
442		return 0
443	}
444	p, seq := b.Request(major, 21, 16)
445	if p == nil {
446		return 0
447	}
448	binary.LittleEndian.PutUint32(p[0:], uint32(dest))
449	p[4:][0] = byte(destKind)
450	binary.LittleEndian.PutUint16(p[8:], uint16(xOffset))
451	binary.LittleEndian.PutUint16(p[10:], uint16(yOffset))
452	binary.LittleEndian.PutUint32(p[12:], uint32(region))
453	return seq
454}
455
456func SetPictureClipRegion(b *xturbo.Buf, picture render.Picture, region Region, xOrigin int16, yOrigin int16) xturbo.Seq {
457	if b.Ext == nil {
458		b.Fail(xturbo.ErrExtMissing)
459		return 0
460	}
461	major := b.Ext.Major(xturbo.ExtXFixes)
462	if major == 0 {
463		b.Fail(xturbo.ErrExtMissing)
464		return 0
465	}
466	p, seq := b.Request(major, 22, 12)
467	if p == nil {
468		return 0
469	}
470	binary.LittleEndian.PutUint32(p[0:], uint32(picture))
471	binary.LittleEndian.PutUint32(p[4:], uint32(region))
472	binary.LittleEndian.PutUint16(p[8:], uint16(xOrigin))
473	binary.LittleEndian.PutUint16(p[10:], uint16(yOrigin))
474	return seq
475}
476
477func SetCursorName(b *xturbo.Buf, cursor xproto.Cursor, name string) xturbo.Seq {
478	if uint64(len(name)) > 65535 {
479		b.Fail(xturbo.ErrBadLength)
480		return 0
481	}
482	size := 0
483	size += 4
484	size += 2
485	size += 2
486	size += len(name) * 1
487	size = (size + 3) &^ 3
488	if b.Ext == nil {
489		b.Fail(xturbo.ErrExtMissing)
490		return 0
491	}
492	major := b.Ext.Major(xturbo.ExtXFixes)
493	if major == 0 {
494		b.Fail(xturbo.ErrExtMissing)
495		return 0
496	}
497	p, seq := b.Request(major, 23, size)
498	if p == nil {
499		return 0
500	}
501	off := 0
502	binary.LittleEndian.PutUint32(p[off:], uint32(cursor))
503	off += 4
504	binary.LittleEndian.PutUint16(p[off:], uint16(len(name)))
505	off += 2
506	off += 2
507	copy(p[off:], name)
508	off += len(name)
509	return seq
510}
511
512func GetCursorName(b *xturbo.Buf, cursor xproto.Cursor) xturbo.Seq {
513	if b.Ext == nil {
514		b.Fail(xturbo.ErrExtMissing)
515		return 0
516	}
517	major := b.Ext.Major(xturbo.ExtXFixes)
518	if major == 0 {
519		b.Fail(xturbo.ErrExtMissing)
520		return 0
521	}
522	p, seq := b.Request(major, 24, 4)
523	if p == nil {
524		return 0
525	}
526	binary.LittleEndian.PutUint32(p[0:], uint32(cursor))
527	return seq
528}
529
530func GetCursorImageAndName(b *xturbo.Buf) xturbo.Seq {
531	if b.Ext == nil {
532		b.Fail(xturbo.ErrExtMissing)
533		return 0
534	}
535	major := b.Ext.Major(xturbo.ExtXFixes)
536	if major == 0 {
537		b.Fail(xturbo.ErrExtMissing)
538		return 0
539	}
540	p, seq := b.Request(major, 25, 0)
541	if p == nil {
542		return 0
543	}
544	return seq
545}
546
547func ChangeCursor(b *xturbo.Buf, source xproto.Cursor, destination xproto.Cursor) xturbo.Seq {
548	if b.Ext == nil {
549		b.Fail(xturbo.ErrExtMissing)
550		return 0
551	}
552	major := b.Ext.Major(xturbo.ExtXFixes)
553	if major == 0 {
554		b.Fail(xturbo.ErrExtMissing)
555		return 0
556	}
557	p, seq := b.Request(major, 26, 8)
558	if p == nil {
559		return 0
560	}
561	binary.LittleEndian.PutUint32(p[0:], uint32(source))
562	binary.LittleEndian.PutUint32(p[4:], uint32(destination))
563	return seq
564}
565
566func ChangeCursorByName(b *xturbo.Buf, src xproto.Cursor, name string) xturbo.Seq {
567	if uint64(len(name)) > 65535 {
568		b.Fail(xturbo.ErrBadLength)
569		return 0
570	}
571	size := 0
572	size += 4
573	size += 2
574	size += 2
575	size += len(name) * 1
576	size = (size + 3) &^ 3
577	if b.Ext == nil {
578		b.Fail(xturbo.ErrExtMissing)
579		return 0
580	}
581	major := b.Ext.Major(xturbo.ExtXFixes)
582	if major == 0 {
583		b.Fail(xturbo.ErrExtMissing)
584		return 0
585	}
586	p, seq := b.Request(major, 27, size)
587	if p == nil {
588		return 0
589	}
590	off := 0
591	binary.LittleEndian.PutUint32(p[off:], uint32(src))
592	off += 4
593	binary.LittleEndian.PutUint16(p[off:], uint16(len(name)))
594	off += 2
595	off += 2
596	copy(p[off:], name)
597	off += len(name)
598	return seq
599}
600
601func ExpandRegion(b *xturbo.Buf, source Region, destination Region, left uint16, right uint16, top uint16, bottom uint16) xturbo.Seq {
602	if b.Ext == nil {
603		b.Fail(xturbo.ErrExtMissing)
604		return 0
605	}
606	major := b.Ext.Major(xturbo.ExtXFixes)
607	if major == 0 {
608		b.Fail(xturbo.ErrExtMissing)
609		return 0
610	}
611	p, seq := b.Request(major, 28, 16)
612	if p == nil {
613		return 0
614	}
615	binary.LittleEndian.PutUint32(p[0:], uint32(source))
616	binary.LittleEndian.PutUint32(p[4:], uint32(destination))
617	binary.LittleEndian.PutUint16(p[8:], uint16(left))
618	binary.LittleEndian.PutUint16(p[10:], uint16(right))
619	binary.LittleEndian.PutUint16(p[12:], uint16(top))
620	binary.LittleEndian.PutUint16(p[14:], uint16(bottom))
621	return seq
622}
623
624func HideCursor(b *xturbo.Buf, window xproto.Window) xturbo.Seq {
625	if b.Ext == nil {
626		b.Fail(xturbo.ErrExtMissing)
627		return 0
628	}
629	major := b.Ext.Major(xturbo.ExtXFixes)
630	if major == 0 {
631		b.Fail(xturbo.ErrExtMissing)
632		return 0
633	}
634	p, seq := b.Request(major, 29, 4)
635	if p == nil {
636		return 0
637	}
638	binary.LittleEndian.PutUint32(p[0:], uint32(window))
639	return seq
640}
641
642func ShowCursor(b *xturbo.Buf, window xproto.Window) xturbo.Seq {
643	if b.Ext == nil {
644		b.Fail(xturbo.ErrExtMissing)
645		return 0
646	}
647	major := b.Ext.Major(xturbo.ExtXFixes)
648	if major == 0 {
649		b.Fail(xturbo.ErrExtMissing)
650		return 0
651	}
652	p, seq := b.Request(major, 30, 4)
653	if p == nil {
654		return 0
655	}
656	binary.LittleEndian.PutUint32(p[0:], uint32(window))
657	return seq
658}
659
660func CreatePointerBarrier(b *xturbo.Buf, barrier Barrier, window xproto.Window, x1 uint16, y1 uint16, x2 uint16, y2 uint16, directions BarrierDirections, devices []uint16) xturbo.Seq {
661	if uint64(len(devices)) > 65535 {
662		b.Fail(xturbo.ErrBadLength)
663		return 0
664	}
665	size := 0
666	size += 4
667	size += 4
668	size += 2
669	size += 2
670	size += 2
671	size += 2
672	size += 4
673	size += 2
674	size += 2
675	size += len(devices) * 2
676	size = (size + 3) &^ 3
677	if b.Ext == nil {
678		b.Fail(xturbo.ErrExtMissing)
679		return 0
680	}
681	major := b.Ext.Major(xturbo.ExtXFixes)
682	if major == 0 {
683		b.Fail(xturbo.ErrExtMissing)
684		return 0
685	}
686	p, seq := b.Request(major, 31, size)
687	if p == nil {
688		return 0
689	}
690	off := 0
691	binary.LittleEndian.PutUint32(p[off:], uint32(barrier))
692	off += 4
693	binary.LittleEndian.PutUint32(p[off:], uint32(window))
694	off += 4
695	binary.LittleEndian.PutUint16(p[off:], uint16(x1))
696	off += 2
697	binary.LittleEndian.PutUint16(p[off:], uint16(y1))
698	off += 2
699	binary.LittleEndian.PutUint16(p[off:], uint16(x2))
700	off += 2
701	binary.LittleEndian.PutUint16(p[off:], uint16(y2))
702	off += 2
703	binary.LittleEndian.PutUint32(p[off:], uint32(directions))
704	off += 4
705	off += 2
706	binary.LittleEndian.PutUint16(p[off:], uint16(len(devices)))
707	off += 2
708	for i := range devices {
709		binary.LittleEndian.PutUint16(p[off:], uint16(devices[i]))
710		off += 2
711	}
712	return seq
713}
714
715func DeletePointerBarrier(b *xturbo.Buf, barrier Barrier) xturbo.Seq {
716	if b.Ext == nil {
717		b.Fail(xturbo.ErrExtMissing)
718		return 0
719	}
720	major := b.Ext.Major(xturbo.ExtXFixes)
721	if major == 0 {
722		b.Fail(xturbo.ErrExtMissing)
723		return 0
724	}
725	p, seq := b.Request(major, 32, 4)
726	if p == nil {
727		return 0
728	}
729	binary.LittleEndian.PutUint32(p[0:], uint32(barrier))
730	return seq
731}
732
733func SetClientDisconnectMode(b *xturbo.Buf, disconnectMode ClientDisconnectFlags) xturbo.Seq {
734	if b.Ext == nil {
735		b.Fail(xturbo.ErrExtMissing)
736		return 0
737	}
738	major := b.Ext.Major(xturbo.ExtXFixes)
739	if major == 0 {
740		b.Fail(xturbo.ErrExtMissing)
741		return 0
742	}
743	p, seq := b.Request(major, 33, 4)
744	if p == nil {
745		return 0
746	}
747	binary.LittleEndian.PutUint32(p[0:], uint32(disconnectMode))
748	return seq
749}
750
751func GetClientDisconnectMode(b *xturbo.Buf) xturbo.Seq {
752	if b.Ext == nil {
753		b.Fail(xturbo.ErrExtMissing)
754		return 0
755	}
756	major := b.Ext.Major(xturbo.ExtXFixes)
757	if major == 0 {
758		b.Fail(xturbo.ErrExtMissing)
759		return 0
760	}
761	p, seq := b.Request(major, 34, 0)
762	if p == nil {
763		return 0
764	}
765	return seq
766}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 1

↑↓ moveenter openesc close