Added double click delay to config

This commit is contained in:
Sasha Koshka 2023-03-31 14:02:56 -04:00
parent c7cd944ae2
commit 03dfcf02bf
4 changed files with 25 additions and 3 deletions

View File

@ -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
}

View File

@ -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 { } }

View File

@ -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) {

View File

@ -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()
}