[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