42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package config
|
|
|
|
import "time"
|
|
import "git.tebibyte.media/sashakoshka/tomo"
|
|
|
|
// Default specifies default configuration values.
|
|
type Default struct { }
|
|
|
|
|
|
// ScrollVelocity returns the default scroll velocity value.
|
|
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.
|
|
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 { } }
|
|
return
|
|
}
|