v0.2.1 c0399be

gtkexpander.go RawHistoryFolder

1// Package gtk was automatically generated by github.com/bnema/puregotk DO NOT EDIT
2package gtk
3
4import (
5	"unsafe"
6
7	"github.com/ebitengine/purego"
8
9	"github.com/bnema/puregotk/pkg/core"
10	"github.com/bnema/puregotk/v4/glib"
11	"github.com/bnema/puregotk/v4/gobject"
12	"github.com/bnema/puregotk/v4/gobject/types"
13)
14
15// Allows the user to reveal or conceal a child widget.
16//
17// <picture>
18//
19//	<source srcset="expander-dark.png" media="(prefers-color-scheme: dark)">
20//	<img alt="An example GtkExpander" src="expander.png">
21//
22// </picture>
23//
24// This is similar to the triangles used in a `GtkTreeView`.
25//
26// Normally you use an expander as you would use a frame; you create
27// the child widget and use [method@Gtk.Expander.set_child] to add it
28// to the expander. When the expander is toggled, it will take care of
29// showing and hiding the child automatically.
30//
31// # Special Usage
32//
33// There are situations in which you may prefer to show and hide the
34// expanded widget yourself, such as when you want to actually create
35// the widget at expansion time. In this case, create a `GtkExpander`
36// but do not add a child to it. The expander widget has an
37// [property@Gtk.Expander:expanded] property which can be used to
38// monitor its expansion state. You should watch this property with
39// a signal connection as follows:
40//
41// ```c
42// static void
43// expander_callback (GObject    *object,
44//
45//	GParamSpec *param_spec,
46//	gpointer    user_data)
47//
48//	{
49//	  GtkExpander *expander;
50//
51//	  expander = GTK_EXPANDER (object);
52//
53//	  if (gtk_expander_get_expanded (expander))
54//	    {
55//	      // Show or create widgets
56//	    }
57//	  else
58//	    {
59//	      // Hide or destroy widgets
60//	    }
61//	}
62//
63// static void
64// create_expander (void)
65//
66//	{
67//	  GtkWidget *expander = gtk_expander_new_with_mnemonic ("_More Options");
68//	  g_signal_connect (expander, "notify::expanded",
69//	                    G_CALLBACK (expander_callback), NULL);
70//
71//	  // ...
72//	}
73//
74// ```
75//
76// # GtkExpander as GtkBuildable
77//
78// An example of a UI definition fragment with GtkExpander:
79//
80// ```xml
81// <object class="GtkExpander">
82//
83//	<property name="label-widget">
84//	  <object class="GtkLabel" id="expander-label"/>
85//	</property>
86//	<property name="child">
87//	  <object class="GtkEntry" id="expander-content"/>
88//	</property>
89//
90// </object>
91// ```
92//
93// # CSS nodes
94//
95// ```
96// expander-widget
97// ╰── box
98//
99//	├── title
100//	│   ├── expander
101//	│   ╰── <label widget>
102//	╰── <child>
103//
104// ```
105//
106// `GtkExpander` has a main node `expander-widget`, and subnode `box` containing
107// the title and child widget. The box subnode `title` contains node `expander`,
108// i.e. the expand/collapse arrow; then the label widget if any. The arrow of an
109// expander that is showing its child gets the `:checked` pseudoclass set on it.
110//
111// # Accessibility
112//
113// `GtkExpander` uses the [enum@Gtk.AccessibleRole.button] role.
114type Expander struct {
115	Widget
116}
117
118var xExpanderGLibType func() types.GType
119
120func ExpanderGLibType() types.GType {
121	return xExpanderGLibType()
122}
123
124func ExpanderNewFromInternalPtr(ptr uintptr) *Expander {
125	cls := &Expander{}
126	cls.Ptr = ptr
127	return cls
128}
129
130var xNewExpander func(uintptr) uintptr
131
132// Creates a new expander using @label as the text of the label.
133func NewExpander(LabelVar *string) *Expander {
134	var cls *Expander
135
136	LabelVarPtr := core.GStrdupNullable(LabelVar)
137	defer core.GFreeNullable(LabelVarPtr)
138
139	cret := xNewExpander(LabelVarPtr)
140
141	if cret == 0 {
142		return nil
143	}
144	gobject.IncreaseRef(cret)
145	cls = &Expander{}
146	cls.Ptr = cret
147	return cls
148}
149
150var xNewExpanderWithMnemonic func(uintptr) uintptr
151
152// Creates a new expander using @label as the text of the label.
153//
154// If characters in @label are preceded by an underscore, they are
155// underlined. If you need a literal underscore character in a label,
156// use “__” (two underscores). The first underlined character represents
157// a keyboard accelerator called a mnemonic.
158//
159// Pressing Alt and that key activates the button.
160func NewExpanderWithMnemonic(LabelVar *string) *Expander {
161	var cls *Expander
162
163	LabelVarPtr := core.GStrdupNullable(LabelVar)
164	defer core.GFreeNullable(LabelVarPtr)
165
166	cret := xNewExpanderWithMnemonic(LabelVarPtr)
167
168	if cret == 0 {
169		return nil
170	}
171	gobject.IncreaseRef(cret)
172	cls = &Expander{}
173	cls.Ptr = cret
174	return cls
175}
176
177var xExpanderGetChild func(uintptr) uintptr
178
179// Gets the child widget of @expander.
180func (x *Expander) GetChild() *Widget {
181	var cls *Widget
182
183	cret := xExpanderGetChild(x.GoPointer())
184
185	if cret == 0 {
186		return nil
187	}
188	gobject.IncreaseRef(cret)
189	cls = &Widget{}
190	cls.Ptr = cret
191	return cls
192}
193
194var xExpanderGetExpanded func(uintptr) bool
195
196// Queries a `GtkExpander` and returns its current state.
197//
198// Returns %TRUE if the child widget is revealed.
199func (x *Expander) GetExpanded() bool {
200
201	cret := xExpanderGetExpanded(x.GoPointer())
202	return cret
203}
204
205var xExpanderGetLabel func(uintptr) string
206
207// Fetches the text from a label widget.
208//
209// This is including any embedded underlines indicating mnemonics and
210// Pango markup, as set by [method@Gtk.Expander.set_label]. If the label
211// text has not been set the return value will be %NULL. This will be the
212// case if you create an empty button with gtk_button_new() to use as a
213// container.
214func (x *Expander) GetLabel() string {
215
216	cret := xExpanderGetLabel(x.GoPointer())
217	return cret
218}
219
220var xExpanderGetLabelWidget func(uintptr) uintptr
221
222// Retrieves the label widget for the frame.
223func (x *Expander) GetLabelWidget() *Widget {
224	var cls *Widget
225
226	cret := xExpanderGetLabelWidget(x.GoPointer())
227
228	if cret == 0 {
229		return nil
230	}
231	gobject.IncreaseRef(cret)
232	cls = &Widget{}
233	cls.Ptr = cret
234	return cls
235}
236
237var xExpanderGetResizeToplevel func(uintptr) bool
238
239// Returns whether the expander will resize the toplevel widget
240// containing the expander upon resizing and collapsing.
241func (x *Expander) GetResizeToplevel() bool {
242
243	cret := xExpanderGetResizeToplevel(x.GoPointer())
244	return cret
245}
246
247var xExpanderGetUseMarkup func(uintptr) bool
248
249// Returns whether the label’s text is interpreted as Pango markup.
250func (x *Expander) GetUseMarkup() bool {
251
252	cret := xExpanderGetUseMarkup(x.GoPointer())
253	return cret
254}
255
256var xExpanderGetUseUnderline func(uintptr) bool
257
258// Returns whether an underline in the text indicates a mnemonic.
259func (x *Expander) GetUseUnderline() bool {
260
261	cret := xExpanderGetUseUnderline(x.GoPointer())
262	return cret
263}
264
265var xExpanderSetChild func(uintptr, uintptr)
266
267// Sets the child widget of @expander.
268func (x *Expander) SetChild(ChildVar *Widget) {
269
270	xExpanderSetChild(x.GoPointer(), ChildVar.GoPointer())
271
272}
273
274var xExpanderSetExpanded func(uintptr, bool)
275
276// Sets the state of the expander.
277//
278// Set to %TRUE, if you want the child widget to be revealed,
279// and %FALSE if you want the child widget to be hidden.
280func (x *Expander) SetExpanded(ExpandedVar bool) {
281
282	xExpanderSetExpanded(x.GoPointer(), ExpandedVar)
283
284}
285
286var xExpanderSetLabel func(uintptr, uintptr)
287
288// Sets the text of the label of the expander to @label.
289//
290// This will also clear any previously set labels.
291func (x *Expander) SetLabel(LabelVar *string) {
292
293	LabelVarPtr := core.GStrdupNullable(LabelVar)
294	defer core.GFreeNullable(LabelVarPtr)
295
296	xExpanderSetLabel(x.GoPointer(), LabelVarPtr)
297
298}
299
300var xExpanderSetLabelWidget func(uintptr, uintptr)
301
302// Set the label widget for the expander.
303//
304// This is the widget that will appear embedded alongside
305// the expander arrow.
306func (x *Expander) SetLabelWidget(LabelWidgetVar *Widget) {
307
308	xExpanderSetLabelWidget(x.GoPointer(), LabelWidgetVar.GoPointer())
309
310}
311
312var xExpanderSetResizeToplevel func(uintptr, bool)
313
314// Sets whether the expander will resize the toplevel widget
315// containing the expander upon resizing and collapsing.
316func (x *Expander) SetResizeToplevel(ResizeToplevelVar bool) {
317
318	xExpanderSetResizeToplevel(x.GoPointer(), ResizeToplevelVar)
319
320}
321
322var xExpanderSetUseMarkup func(uintptr, bool)
323
324// Sets whether the text of the label contains Pango markup.
325func (x *Expander) SetUseMarkup(UseMarkupVar bool) {
326
327	xExpanderSetUseMarkup(x.GoPointer(), UseMarkupVar)
328
329}
330
331var xExpanderSetUseUnderline func(uintptr, bool)
332
333// If true, an underline in the text indicates a mnemonic.
334func (x *Expander) SetUseUnderline(UseUnderlineVar bool) {
335
336	xExpanderSetUseUnderline(x.GoPointer(), UseUnderlineVar)
337
338}
339
340func (c *Expander) GoPointer() uintptr {
341	if c == nil {
342		return 0
343	}
344	return c.Ptr
345}
346
347func (c *Expander) SetGoPointer(ptr uintptr) {
348	c.Ptr = ptr
349}
350
351// SetPropertyExpanded sets the "expanded" property.
352// Whether the expander has been opened to reveal the child.
353func (x *Expander) SetPropertyExpanded(value bool) {
354	var v gobject.Value
355	v.Init(gobject.TypeBooleanVal)
356	v.SetBoolean(value)
357	x.SetProperty("expanded", &v)
358}
359
360// GetPropertyExpanded gets the "expanded" property.
361// Whether the expander has been opened to reveal the child.
362func (x *Expander) GetPropertyExpanded() bool {
363	var v gobject.Value
364	x.GetProperty("expanded", &v)
365	return v.GetBoolean()
366}
367
368// SetPropertyLabel sets the "label" property.
369// The text of the expanders label.
370func (x *Expander) SetPropertyLabel(value string) {
371	var v gobject.Value
372	v.Init(gobject.TypeStringVal)
373	v.SetString(&value)
374	x.SetProperty("label", &v)
375}
376
377// GetPropertyLabel gets the "label" property.
378// The text of the expanders label.
379func (x *Expander) GetPropertyLabel() string {
380	var v gobject.Value
381	x.GetProperty("label", &v)
382	return v.GetString()
383}
384
385// SetPropertyResizeToplevel sets the "resize-toplevel" property.
386// When this property is %TRUE, the expander will resize the toplevel
387// widget containing the expander upon expanding and collapsing.
388func (x *Expander) SetPropertyResizeToplevel(value bool) {
389	var v gobject.Value
390	v.Init(gobject.TypeBooleanVal)
391	v.SetBoolean(value)
392	x.SetProperty("resize-toplevel", &v)
393}
394
395// GetPropertyResizeToplevel gets the "resize-toplevel" property.
396// When this property is %TRUE, the expander will resize the toplevel
397// widget containing the expander upon expanding and collapsing.
398func (x *Expander) GetPropertyResizeToplevel() bool {
399	var v gobject.Value
400	x.GetProperty("resize-toplevel", &v)
401	return v.GetBoolean()
402}
403
404// SetPropertyUseMarkup sets the "use-markup" property.
405// Whether the text in the label is Pango markup.
406func (x *Expander) SetPropertyUseMarkup(value bool) {
407	var v gobject.Value
408	v.Init(gobject.TypeBooleanVal)
409	v.SetBoolean(value)
410	x.SetProperty("use-markup", &v)
411}
412
413// GetPropertyUseMarkup gets the "use-markup" property.
414// Whether the text in the label is Pango markup.
415func (x *Expander) GetPropertyUseMarkup() bool {
416	var v gobject.Value
417	x.GetProperty("use-markup", &v)
418	return v.GetBoolean()
419}
420
421// SetPropertyUseUnderline sets the "use-underline" property.
422// Whether an underline in the text indicates a mnemonic.
423func (x *Expander) SetPropertyUseUnderline(value bool) {
424	var v gobject.Value
425	v.Init(gobject.TypeBooleanVal)
426	v.SetBoolean(value)
427	x.SetProperty("use-underline", &v)
428}
429
430// GetPropertyUseUnderline gets the "use-underline" property.
431// Whether an underline in the text indicates a mnemonic.
432func (x *Expander) GetPropertyUseUnderline() bool {
433	var v gobject.Value
434	x.GetProperty("use-underline", &v)
435	return v.GetBoolean()
436}
437
438// Activates the `GtkExpander`.
439func (x *Expander) ConnectActivate(cb *func(Expander)) uint {
440	cbPtr := uintptr(unsafe.Pointer(cb))
441	if cbRefPtr, ok := glib.GetCallback(cbPtr); ok {
442		handlerID := gobject.SignalConnect(x.GoPointer(), "activate", cbRefPtr)
443		glib.SaveHandlerMapping(handlerID, cbPtr)
444		return handlerID
445	}
446
447	fcb := func(clsPtr uintptr) {
448		fa := Expander{}
449		fa.Ptr = clsPtr
450		cbFn := *cb
451
452		cbFn(fa)
453
454	}
455	cbRefPtr := purego.NewCallback(fcb)
456	glib.SaveCallbackWithClosure(cbPtr, cbRefPtr, cb)
457	handlerID := gobject.SignalConnect(x.GoPointer(), "activate", cbRefPtr)
458	glib.SaveHandlerMapping(handlerID, cbPtr)
459	return handlerID
460}
461
462// Requests the user's screen reader to announce the given message.
463//
464// This kind of notification is useful for messages that
465// either have only a visual representation or that are not
466// exposed visually at all, e.g. a notification about a
467// successful operation.
468//
469// Also, by using this API, you can ensure that the message
470// does not interrupts the user's current screen reader output.
471func (x *Expander) Announce(MessageVar string, PriorityVar AccessibleAnnouncementPriority) {
472
473	XGtkAccessibleAnnounce(x.GoPointer(), MessageVar, PriorityVar)
474
475}
476
477// Retrieves the accessible parent for an accessible object.
478//
479// This function returns `NULL` for top level widgets.
480func (x *Expander) GetAccessibleParent() *AccessibleBase {
481	var cls *AccessibleBase
482
483	cret := XGtkAccessibleGetAccessibleParent(x.GoPointer())
484
485	if cret == 0 {
486		return nil
487	}
488	cls = &AccessibleBase{}
489	cls.Ptr = cret
490	return cls
491}
492
493// Retrieves the accessible role of an accessible object.
494func (x *Expander) GetAccessibleRole() AccessibleRole {
495
496	cret := XGtkAccessibleGetAccessibleRole(x.GoPointer())
497	return cret
498}
499
500// Retrieves the implementation for the given accessible object.
501func (x *Expander) GetAtContext() *ATContext {
502	var cls *ATContext
503
504	cret := XGtkAccessibleGetAtContext(x.GoPointer())
505
506	if cret == 0 {
507		return nil
508	}
509	cls = &ATContext{}
510	cls.Ptr = cret
511	return cls
512}
513
514// Queries the coordinates and dimensions of this accessible
515//
516// This functionality can be overridden by `GtkAccessible`
517// implementations, e.g. to get the bounds from an ignored
518// child widget.
519func (x *Expander) GetBounds(XVar *int, YVar *int, WidthVar *int, HeightVar *int) bool {
520
521	cret := XGtkAccessibleGetBounds(x.GoPointer(), XVar, YVar, WidthVar, HeightVar)
522	return cret
523}
524
525// Retrieves the first accessible child of an accessible object.
526func (x *Expander) GetFirstAccessibleChild() *AccessibleBase {
527	var cls *AccessibleBase
528
529	cret := XGtkAccessibleGetFirstAccessibleChild(x.GoPointer())
530
531	if cret == 0 {
532		return nil
533	}
534	cls = &AccessibleBase{}
535	cls.Ptr = cret
536	return cls
537}
538
539// Retrieves the next accessible sibling of an accessible object
540func (x *Expander) GetNextAccessibleSibling() *AccessibleBase {
541	var cls *AccessibleBase
542
543	cret := XGtkAccessibleGetNextAccessibleSibling(x.GoPointer())
544
545	if cret == 0 {
546		return nil
547	}
548	cls = &AccessibleBase{}
549	cls.Ptr = cret
550	return cls
551}
552
553// Queries a platform state, such as focus.
554//
555// This functionality can be overridden by `GtkAccessible`
556// implementations, e.g. to get platform state from an ignored
557// child widget, as is the case for `GtkText` wrappers.
558func (x *Expander) GetPlatformState(StateVar AccessiblePlatformState) bool {
559
560	cret := XGtkAccessibleGetPlatformState(x.GoPointer(), StateVar)
561	return cret
562}
563
564// Resets the accessible property to its default value.
565func (x *Expander) ResetProperty(PropertyVar AccessibleProperty) {
566
567	XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
568
569}
570
571// Resets the accessible relation to its default value.
572func (x *Expander) ResetRelation(RelationVar AccessibleRelation) {
573
574	XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
575
576}
577
578// Resets the accessible state to its default value.
579func (x *Expander) ResetState(StateVar AccessibleState) {
580
581	XGtkAccessibleResetState(x.GoPointer(), StateVar)
582
583}
584
585// Sets the parent and sibling of an accessible object.
586//
587// This function is meant to be used by accessible implementations that are
588// not part of the widget hierarchy, and but act as a logical bridge between
589// widgets. For instance, if a widget creates an object that holds metadata
590// for each child, and you want that object to implement the `GtkAccessible`
591// interface, you will use this function to ensure that the parent of each
592// child widget is the metadata object, and the parent of each metadata
593// object is the container widget.
594func (x *Expander) SetAccessibleParent(ParentVar Accessible, NextSiblingVar Accessible) {
595
596	XGtkAccessibleSetAccessibleParent(x.GoPointer(), ParentVar.GoPointer(), NextSiblingVar.GoPointer())
597
598}
599
600// Updates the next accessible sibling.
601//
602// That might be useful when a new child of a custom accessible
603// is created, and it needs to be linked to a previous child.
604func (x *Expander) UpdateNextAccessibleSibling(NewSiblingVar Accessible) {
605
606	XGtkAccessibleUpdateNextAccessibleSibling(x.GoPointer(), NewSiblingVar.GoPointer())
607
608}
609
610// Informs ATs that the platform state has changed.
611//
612// This function should be used by `GtkAccessible` implementations that
613// have a platform state but are not widgets. Widgets handle platform
614// states automatically.
615func (x *Expander) UpdatePlatformState(StateVar AccessiblePlatformState) {
616
617	XGtkAccessibleUpdatePlatformState(x.GoPointer(), StateVar)
618
619}
620
621// Updates a list of accessible properties.
622//
623// See the [enum@Gtk.AccessibleProperty] documentation for the
624// value types of accessible properties.
625//
626// This function should be called by `GtkWidget` types whenever
627// an accessible property change must be communicated to assistive
628// technologies.
629//
630// Example:
631// ```c
632// value = gtk_adjustment_get_value (adjustment);
633// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
634//
635//	GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
636//	-1);
637//
638// ```
639func (x *Expander) UpdateProperty(FirstPropertyVar AccessibleProperty, varArgs ...interface{}) {
640
641	XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
642
643}
644
645// Updates an array of accessible properties.
646//
647// This function should be called by `GtkWidget` types whenever an accessible
648// property change must be communicated to assistive technologies.
649//
650// This function is meant to be used by language bindings.
651func (x *Expander) UpdatePropertyValue(NPropertiesVar int, PropertiesVar []AccessibleProperty, ValuesVar []gobject.Value) {
652
653	XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
654
655}
656
657// Updates a list of accessible relations.
658//
659// This function should be called by `GtkWidget` types whenever an accessible
660// relation change must be communicated to assistive technologies.
661//
662// If the [enum@Gtk.AccessibleRelation] requires a list of references,
663// you should pass each reference individually, followed by `NULL`, e.g.
664//
665// ```c
666// gtk_accessible_update_relation (accessible,
667//
668//	GTK_ACCESSIBLE_RELATION_CONTROLS,
669//	  ref1, NULL,
670//	GTK_ACCESSIBLE_RELATION_LABELLED_BY,
671//	  ref1, ref2, ref3, NULL,
672//	-1);
673//
674// ```
675func (x *Expander) UpdateRelation(FirstRelationVar AccessibleRelation, varArgs ...interface{}) {
676
677	XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
678
679}
680
681// Updates an array of accessible relations.
682//
683// This function should be called by `GtkWidget` types whenever an accessible
684// relation change must be communicated to assistive technologies.
685//
686// This function is meant to be used by language bindings.
687func (x *Expander) UpdateRelationValue(NRelationsVar int, RelationsVar []AccessibleRelation, ValuesVar []gobject.Value) {
688
689	XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
690
691}
692
693// Updates a list of accessible states.
694//
695// See the [enum@Gtk.AccessibleState] documentation for the
696// value types of accessible states.
697//
698// This function should be called by `GtkWidget` types whenever
699// an accessible state change must be communicated to assistive
700// technologies.
701//
702// Example:
703//
704// ```c
705// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
706// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
707//
708//	GTK_ACCESSIBLE_STATE_CHECKED, value,
709//	-1);
710//
711// ```
712func (x *Expander) UpdateState(FirstStateVar AccessibleState, varArgs ...interface{}) {
713
714	XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
715
716}
717
718// Updates an array of accessible states.
719//
720// This function should be called by `GtkWidget` types whenever an accessible
721// state change must be communicated to assistive technologies.
722//
723// This function is meant to be used by language bindings.
724func (x *Expander) UpdateStateValue(NStatesVar int, StatesVar []AccessibleState, ValuesVar []gobject.Value) {
725
726	XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
727
728}
729
730// Gets the ID of the @buildable object.
731//
732// `GtkBuilder` sets the name based on the ID attribute
733// of the `<object>` tag used to construct the @buildable.
734func (x *Expander) GetBuildableId() string {
735
736	cret := XGtkBuildableGetBuildableId(x.GoPointer())
737	return cret
738}
739
740func init() {
741	core.SetPackageName("GTK", "gtk4")
742	core.SetSharedLibraries("GTK", []string{"libgtk-4.so.1"})
743	var libs []uintptr
744	for _, libPath := range core.GetPaths("GTK") {
745		lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL)
746		if err != nil {
747			panic(err)
748		}
749		libs = append(libs, lib)
750	}
751
752	core.PuregoSafeRegister(&xExpanderGLibType, libs, "gtk_expander_get_type")
753
754	core.PuregoSafeRegister(&xNewExpander, libs, "gtk_expander_new")
755	core.PuregoSafeRegister(&xNewExpanderWithMnemonic, libs, "gtk_expander_new_with_mnemonic")
756
757	core.PuregoSafeRegister(&xExpanderGetChild, libs, "gtk_expander_get_child")
758	core.PuregoSafeRegister(&xExpanderGetExpanded, libs, "gtk_expander_get_expanded")
759	core.PuregoSafeRegister(&xExpanderGetLabel, libs, "gtk_expander_get_label")
760	core.PuregoSafeRegister(&xExpanderGetLabelWidget, libs, "gtk_expander_get_label_widget")
761	core.PuregoSafeRegister(&xExpanderGetResizeToplevel, libs, "gtk_expander_get_resize_toplevel")
762	core.PuregoSafeRegister(&xExpanderGetUseMarkup, libs, "gtk_expander_get_use_markup")
763	core.PuregoSafeRegister(&xExpanderGetUseUnderline, libs, "gtk_expander_get_use_underline")
764	core.PuregoSafeRegister(&xExpanderSetChild, libs, "gtk_expander_set_child")
765	core.PuregoSafeRegister(&xExpanderSetExpanded, libs, "gtk_expander_set_expanded")
766	core.PuregoSafeRegister(&xExpanderSetLabel, libs, "gtk_expander_set_label")
767	core.PuregoSafeRegister(&xExpanderSetLabelWidget, libs, "gtk_expander_set_label_widget")
768	core.PuregoSafeRegister(&xExpanderSetResizeToplevel, libs, "gtk_expander_set_resize_toplevel")
769	core.PuregoSafeRegister(&xExpanderSetUseMarkup, libs, "gtk_expander_set_use_markup")
770	core.PuregoSafeRegister(&xExpanderSetUseUnderline, libs, "gtk_expander_set_use_underline")
771
772}

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 102

↑↓ moveenter openesc close