Added double click delay to config
This commit is contained in:
parent
c7cd944ae2
commit
03dfcf02bf
@ -1,8 +1,14 @@
|
||||
package tomo
|
||||
|
||||
import "time"
|
||||
|
||||
// Config can return global configuration parameters.
|
||||
type Config interface {
|
||||
// ScrollVelocity returns how many pixels should be scrolled every time
|
||||
// a scroll button is pressed.
|
||||
ScrollVelocity () int
|
||||
|
||||
// DoubleClickDelay returns the maximum delay between two clicks for
|
||||
// them to be registered as a double click.
|
||||
DoubleClickDelay () time.Duration
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package config
|
||||
|
||||
import "time"
|
||||
import "git.tebibyte.media/sashakoshka/tomo"
|
||||
|
||||
// Default specifies default configuration values.
|
||||
@ -11,17 +12,28 @@ func (Default) ScrollVelocity () int {
|
||||
return 16
|
||||
}
|
||||
|
||||
// DoubleClickDelay returns the default double click delay.
|
||||
func (Default) DoubleClickDelay () time.Duration {
|
||||
return time.Second / 2
|
||||
}
|
||||
|
||||
// Wrapped wraps a configuration and uses Default if it is nil.
|
||||
type Wrapped struct {
|
||||
tomo.Config
|
||||
}
|
||||
|
||||
// ScrollVelocity returns how many pixels should be scrolled every time
|
||||
// a scroll button is pressed.
|
||||
// ScrollVelocity returns how many pixels should be scrolled every time a scroll
|
||||
// button is pressed.
|
||||
func (wrapped Wrapped) ScrollVelocity () int {
|
||||
return wrapped.ensure().ScrollVelocity()
|
||||
}
|
||||
|
||||
// DoubleClickDelay returns the maximum delay between two clicks for them to be
|
||||
// registered as a double click.
|
||||
func (wrapped Wrapped) DoubleClickDelay () time.Duration {
|
||||
return wrapped.ensure().DoubleClickDelay()
|
||||
}
|
||||
|
||||
func (wrapped Wrapped) ensure () (real tomo.Config) {
|
||||
real = wrapped.Config
|
||||
if real == nil { real = Default { } }
|
||||
|
@ -238,6 +238,10 @@ func (element *Directory) partition () {
|
||||
}
|
||||
}
|
||||
|
||||
func (element *Directory) Window () tomo.Window {
|
||||
return element.core.Window()
|
||||
}
|
||||
|
||||
// NotifyMinimumSizeChange notifies the container that the minimum size of a
|
||||
// child element has changed.
|
||||
func (element *Directory) NotifyMinimumSizeChange (child tomo.Element) {
|
||||
|
@ -132,7 +132,7 @@ func (element *File) HandleMouseUp (x, y int, button input.Button) {
|
||||
element.pressed = false
|
||||
within := image.Point { x, y }.
|
||||
In(element.Bounds())
|
||||
if time.Since(element.lastClick) < time.Second / 2 {
|
||||
if time.Since(element.lastClick) < element.config.DoubleClickDelay() {
|
||||
if element.Enabled() && within && element.onChoose != nil {
|
||||
element.onChoose()
|
||||
}
|
||||
|
Reference in New Issue
Block a user