[tekui-devel] tekui: added doubleclick notification
Timm S. Mueller
tmueller at neoscientists.org
Tue Apr 22 20:02:31 CEST 2008
details: http://hg.teklib.org/tekui/rev/bc5bab348954
changeset: 440:bc5bab348954
user: Timm S. Mueller <tmueller at neoscientists.org>
date: Tue Apr 22 13:36:42 2008 +0200
description:
added doubleclick notification
diffs (truncated from 124 to 100 lines):
diff -r 9fb41dbce319 -r bc5bab348954 tek/class/ui/gadget.lua
--- a/tek/class/ui/gadget.lua Tue Apr 22 01:16:41 2008 +0200
+++ b/tek/class/ui/gadget.lua Tue Apr 22 13:36:42 2008 +0200
@@ -20,7 +20,7 @@ local Frame = ui.Frame
local Frame = ui.Frame
module("tek.class.ui.gadget", tek.class.ui.frame)
-_VERSION = "Gadget 4.0"
+_VERSION = "Gadget 4.1"
local Gadget = _M
@@ -41,6 +41,8 @@ function Gadget.init(self)
function Gadget.init(self)
-- Element has been activated:
self.Active = false
+ -- Element has been doubleclicked (or double-activated):
+ self.DblClick = false
-- Element is being held:
self.Hold = false
-- The pointer is hovering over the element:
@@ -129,21 +131,24 @@ function Gadget:setActive(active)
else
self.Active = active
end
- local mode, selected, hover = self.Mode, self.Selected, self.Hover
+ local mode, selected = self.Mode, self.Selected
if mode == "toggle" then
if active then
self:setValue("Selected", not selected)
self:setValue("Pressed", true)
+ self.Window:setDblClickElement(self)
end
elseif mode == "touch" then
if active and not selected then
self:setValue("Selected", true)
self:setValue("Pressed", true)
+ self.Window:setDblClickElement(self)
end
elseif mode == "button" then
- self:setValue("Selected", active and hover)
+ self:setValue("Selected", active and self.Hover)
if not selected ~= not active then
self:setValue("Pressed", active)
+ self.Window:setDblClickElement(active and self)
end
end
self:setState()
diff -r 9fb41dbce319 -r bc5bab348954 tek/class/ui/window.lua
--- a/tek/class/ui/window.lua Tue Apr 22 01:16:41 2008 +0200
+++ b/tek/class/ui/window.lua Tue Apr 22 13:36:42 2008 +0200
@@ -26,7 +26,7 @@ local unpack = unpack
local unpack = unpack
module("tek.class.ui.window", tek.class.ui.group)
-_VERSION = "Window 1.40"
+_VERSION = "Window 1.41"
-------------------------------------------------------------------------------
-- Constants & Class data:
@@ -48,8 +48,9 @@ function Window.init(self)
self.ActivePopup = false
self.CanvasStack = { }
self.CopyArea = { }
+ self.DblClickCheckElement = false
self.DblClickElement = false
- self.DblClickTime = false
+ self.DblClickCheckTime = false
self.DelayedBeginPopup = false
self.DelayedEndPopup = false
self.FocusElement = false
@@ -522,17 +523,32 @@ function Window:setActiveElement(e, noti
self.HoldTicksActive = self.HoldTicksInitFirst
self.HoldTicksActiveInit = self.HoldTicksInitFirst
e:setValue("Active", true, notify)
- -- doubleclick:
- local t = self.Display:getTime()
- local de = self.DblClickElement
- if de then
- if t - self.DblClickTime < 0.2 then
- db.warn("DOUBLECLICK")
- end
- end
- self.DblClickTime = t
- self.DblClickElement = e
- end
+ end
+ end
+end
+
+-------------------------------------------------------------------------------
+-- setDblClickElement(element[, notify]): Sets/unsets the element which is
+-- slated for doubleclick detection.
+-------------------------------------------------------------------------------
+
+function Window:setDblClickElement(e, notify)
+ local de = self.DblClickElement
+ if de then
+ de:setValue("DblClick", false, notify)
+ self.DblClickElement = false
More information about the tekui-devel
mailing list