[tekui-devel] tekui: Window, PopItem: Active=false is now a special notificati...

Timm S. Mueller tmueller at neoscientists.org
Wed Mar 19 18:41:01 CET 2008


details:   http://hg.teklib.org/tekui/rev/6d94190dea59
changeset: 372:6d94190dea59
user:      Timm S. Mueller <tmueller at neoscientists.org>
date:      Wed Mar 19 03:26:05 2008 +0100
description:
Window, PopItem: Active=false is now a special notification caused by LMB
released over an element that hasn't been activated before - replaces the
"LeftUp" notification; Slider: Mode="touch"; Gadget: added setHover() and
setActive() as notification handlers; Area: added preliminary setState()

diffs (truncated from 281 to 100 lines):

diff -r f99f27868aef -r 6d94190dea59 tek/class/ui/area.lua
--- a/tek/class/ui/area.lua	Wed Mar 19 00:19:51 2008 +0100
+++ b/tek/class/ui/area.lua	Wed Mar 19 03:26:05 2008 +0100
@@ -75,6 +75,7 @@ function Area:setupDisplay(display, draw
 	self.Drawable = drawable
 	self.DamageRegion = false
 	self:calcOffsets()
+	self:setState()
 	return true
 end
 
@@ -273,6 +274,7 @@ function Area:draw(bgpen)
 function Area:draw(bgpen)
 	local d = self.Drawable
 	bgpen = bgpen or d.Pens[self.BackPen or ui.PEN_AREABACK]
+-- 	bgpen = d.Pens[self.Background]
 	local dr = self.DamageRegion
 	if dr then
 		-- repaint intra-area damagerects:
@@ -361,3 +363,26 @@ end
 
 function Area:checkFocus()
 end
+
+-------------------------------------------------------------------------------
+--	setState:
+-------------------------------------------------------------------------------
+
+function Area:setState()
+
+	local s = self.State or "neutral"
+	local p = self.Drawable.Pens
+
+	if s == "neutral" then
+		self.Background = ui.PEN_AREABACK
+	elseif s == "hilite" then
+		self.Background = ui.PEN_BUTTONOVER
+	elseif s == "selected" then
+		self.Background = ui.PEN_BUTTONACTIVE
+	elseif s == "disabled" then
+		self.Background = ui.PEN_BUTTONDISABLED
+	end
+
+	self.Redraw = true
+end
+
diff -r f99f27868aef -r 6d94190dea59 tek/class/ui/gadget.lua
--- a/tek/class/ui/gadget.lua	Wed Mar 19 00:19:51 2008 +0100
+++ b/tek/class/ui/gadget.lua	Wed Mar 19 03:26:05 2008 +0100
@@ -38,44 +38,11 @@ local Gadget = _M
 -- local DEF_BORDERSTYLE = nil -- use frame default
 local DEF_IBORDERSTYLE = "button"
 
--- local NOTIFY_ONHOLD = { ui.NOTIFY_SELF, "onHold" }
--- local NOTIFY_TOGGLESELECT = { ui.NOTIFY_SELF, "setSelected" }
--- local NOTIFY_SELECT = { ui.NOTIFY_SELF, "setValue", "Selected",
--- 	ui.NOTIFY_VALUE }
-
-
 local NOTIFY_REDRAW = { ui.NOTIFY_SELF, "setValue", "Redraw", true }
 local NOTIFY_ONPRESS = { ui.NOTIFY_SELF, "onPress" }
 local NOTIFY_ONRELEASE = { ui.NOTIFY_SELF, "onRelease" }
-
-local NOTIFY_HOVER = { ui.NOTIFY_SELF, function(self)
-	if self.Mode == "button" then
-		self:setValue("Selected", self.Active and self.Hover)
-	end
-	self:setValue("Hilite", self.Hover)
-end }
-
-local NOTIFY_ACTIVE = { ui.NOTIFY_SELF, function(self)
-	if self.Mode == "toggle" then
-		if self.Active then
-			self:setValue("Pressed", true)
-			self:setValue("Selected", not self.Selected)
-		end
-	elseif self.Mode == "touch" then
-		if self.Active then
-			self:setValue("Pressed", true)
-			self:setValue("Selected", true)
-		end
-	elseif self.Mode == "button" then
-		if not self.Selected and self.Active then
-			self:setValue("Pressed", true)
-		elseif self.Selected and not self.Active then
-			self:setValue("Pressed", false)
-		end
-		self:setValue("Selected", self.Active and self.Hover)
-	end
-	self:setValue("Hilite", self.Hover)
-end }
+local NOTIFY_HOVER = { ui.NOTIFY_SELF, "setHover" }
+local NOTIFY_ACTIVE = { ui.NOTIFY_SELF, "setActive" }
 
 -------------------------------------------------------------------------------
 --	new:
@@ -93,27 +60,13 @@ end
 
 function Gadget:connectGlobal(app, window)
 	Frame.connectGlobal(self, app, window)


More information about the tekui-devel mailing list