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

Reply via email to