More go fmt.
This commit is contained in:
parent
a9a07c5cc8
commit
66f9f13ca2
|
@ -24,32 +24,32 @@ TODO - technically a GDK_BUTTON_3PRESS is detected in half the time as a GDK_BUT
|
||||||
// the zero value is a reset clickCounter ready for use
|
// the zero value is a reset clickCounter ready for use
|
||||||
// it doesn't matter that all the non-count fields are zero: the first click will fail the curButton test straightaway, so it'll return 1 and set the rest of the structure accordingly
|
// it doesn't matter that all the non-count fields are zero: the first click will fail the curButton test straightaway, so it'll return 1 and set the rest of the structure accordingly
|
||||||
type clickCounter struct {
|
type clickCounter struct {
|
||||||
curButton uint
|
curButton uint
|
||||||
rect image.Rectangle
|
rect image.Rectangle
|
||||||
prevTime uintptr
|
prevTime uintptr
|
||||||
count uint
|
count uint
|
||||||
}
|
}
|
||||||
|
|
||||||
// x, y, xdist, ydist, and c.rect must have the same units
|
// x, y, xdist, ydist, and c.rect must have the same units
|
||||||
// so must time, maxTime, and c.prevTime
|
// so must time, maxTime, and c.prevTime
|
||||||
func (c *clickCounter) click(button uint, x int, y int, time uintptr, maxTime uintptr, xdist int, ydist int) uint {
|
func (c *clickCounter) click(button uint, x int, y int, time uintptr, maxTime uintptr, xdist int, ydist int) uint {
|
||||||
if button != c.curButton { // different button; start over
|
if button != c.curButton { // different button; start over
|
||||||
c.count = 0
|
c.count = 0
|
||||||
}
|
}
|
||||||
if !image.Pt(x, y).In(c.rect) { // not in the allowed region for a double-click; don't count
|
if !image.Pt(x, y).In(c.rect) { // not in the allowed region for a double-click; don't count
|
||||||
c.count = 0
|
c.count = 0
|
||||||
}
|
}
|
||||||
if (time - c.prevTime) > maxTime { // too slow; don't count
|
if (time - c.prevTime) > maxTime { // too slow; don't count
|
||||||
// note the above expression; time > (c.prevTime + maxTime) can overflow!
|
// note the above expression; time > (c.prevTime + maxTime) can overflow!
|
||||||
c.count = 0
|
c.count = 0
|
||||||
}
|
}
|
||||||
c.count++ // if either of the above ifs happened, this will make the click count 1; otherwise it will make the click count 2, 3, 4, 5, ...
|
c.count++ // if either of the above ifs happened, this will make the click count 1; otherwise it will make the click count 2, 3, 4, 5, ...
|
||||||
|
|
||||||
// now we need to update the internal structures for the next test
|
// now we need to update the internal structures for the next test
|
||||||
c.curButton = button
|
c.curButton = button
|
||||||
c.prevTime = time
|
c.prevTime = time
|
||||||
c.rect = image.Rect(x - xdist, y - ydist,
|
c.rect = image.Rect(x-xdist, y-ydist,
|
||||||
x + xdist, y + ydist)
|
x+xdist, y+ydist)
|
||||||
|
|
||||||
return c.count
|
return c.count
|
||||||
}
|
}
|
||||||
|
@ -74,71 +74,71 @@ Because GTK+ keysyms may or may not obey Num Lock, we also handle the 0-9 and .
|
||||||
|
|
||||||
// use uintptr to be safe; the size of the scancode/hardware key code field on each platform is different
|
// use uintptr to be safe; the size of the scancode/hardware key code field on each platform is different
|
||||||
var scancodeKeys = map[uintptr]byte{
|
var scancodeKeys = map[uintptr]byte{
|
||||||
0x02: '1',
|
0x02: '1',
|
||||||
0x03: '2',
|
0x03: '2',
|
||||||
0x04: '3',
|
0x04: '3',
|
||||||
0x05: '4',
|
0x05: '4',
|
||||||
0x06: '5',
|
0x06: '5',
|
||||||
0x07: '6',
|
0x07: '6',
|
||||||
0x08: '7',
|
0x08: '7',
|
||||||
0x09: '8',
|
0x09: '8',
|
||||||
0x0A: '9',
|
0x0A: '9',
|
||||||
0x0B: '0',
|
0x0B: '0',
|
||||||
0x0C: '-',
|
0x0C: '-',
|
||||||
0x0D: '=',
|
0x0D: '=',
|
||||||
0x0E: '\b', // seems to be safe on GTK+; TODO safe on windows?
|
0x0E: '\b', // seems to be safe on GTK+; TODO safe on windows?
|
||||||
0x0F: '\t', // seems to be safe on GTK+; TODO safe on windows?
|
0x0F: '\t', // seems to be safe on GTK+; TODO safe on windows?
|
||||||
0x10: 'q',
|
0x10: 'q',
|
||||||
0x11: 'w',
|
0x11: 'w',
|
||||||
0x12: 'e',
|
0x12: 'e',
|
||||||
0x13: 'r',
|
0x13: 'r',
|
||||||
0x14: 't',
|
0x14: 't',
|
||||||
0x15: 'y',
|
0x15: 'y',
|
||||||
0x16: 'u',
|
0x16: 'u',
|
||||||
0x17: 'i',
|
0x17: 'i',
|
||||||
0x18: 'o',
|
0x18: 'o',
|
||||||
0x19: 'p',
|
0x19: 'p',
|
||||||
0x1A: '[',
|
0x1A: '[',
|
||||||
0x1B: ']',
|
0x1B: ']',
|
||||||
0x1C: '\n', // seems to be safe on GTK+; TODO safe on windows?
|
0x1C: '\n', // seems to be safe on GTK+; TODO safe on windows?
|
||||||
0x1E: 'a',
|
0x1E: 'a',
|
||||||
0x1F: 's',
|
0x1F: 's',
|
||||||
0x20: 'd',
|
0x20: 'd',
|
||||||
0x21: 'f',
|
0x21: 'f',
|
||||||
0x22: 'g',
|
0x22: 'g',
|
||||||
0x23: 'h',
|
0x23: 'h',
|
||||||
0x24: 'j',
|
0x24: 'j',
|
||||||
0x25: 'k',
|
0x25: 'k',
|
||||||
0x26: 'l',
|
0x26: 'l',
|
||||||
0x27: ';',
|
0x27: ';',
|
||||||
0x28: '\'',
|
0x28: '\'',
|
||||||
0x29: '`',
|
0x29: '`',
|
||||||
0x2B: '\\',
|
0x2B: '\\',
|
||||||
0x2C: 'z',
|
0x2C: 'z',
|
||||||
0x2D: 'x',
|
0x2D: 'x',
|
||||||
0x2E: 'c',
|
0x2E: 'c',
|
||||||
0x2F: 'v',
|
0x2F: 'v',
|
||||||
0x30: 'b',
|
0x30: 'b',
|
||||||
0x31: 'n',
|
0x31: 'n',
|
||||||
0x32: 'm',
|
0x32: 'm',
|
||||||
0x33: ',',
|
0x33: ',',
|
||||||
0x34: '.',
|
0x34: '.',
|
||||||
0x35: '/',
|
0x35: '/',
|
||||||
0x39: ' ',
|
0x39: ' ',
|
||||||
}
|
}
|
||||||
|
|
||||||
var scancodeExtKeys = map[uintptr]ExtKey{
|
var scancodeExtKeys = map[uintptr]ExtKey{
|
||||||
0x47: N7,
|
0x47: N7,
|
||||||
0x48: N8,
|
0x48: N8,
|
||||||
0x49: N9,
|
0x49: N9,
|
||||||
0x4B: N4,
|
0x4B: N4,
|
||||||
0x4C: N5,
|
0x4C: N5,
|
||||||
0x4D: N6,
|
0x4D: N6,
|
||||||
0x4F: N1,
|
0x4F: N1,
|
||||||
0x50: N2,
|
0x50: N2,
|
||||||
0x51: N3,
|
0x51: N3,
|
||||||
0x52: N0,
|
0x52: N0,
|
||||||
0x53: NDot,
|
0x53: NDot,
|
||||||
}
|
}
|
||||||
|
|
||||||
func fromScancode(scancode uintptr) (ke KeyEvent, ok bool) {
|
func fromScancode(scancode uintptr) (ke KeyEvent, ok bool) {
|
||||||
|
|
34
grid.go
34
grid.go
|
@ -16,13 +16,13 @@ import (
|
||||||
// A stretchy Control implicitly fills its cell.
|
// A stretchy Control implicitly fills its cell.
|
||||||
// All cooridnates in a Grid are given in (row,column) form with (0,0) being the top-left cell.
|
// All cooridnates in a Grid are given in (row,column) form with (0,0) being the top-left cell.
|
||||||
type Grid struct {
|
type Grid struct {
|
||||||
lock sync.Mutex
|
lock sync.Mutex
|
||||||
created bool
|
created bool
|
||||||
controls [][]Control
|
controls [][]Control
|
||||||
filling [][]bool
|
filling [][]bool
|
||||||
stretchyrow, stretchycol int
|
stretchyrow, stretchycol int
|
||||||
widths, heights [][]int // caches to avoid reallocating each time
|
widths, heights [][]int // caches to avoid reallocating each time
|
||||||
rowheights, colwidths []int
|
rowheights, colwidths []int
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewGrid creates a new Grid with the given Controls.
|
// NewGrid creates a new Grid with the given Controls.
|
||||||
|
@ -34,7 +34,7 @@ type Grid struct {
|
||||||
// control10, control11, control12,
|
// control10, control11, control12,
|
||||||
// control20, control21, control22)
|
// control20, control21, control22)
|
||||||
func NewGrid(nPerRow int, controls ...Control) *Grid {
|
func NewGrid(nPerRow int, controls ...Control) *Grid {
|
||||||
if len(controls) % nPerRow != 0 {
|
if len(controls)%nPerRow != 0 {
|
||||||
panic(fmt.Errorf("incomplete grid given to NewGrid() (not enough controls to evenly divide %d controls into rows of %d controls each)", len(controls), nPerRow))
|
panic(fmt.Errorf("incomplete grid given to NewGrid() (not enough controls to evenly divide %d controls into rows of %d controls each)", len(controls), nPerRow))
|
||||||
}
|
}
|
||||||
nRows := len(controls) / nPerRow
|
nRows := len(controls) / nPerRow
|
||||||
|
@ -54,14 +54,14 @@ func NewGrid(nPerRow int, controls ...Control) *Grid {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return &Grid{
|
return &Grid{
|
||||||
controls: cc,
|
controls: cc,
|
||||||
filling: cf,
|
filling: cf,
|
||||||
stretchyrow: -1,
|
stretchyrow: -1,
|
||||||
stretchycol: -1,
|
stretchycol: -1,
|
||||||
widths: cw,
|
widths: cw,
|
||||||
heights: ch,
|
heights: ch,
|
||||||
rowheights: make([]int, nRows),
|
rowheights: make([]int, nRows),
|
||||||
colwidths: make([]int, nPerRow),
|
colwidths: make([]int, nPerRow),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ func (g *Grid) make(window *sysData) error {
|
||||||
// commit filling for the stretchy control now (see SetStretchy() above)
|
// commit filling for the stretchy control now (see SetStretchy() above)
|
||||||
if g.stretchyrow != -1 && g.stretchycol != -1 {
|
if g.stretchyrow != -1 && g.stretchycol != -1 {
|
||||||
g.filling[g.stretchyrow][g.stretchycol] = true
|
g.filling[g.stretchyrow][g.stretchycol] = true
|
||||||
} else if (g.stretchyrow == -1 && g.stretchycol != -1) || // sanity check
|
} else if (g.stretchyrow == -1 && g.stretchycol != -1) || // sanity check
|
||||||
(g.stretchyrow != -1 && g.stretchycol == -1) {
|
(g.stretchyrow != -1 && g.stretchycol == -1) {
|
||||||
panic(fmt.Errorf("internal inconsistency in Grid: stretchy (%d,%d) impossible (one component, not both, is -1/no stretchy control) in Grid.make()", g.stretchyrow, g.stretchycol))
|
panic(fmt.Errorf("internal inconsistency in Grid: stretchy (%d,%d) impossible (one component, not both, is -1/no stretchy control) in Grid.make()", g.stretchyrow, g.stretchycol))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue