File: layer.go

package info (click to toggle)
golang-github-dlasky-gotk3-layershell 0.0~git20230801.b0c42cd-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,132 kB
  • sloc: makefile: 3
file content (94 lines) | stat: -rw-r--r-- 2,289 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package layershell

// #cgo pkg-config: gtk+-3.0 gtk-layer-shell-0
// #include <gtk/gtk.h>
// #include "gtk-layer-shell.h"
import "C"
import (
	"github.com/gotk3/gotk3/gdk"
	"github.com/gotk3/gotk3/gtk"
	"unsafe"
)

type LayerShellEdgeFlags int

const (
	LAYER_SHELL_EDGE_LEFT   LayerShellEdgeFlags = iota
	LAYER_SHELL_EDGE_RIGHT
	LAYER_SHELL_EDGE_TOP
	LAYER_SHELL_EDGE_BOTTOM
)

type LayerShellLayerFlags int

const (
	LAYER_SHELL_LAYER_BACKGROUND LayerShellLayerFlags = iota
	LAYER_SHELL_LAYER_BOTTOM
	LAYER_SHELL_LAYER_TOP
	LAYER_SHELL_LAYER_OVERLAY    
)

type LayerShellKeyboardMode int

const (
	LAYER_SHELL_KEYBOARD_MODE_NONE LayerShellKeyboardMode= iota
	LAYER_SHELL_KEYBOARD_MODE_EXCLUSIVE
	LAYER_SHELL_KEYBOARD_MODE_ON_DEMAND
	LAYER_SHELL_KEYBOARD_MODE_ENTRY_NUMBER
)

func nativeWindow(window *gtk.Window) *C.GtkWindow {
	w := window.Native()
	wp := (*C.GtkWindow)(unsafe.Pointer(w))
	return wp;
}

func nativeMonitor(monitor *gdk.Monitor) *C.GdkMonitor {
	m := monitor.Native()
	mp := (*C.GdkMonitor)(unsafe.Pointer(m))
	return mp;
}

func boolConv(b bool) C.int {
	if (b) { return C.int(1)}
	return C.int(0)
}

func InitForWindow(window *gtk.Window) {
	w := nativeWindow(window);
	C.gtk_layer_init_for_window(w)
}

func SetLayer(window *gtk.Window, layer LayerShellLayerFlags) {
	w := nativeWindow(window)
	C.gtk_layer_set_layer(w, C.GtkLayerShellLayer(layer))
}

func AutoExclusiveZoneEnable(window *gtk.Window) {
	w := nativeWindow(window)
	C.gtk_layer_auto_exclusive_zone_enable(w)
}

func SetExclusiveZone(window *gtk.Window, size int) {
	w := nativeWindow(window)
	C.gtk_layer_set_exclusive_zone(w, C.int(size))
}

func SetAnchor(window *gtk.Window, side LayerShellEdgeFlags, pinned bool) {
	w := nativeWindow(window)
	C.gtk_layer_set_anchor(w, C.GtkLayerShellEdge(side), boolConv(pinned))
}

func SetMargin(window *gtk.Window, side LayerShellEdgeFlags, margin int) {
	w := nativeWindow(window)
	C.gtk_layer_set_margin(w, C.GtkLayerShellEdge(side), C.int(margin))
}

func SetMonitor(window *gtk.Window, monitor *gdk.Monitor) {
	C.gtk_layer_set_monitor(nativeWindow(window), nativeMonitor(monitor))
}

func SetKeyboardMode(window *gtk.Window, mode LayerShellKeyboardMode) {
	w := nativeWindow(window)
	C.gtk_layer_set_keyboard_mode(w, C.GtkLayerShellKeyboardMode(mode))
}