Revision: 2426 http://vexi.svn.sourceforge.net/vexi/?rev=2426&view=rev Author: clrg Date: 2007-10-11 05:39:28 -0700 (Thu, 11 Oct 2007)
Log Message: ----------- A few fixes for menus relating to behaviour when open Modified Paths: -------------- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/menu.t trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/menuitem.t trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/submenu.t Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/menu.t =================================================================== --- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/menu.t 2007-10-11 12:02:07 UTC (rev 2425) +++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/menu.t 2007-10-11 12:39:28 UTC (rev 2426) @@ -36,8 +36,14 @@ cascade = v; v.Children ++= function(c) { if (c != null) { - if (itemgroup) c.group = itemgroup; - else itemgroup = c.group; + if (itemgroup) { + c.group = itemgroup; + v.Leave ++= function(v) { + var s = itemgroup.selected; + if (s and !s.popped) s.selected = false; + cascade = v; + } + } else itemgroup = c.group; c.action ++= childActionWrite; } else { var _c = v[trapname]; @@ -57,18 +63,14 @@ thisbox.Enter ++= static.enterWrite; thisbox.KeyPressed ++= static.keypressWrite; thisbox.KeyReleased ++= static.keyreleaseWrite; - thisbox.Leave ++= static.leaveWrite; thisbox.Press1 ++= static.pressWrite; </ui:box> /** become active menu on Enter */ - static.enterWrite = function(v) { trapee.selected = true; cascade = v; } - - /** deselect (become inactive) if not popped */ - static.leaveWrite = function(v) { + static.enterWrite = function(v) { var t = trapee; - if (!t.popped and t.selected) t.selected = false; + if (t.enabled and !t.selected) t.selected = true; cascade = v; } @@ -127,15 +129,15 @@ } /** selected write trap */ - static.selectedWrite = function(v) { - cascade = v; + static.selectedWrite = function(v) { // reduce lookups var t = trapee; var g = t.group; if (v) { if (g and g.selected and g.selected.popped) t.popup = true; - } else t.popdown = true; + } else t.popdown = true; + cascade = v; } /** prevent Press events from reaching surface */ Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/menuitem.t =================================================================== --- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/menuitem.t 2007-10-11 12:02:07 UTC (rev 2425) +++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/menuitem.t 2007-10-11 12:39:28 UTC (rev 2426) @@ -18,7 +18,18 @@ </ui:box> - static.enterWrite = function(v) { trapee.selected = true; cascade = v; } - static.leaveWrite = function(v) { trapee.selected = false; cascade = v; } + /** become active menuitem on Enter */ + static.enterWrite = function(v) { + var t = trapee; + if (t.enabled and !t.selected) t.selected = true; + cascade = v; + } + /** deselect (become inactive) if active */ + static.leaveWrite = function(v) { + var t = trapee; + if (t.selected) t.selected = false; + cascade = v; + } + </vexi> Modified: trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/submenu.t =================================================================== --- trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/submenu.t 2007-10-11 12:02:07 UTC (rev 2425) +++ trunk/widgets/org.vexi.widgets/src/org/vexi/lib/widget/submenu.t 2007-10-11 12:39:28 UTC (rev 2426) @@ -11,6 +11,7 @@ <ui:box> thisbox.action = null; + thisbox.enabled = true; thisbox.itemgroup = null; thisbox.level = 1; thisbox.mnemoic = null; @@ -39,8 +40,14 @@ cascade = v; v.Children ++= function(c) { if (c != null) { - if (itemgroup) c.group = itemgroup; - else itemgroup = c.group; + if (itemgroup) { + c.group = itemgroup; + v.Leave ++= function(v) { + var s = itemgroup.selected; + if (s and !s.popped) s.selected = false; + cascade = v; + } + } else itemgroup = c.group; c.action ++= childActionWrite; c.level = level+1; } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Vexi-svn mailing list Vexi-svn@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/vexi-svn