-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwindow-input.go
125 lines (104 loc) · 2.32 KB
/
window-input.go
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package main
// Figure out what option item user clicked
func handleOptions(input XYs, window *windowData) bool {
defer reportPanic("handleOptions")
windowsLock.Lock()
defer windowsLock.Unlock()
originX := window.position.X
originY := window.position.Y
for i, item := range settingItems {
b := optionWindowButtons[i]
if PosWithinRect(
XY{X: uint32(input.X - originX),
Y: uint32(input.Y - originY)}, b, 1) {
if (WASMMode && !item.wasmExclude) || !WASMMode {
item.action(i)
saveOptions()
window.dirty = true
mouseHeld = false
return true
}
}
}
return false
}
func handleHelpWindow(input XYs, window *windowData) bool {
defer reportPanic("handleHelpWindow")
windowsLock.Lock()
defer windowsLock.Unlock()
if !mouseHeld {
return false
}
originX := window.position.X
originY := window.position.Y
for i := range updateWindowButtons {
b := updateWindowButtons[i]
if PosWithinRect(
XY{X: uint32(input.X - originX),
Y: uint32(input.Y - originY)}, b, 1) {
return true
}
}
return false
}
func handleLoginWindow(input XYs, window *windowData) bool {
defer reportPanic("handleLoginWindow")
windowsLock.Lock()
defer windowsLock.Unlock()
if !mouseHeld {
return false
}
originX := window.position.X
originY := window.position.Y
for i := range updateWindowButtons {
b := updateWindowButtons[i]
if PosWithinRect(
XY{X: uint32(input.X - originX),
Y: uint32(input.Y - originY)}, b, 1) {
return true
}
}
return false
}
func handleLoginKeys(input []rune, window *windowData, delete, enter bool) bool {
ilen := len(input)
window.dirty = true
if login.selected == SELECTED_LOGIN {
if enter {
login.selected = SELECTED_PASSWORD
return true
}
llen := len(login.login)
if delete {
if llen > 0 {
login.login = login.login[:llen-1]
return true
}
}
if ilen > 0 {
login.login = append(login.login, input[0])
return true
}
} else if login.selected == SELECTED_PASSWORD {
if enter {
login.selected = SELECTED_GO
return true
}
if delete {
llen := len(login.password)
if llen > 0 {
login.login = login.password[:llen-1]
return true
}
}
if ilen > 0 {
login.password = append(login.password, input[0])
return true
}
} else if login.selected == SELECTED_GO {
if enter {
//login
}
}
return false
}