summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-12-28 00:30:37 +0800
committerruki <[email protected]>2017-12-27 21:03:47 +0800
commitf37f8f9a1588348b042b1df69a805dc614f0fbbc (patch)
tree58dca219d616e997096bdc9383b7192f7c5345a8
parentba9ff696b98908ec469c463ccdb7a313bb56c04a (diff)
improve group select
-rw-r--r--xmake/core/ui/button.lua12
-rw-r--r--xmake/core/ui/group.lua47
2 files changed, 41 insertions, 18 deletions
diff --git a/xmake/core/ui/button.lua b/xmake/core/ui/button.lua
index 22413a83c..92f5f8894 100644
--- a/xmake/core/ui/button.lua
+++ b/xmake/core/ui/button.lua
@@ -43,5 +43,17 @@ function button:init(name, bounds, text)
self:cursor_show(true)
end
+-- set state
+function button:state_set(name, enable)
+
+ -- set label state
+ label.state_set(self, name, enable)
+
+ -- the focused text and background attribute
+ if name == "focused" then
+ -- TODO
+ end
+end
+
-- return module
return button
diff --git a/xmake/core/ui/group.lua b/xmake/core/ui/group.lua
index 61ce7f8d7..5315b1b4e 100644
--- a/xmake/core/ui/group.lua
+++ b/xmake/core/ui/group.lua
@@ -198,7 +198,7 @@ function group:select(v)
end
-- select the next view
-function group:select_next(forward, start)
+function group:select_next(start)
-- is empty?
if self:empty() then
@@ -208,25 +208,36 @@ function group:select_next(forward, start)
-- get current view
local current = start or self:current() or self:first()
- -- forward?
- if forward then
- local next = self:next(current)
- while next ~= current do
- if next:option("selectable") and next:state("visible") then
- self:select(next)
- break
- end
- next = self:next(next)
+ -- select the next view
+ local next = self:next(current)
+ while next ~= current do
+ if next:option("selectable") and next:state("visible") then
+ self:select(next)
+ break
end
- else
- local prev = self:prev(current)
- while prev ~= current do
- if prev:option("selectable") and prev:state("visible") then
- self:select(prev)
- break
- end
- prev = self:prev(prev)
+ next = self:next(next)
+ end
+end
+
+-- select the previous view
+function group:select_prev(start)
+
+ -- is empty?
+ if self:empty() then
+ return
+ end
+
+ -- get current view
+ local current = start or self:current() or self:first()
+
+ -- select the previous view
+ local prev = self:prev(current)
+ while prev ~= current do
+ if prev:option("selectable") and prev:state("visible") then
+ self:select(prev)
+ break
end
+ prev = self:prev(prev)
end
end