Author: dda
Date: 2008-01-16 12:58:33 -0800 (Wed, 16 Jan 2008)
New Revision: 7841

Added:
   openlaszlo/branches/devildog/docs/src/developers/images/datarequest.png
Modified:
   openlaszlo/branches/devildog/
   openlaszlo/branches/devildog/3rd-party/index.html
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/LzTrace.lzs
   
openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as
   
openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/platform/dhtml/LzBrowser.js
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzInputText.lzs
   openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzText.lzs
   
openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
   
openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/parser/ASTIdentifier.java
   
openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
   openlaszlo/branches/devildog/docs/src/build.xml
   openlaszlo/branches/devildog/docs/src/developers/constraints.dbk
   openlaszlo/branches/devildog/docs/src/developers/doc-toolchain.dbk
   openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$9.lzx
   openlaszlo/branches/devildog/examples/components/style_example.html
   openlaszlo/branches/devildog/laszlo-explorer/coverpages/welcome/index.html
   openlaszlo/branches/devildog/lps/components/utils/layouts/simplelayout.lzx
   openlaszlo/branches/devildog/test/typevar.lzx
Log:
Merged revisions 7769-7840 via svnmerge from 
http://svn.openlaszlo.org/openlaszlo/trunk

.......
  r7775 | hqm | 2008-01-08 19:14:09 -0500 (Tue, 08 Jan 2008) | 28 lines
  
  Change 20080108-hqm-6 by [EMAIL PROTECTED] on 2008-01-08 17:21:21 EST
      in /cygdrive/c/users/hqm/openlaszlo/trunk/WEB-INF/lps/lfc
      for http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/lfc
  
  Summary:  fix for null-setter warning in lzloadlibrary
  
  New Features:
  
  Bugs Fixed: LPP-5189
  
  Technical Reviewer: andre
  QA Reviewer: ptw
  Doc Reviewer: 
  
  Documentation:
  
  Release Notes:
  
  Details:
      
  
  remove calls which used to apply to LzLibrary when it subclassed LzView 
  
  Tests:
  
  see bug report 
.......
  r7776 | max | 2008-01-08 21:59:23 -0500 (Tue, 08 Jan 2008) | 24 lines
  
  Change 20080106-maxcarlson-I by [EMAIL PROTECTED] on 2008-01-06 22:14:21 PST
      in /Users/maxcarlson/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fix URI-unescaping in DHTML to convert + to spaces 
  
  New Features:
  
  Bugs Fixed: LPP-5277 - LzBrowser.urlUnescape does not unescape + chars on 
DHTML environment
  
  Technical Reviewer: ptw
  QA Reviewer: promanik
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details: Convert + to ' ' before unescaping strings. 
      
  
  Tests: See LPP-5277
.......
  r7781 | lou | 2008-01-09 07:30:11 -0500 (Wed, 09 Jan 2008) | 15 lines
  
  Change 20080109-lou-3 by [EMAIL PROTECTED] on 2008-01-09 08:24:57 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: update welcome screen to 4.1
  
  New Features:
  
  Bugs Fixed: LPP-5334
  
  Technical Reviewer: (pending)
  QA Reviewer: Mayme Kratt
  Doc Reviewer: (pending)
.......
  r7783 | lou | 2008-01-09 11:18:34 -0500 (Wed, 09 Jan 2008) | 15 lines
  
  Change 20080109-lou-h by [EMAIL PROTECTED] on 2008-01-09 12:11:35 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix broken links in the dguide that were showing up as ???.
  
  Bugs Fixed: LPP-5342
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Tests: tested links
.......
  r7785 | lou | 2008-01-09 11:36:47 -0500 (Wed, 09 Jan 2008) | 12 lines
  
  Change 20080109-lou-o by [EMAIL PROTECTED] on 2008-01-09 12:29:11 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: add image for data provider chapter
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
.......
  r7786 | ptw | 2008-01-09 12:22:19 -0500 (Wed, 09 Jan 2008) | 21 lines
  
  Change 20080109-ptw-G by [EMAIL PROTECTED] on 2008-01-09 12:11:23 EST
      in /Users/ptw/OpenLaszlo/ringding-clean
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fixing a hole where the rain gets in
  
  Bugs Fixed:
  LPP-5337 'Multiframe resource assigned via $style within a view that is init 
stage late runs a bit and gets orphaned in onidle'
  
  Technical Reviewer: max (message://<[EMAIL PROTECTED]>)
  QA Reviewer: mdemmon (pending)
  
  Details:
      Consider the case where tracking is stopped before checkPlayStatus
      gets to run: Instead of using callOnIdle, which cannot be
      cancelled, register on onidle, so you can be cancelled.
  
  Tests:
      Test case from bug no longer leaves delegates on idle queue
.......
  r7788 | lou | 2008-01-09 14:19:48 -0500 (Wed, 09 Jan 2008) | 24 lines
  
  Change 20080109-lou-G by [EMAIL PROTECTED] on 2008-01-09 15:13:52 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: fix problem where the tutorials were not loading glyphs
  
  New Features:
  
  Bugs Fixed: LPP-5216
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details:
  because the tutorials are one directory level down from the dguide, the 
glyphs for
  conditionals such as DHTML, warning, etc. were not found.
  
  Modify build.xml to copy the glyphs directory (/includes) to the dguide where 
the
  tutorials can find them.
  
  Tests: verify visually
.......
  r7791 | hqm | 2008-01-09 16:02:32 -0500 (Wed, 09 Jan 2008) | 26 lines
  
  Change 20080109-hqm-6 by [EMAIL PROTECTED] on 2008-01-09 16:00:58 EST
      in /cygdrive/c/users/hqm/openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf
      for http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/lfc/kernel/swf
  
  Summary:  fix for debugging info from lzloader 
  
  New Features:
  
  Bugs Fixed: LPP-5314
  
  Technical Reviewer: andre (pending)
  QA Reviewer: ptw
  Doc Reviewer:
  
  Documentation:
  
  Release Notes:
  
  Details:
      
  get the url from the correct place when debug string is generated
  
  
  Tests:
.......
  r7793 | bargull | 2008-01-09 17:02:01 -0500 (Wed, 09 Jan 2008) | 35 lines
  
  Change 20080106-bargull-2 by [EMAIL PROTECTED] on 2008-01-06 17:19:46
      in /home/Admin/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Adding maxlength for multiline-inputtext (DHTML)
  
  New Features:
  
  Bugs Fixed: LPP-4747 - "Edittext maxlength does not work"
  
  Technical Reviewer: max
  QA Reviewer: promanik
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  The HTML-<textarea> object does not support maxlength natively, so we need to 
implement a js-solution for DHTML.
  To get the best visual experience, I'm using the "onkeypress"-event, this way 
we can easily interrupt any user-input as soon as the maxlength for the 
inputtext has been reached.
  As keyboard-events are handled quite differently across all supported 
browsers, I needed to add a couple of new quirks to LzSprite, but most of them 
should be self-explanatory (also see http://www.quirksmode.org/js/keys.html).
  
  Pasting text into an inputtext is special-handled to match Flash's behaviour 
as much as possible:
  - for IE/Safari, I'm simply using the "onbeforepaste"-event
  - for Firefox/Opera, I need to detect paste manually because these browsers 
do not support "onbeforepaste"
  Flash-behaviour: you can only paste that much chars, as you have still 
available in the inputtext.
  
  Changes in LzText and LzInputText fixes two "stale-data" bugs: you cannot use 
LzInputText#text to retrieve the current text-value, because this property does 
not get updated when the user types in any text. Instead of that, you must use 
LzInputText#getText().
  
  
  Tests:
  see bug-description
.......
  r7794 | bargull | 2008-01-09 18:43:03 -0500 (Wed, 09 Jan 2008) | 25 lines
  
  Change 20080106-bargull-0 by [EMAIL PROTECTED] on 2008-01-06 00:25:06
      in /home/Admin/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Fix simplelayout optimization-bug
  
  New Features:
  
  Bugs Fixed: LPP-3812 - "simplelayout does not correctly position views that 
are programmatically created"
  
  Technical Reviewer: promanik
  QA Reviewer: frisco
  Doc Reviewer: (pending)
  
  Documentation:
  
  Release Notes:
  
  Details:
  You need to take last visible subview to compute new layout-position. Just 
taking the last subview leads to a bug when this view is non-visible. Also 
fixed another bug, so now new layout-position correctly respects inset-property.
  
  
  Tests:
.......
  r7802 | ptw | 2008-01-10 14:26:48 -0500 (Thu, 10 Jan 2008) | 27 lines
  
  Change 20080109-ptw-h by [EMAIL PROTECTED] on 2008-01-09 19:27:19 EST
      in /Users/ptw/OpenLaszlo/ringding-clean
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Remove deprecation of datacontrolsvisibility
  
  Bugs Fixed:
  LPP-5066 '"datacontrolsvisibility" warning is out of date'
  
  Technical Reviewer: [EMAIL PROTECTED] (verbal)
  QA Reviewer: [EMAIL PROTECTED] (pending)
  Doc Reviewer: [EMAIL PROTECTED] (pending)
  
  Documentation:
  datacontrolsvisibility attribute of datapaths has been deprecated for
  2 major releases and now is uhsupported, it should be removed from the
  documentation.
  
  Details:
      Henry already removed it from the schema and warns that it is bad,
      so I just removed the (now redundant) deprecation.
  
  Tests:
      The test case now yields the following compiler warning:
      lpp-5066.lzx:3:57: found an unknown attribute named 
"datacontrolsvisibility" on element datapath, check the spelling of this 
attribute name
.......
  r7806 | dda | 2008-01-10 14:45:34 -0500 (Thu, 10 Jan 2008) | 38 lines
  
  Change 20080109-dda-l by [EMAIL PROTECTED] on 2008-01-09 16:00:35 EST
      in /Users/dda/laszlo/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Script compiler: Backported :* typing from devildog to trunk; added 
typing in 'for var in' statements.
  
  New Features: Any variable can be declared with :* (in addition to :typename 
as before).
  
  Bugs Fixed: LPP-5059
  
  Technical Reviewer: ptw (pending)
  QA Reviewer: hminsky (pending)
  Doc Reviewer: (pending)
  
  Documentation:
     Conforms with ECMAScript-4 draft standard.
  
  Release Notes:
  
  Details:
     One part of this change (:* types) is backported from devildog -
     the change was small and relatively independent and should have been
     made in trunk/RingDing before.
  
     The other part of this change is a small grammar change to allow
     typing in 'for var in' statements, like so:
       for (var:typename in xxx)
     or
       for (var:* in xxx)
     etc.
  
  Tests:
     smoketest
  
     Updated test/typevar.lzx to have a couple tests for 'for var in' and :*, 
which
     were not there before.
.......
  r7822 | lou | 2008-01-14 10:59:50 -0500 (Mon, 14 Jan 2008) | 23 lines
  
  Change 20080114-lou-Z by [EMAIL PROTECTED] on 2008-01-14 11:52:34 AST
      in /Users/lou/src/svn/openlaszlo/trunk
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: text was wrapping around example window badly.
  
  Bugs Fixed: LPP-5079
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: This is not really a bug, but a function of how wide the browser 
window is.
  If you make the browser window wide enough, the complete text appears to the 
right
  of the example window as designed.
  
  I did reduce the space between the example window and the text, so this is 
less likely
  to happen.
      
  
  Tests: visual check
.......
  r7828 | lou | 2008-01-14 14:21:33 -0500 (Mon, 14 Jan 2008) | 20 lines
  
  Change 20080114-lou-m by [EMAIL PROTECTED] on 2008-01-14 15:17:18 AST
      in /Users/lou/src/svn/openlaszlo/trunk/docs/src
      for http://svn.openlaszlo.org/openlaszlo/trunk/docs/src
  
  Summary: fixed example 37.7, manipulating datapointers, in the dguide
  
  New Features:
  
  Bugs Fixed: LPP-5293
  
  Technical Reviewer: (pending)
  QA Reviewer: (pending)
  Doc Reviewer: (pending)
  
  Details: revert to the 3.4 version of the example
      
  
  Tests: visual check
.......
  r7833 | ptw | 2008-01-15 09:40:47 -0500 (Tue, 15 Jan 2008) | 19 lines
  
  Change 20080115-ptw-k by [EMAIL PROTECTED] on 2008-01-15 09:35:11 EST
      in /Users/ptw/OpenLaszlo/ringding-clean
      for http://svn.openlaszlo.org/openlaszlo/trunk
  
  Summary: Make Debug.trace work with 'traditional' Javascript objects
  
  Bugs Fixed:
  LPP-5359 'Debug.trace does not work for 'traditional' Javascript objects'
  
  Technical Reviewer: [EMAIL PROTECTED] (pending)
  
  Details:
      Only use addProperty if the object is an instance of Instance,
      otherwise do it manually.
  
  Tests:
      IWFM
.......
  r7836 | mkratt | 2008-01-15 15:04:26 -0500 (Tue, 15 Jan 2008) | 1 line
  
  skip-pre-commit-checks Change Copyright from 2006 Laszlo Systems to 
2005-2006, The Dojo Foundation, bypass because cannot have 2 copyrights
.......



Property changes on: openlaszlo/branches/devildog
___________________________________________________________________
Name: svnmerge-integrated
   - 
/openlaszlo/branches/wafflecone:1-5746,5818-6068,6070-6205,6207-6213,6216-6265,6267-6368,6370-6431,6433-6450,6497
 /openlaszlo/trunk:1-7768
   + 
/openlaszlo/branches/wafflecone:1-5746,5818-6068,6070-6205,6207-6213,6216-6265,6267-6368,6370-6431,6433-6450,6497
 /openlaszlo/trunk:1-7840

Modified: openlaszlo/branches/devildog/3rd-party/index.html
===================================================================
--- openlaszlo/branches/devildog/3rd-party/index.html   2008-01-16 20:01:23 UTC 
(rev 7840)
+++ openlaszlo/branches/devildog/3rd-party/index.html   2008-01-16 20:58:33 UTC 
(rev 7841)
@@ -3,5 +3,5 @@
 <li>custom rhino jar from dojotoolkit.org. Rhino comes from <a 
href="http://www.mozilla.org/rhino";>Mozilla</a>
 </li>
 </ul>
-<p>Copyright 2006 Laszlo Systems</p>
+<p>Copyright (c) 2005-2006, The Dojo Foundation</p>
 </html>

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/LzTrace.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/LzTrace.lzs   
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/debugger/LzTrace.lzs   
2008-01-16 20:58:33 UTC (rev 7841)
@@ -3,7 +3,7 @@
 /**
   * Support for tracing function calls in the debugger
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -79,10 +79,17 @@
       return r;
     };
     m._dbg_previous_definition = f;
-    who.addProperty(what, m);
+    // Use addProperty for our classes, otherwise just jam it in
+    if (who is Instance) {
+      who.addProperty(what, m);
+    } else {
+      who[what] = m;
+    }
+    return who[what] === m;
   } else {
     Debug.error('%w.%s is not a function', who, what);
   }
+  return false;
 }
 
 /**
@@ -105,12 +112,19 @@
       }
       // If that didn't work, apply previous
       if (who[what] !== p) {
-        who.addProperty(what, p);
+        // Use addProperty for our classes, otherwise just jam it in
+        if (who is Instance) {
+          who.addProperty(what, p);
+        } else {
+          who[what] = p;
+        }
       }
+      return who[what] === p;
     } else {
         Debug.error('%w.%s is not being traced', who, what);
     }
   } else {
     Debug.error('%w.%s is not a function', who, what);
   }
+  return false;
 }

Modified: 
openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js
===================================================================
--- 
openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js  
    2008-01-16 20:01:23 UTC (rev 7840)
+++ 
openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js  
    2008-01-16 20:58:33 UTC (rev 7841)
@@ -34,6 +34,7 @@
 // Should reflect CSS defaults in LzSprite.js
 LzInputTextSprite.prototype.____hpadding = 2;
 LzInputTextSprite.prototype.____wpadding = 2;
+LzInputTextSprite.prototype.____crregexp = new RegExp('\\r\\n', 'g');
 
 LzInputTextSprite.prototype.__createInputText = function(t) {
     if (this.__LzInputDiv) return;
@@ -216,8 +217,12 @@
         this.__LzInputDiv.onclick = function (e) { this.owner.__textEvent(e, 
'onclick') }
         this.__LzInputDiv.onkeyup = function (e) { this.owner.__textEvent(e, 
'onkeyup') }
         this.__LzInputDiv.onkeydown = function (e) { this.owner.__textEvent(e, 
'onkeydown') }
+        this.__LzInputDiv.onkeypress = function (e) { 
this.owner.__textEvent(e, 'onkeypress') }
         this.__LzInputDiv.onselect = function (e) { this.owner.__textEvent(e, 
'onselect') }
         this.__LzInputDiv.onchange = function (e) { this.owner.__textEvent(e, 
'onchange') }
+        if (this.quirks.ie_paste_event || this.quirks.safari_paste_event) {
+            this.__LzInputDiv.onpaste = function (e) { 
this.owner.__pasteHandlerEx(e) }
+        }
     } else {
         this.__LzInputDiv.onblur = null;
         this.__LzInputDiv.onmousedown = null;
@@ -225,11 +230,108 @@
         this.__LzInputDiv.onclick = null;
         this.__LzInputDiv.onkeyup = null;
         this.__LzInputDiv.onkeydown = null;
+        this.__LzInputDiv.onkeypress = null;
         this.__LzInputDiv.onselect = null;
         this.__LzInputDiv.onchange = null;
+        if (this.quirks.ie_paste_event || this.quirks.safari_paste_event) {
+            this.__LzInputDiv.onpaste = null;
+        }
     }
 }
 
+LzInputTextSprite.prototype.__pasteHandlerEx = function (evt) {
+    if (this.multiline && this.owner.maxlength > 0) {
+        evt = evt ? evt : window.event;
+        
+        if (this.quirks.safari_paste_event) {
+            var clipboardTxt = evt.clipboardData.getData("text/plain");
+        } else {
+            var clipboardTxt = window.clipboardData.getData("TEXT");
+            clipboardTxt = clipboardTxt.replace(this.____crregexp, '\n');
+        }
+        
+        if (this.quirks.text_ie_carriagereturn) {
+            var len = this.__LzInputDiv.value.replace(this.____crregexp, 
'\n').length;
+        } else {
+            var len = this.__LzInputDiv.value.length;
+        }
+        
+        var selsize = this.getSelectionSize();
+        if (selsize < 0) selsize = 0;//[TODO anba 2008-01-06] remove after 
LPP-5330
+        var max = this.owner.maxlength + selsize;
+        var stopPaste = false;
+        
+        var maxchars = max - len;
+        if (maxchars > 0) {
+            var txt = clipboardTxt;
+            var txtLen = txt.length;
+            
+            if (txtLen > maxchars) {
+                txt = txt.substring(0, maxchars);
+                stopPaste = true;
+            }
+        } else {
+            var txt = "";
+            stopPaste = true;
+        }
+        
+        if (stopPaste) {
+            evt.returnValue = false;
+            if (evt.preventDefault) {
+                evt.preventDefault();
+            }
+            
+            if (txt.length > 0) {
+                if (this.quirks.safari_paste_event) {
+                    var val = this.__LzInputDiv.value;
+                    var selpos = this.getSelectionPosition();
+                    
+                    //update value
+                    this.__LzInputDiv.value = val.substring(0, selpos) + txt + 
val.substring(selpos + selsize);
+                    
+                    //fix selection
+                    this.__LzInputDiv.setSelectionRange(selpos + txt.length, 
selpos + txt.length);
+                } else {
+                    var range = document.selection.createRange();
+                    //this updates value and ensures right selection
+                    range.text = txt;
+                }
+            }
+        }
+    }
+}
+
+LzInputTextSprite.prototype.__pasteHandler = function () {
+    var selpos = this.getSelectionPosition();
+    var selsize = this.getSelectionSize();
+    var val = this.__LzInputDiv.value;
+    var that = this;
+    
+    //use 1ms timeout to give UI enough time for updating
+    setTimeout(function() {
+        var newval = that.__LzInputDiv.value;
+        var newlen = newval.length;
+        var max = that.owner.maxlength;
+        
+        if (newlen > max) {
+            var len = val.length;
+            var maxchars = max + selsize - len;
+            
+            //this was pasted
+            var newc = newval.substr(selpos, newlen - len + selsize);
+            //but we can only take at max that many chars
+            newc = newc.substring(0, maxchars);
+            
+            //update value
+            that.__LzInputDiv.value = val.substring(0, selpos) + newc + 
val.substring(selpos + selsize);
+            
+            //fix selection
+            //note: we're in Firefox/Opera, so we can savely call 
"setSelectionRange"
+            that.__LzInputDiv.setSelectionRange(selpos + newc.length, selpos + 
newc.length);
+        }
+    }, 1);
+}
+
 LzInputTextSprite.prototype.__textEvent = function ( e, eventname ){
     if (this.__LZdeleted == true) return;
     var keycode = e ? e.keyCode : event.keyCode;
@@ -258,6 +360,70 @@
         this.__setglobalclickable(true);
     }
 
+    if (this.multiline && this.owner.maxlength > 0) {
+        if (eventname == 'onkeypress') {
+            var evt = e ? e : event;
+            var charcode = this.quirks.text_event_charcode ? evt.charCode : 
evt.keyCode;
+            
+            /* BUG:
+             * env: Safari - Win
+             * -> last char is \n, delete per backspace, notice Safari-UI did 
update, 
+             *      but __LzInputDiv.value still holds the \n!
+             *    blur inputtext, focus again -> \n is again there, also in UI!
+             * what about Safari - Mac?
+             */
+            
+            //Debug.write("charCode = %s, keyCode = %s, ctrlKey = %s, altKey = 
%s, shiftKey = %s", charcode, keycode, evt.ctrlKey, evt.altKey, evt.shiftKey);
+            
+            if (!(evt.ctrlKey || evt.altKey) && (charcode || keycode == 13) && 
keycode != 8) {
+                var selsize = this.getSelectionSize();
+                //[TODO anba 2008-01-06] use selsize==0 when LPP-5330 is fixed
+                if (selsize <= 0) {
+                    if (this.quirks.text_ie_carriagereturn) {
+                        var val = 
this.__LzInputDiv.value.replace(this.____crregexp, '\n');
+                    } else {
+                        var val = this.__LzInputDiv.value;
+                    }
+                    
+                    var len = val.length, max = this.owner.maxlength;
+                    if (len >= max) {
+                        evt.returnValue = false;
+                        if (evt.preventDefault) {
+                            evt.preventDefault();
+                        }
+                    }
+                }
+            } else {
+                /* IE and Safari do not send 'onkeypress' for function-keys, */
+                /* but Firefox and Opera! */
+                if (this.quirks.keypress_function_keys) {
+                    if (evt.ctrlKey && !evt.altKey && !evt.shiftKey) {
+                        var c = String.fromCharCode(charcode);
+                        /* 'v' for Firefox and 'V' for Opera */
+                        if (c == 'v' || c == 'V') {
+                            //pasting per ctrl + v
+                            //[TODO anba 2008-01-06] how to detect paste per 
context-menu?
+                            var len = this.__LzInputDiv.value.length, max = 
this.owner.maxlength;
+                            if (len < max || this.getSelectionSize() > 0) {
+                                this.__pasteHandler();
+                            } else {
+                                evt.returnValue = false;
+                                if (evt.preventDefault) {
+                                    evt.preventDefault();
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    if (eventname == 'onkeypress') {
+        /* we need to leave here, else LzInputText.inputtextevent(..) will 
freak out */
+        return;
+    }
+
     //Debug.info('__textEvent', eventname, keycode);
     if (this.owner) {
         // Generate the event. onkeyup/onkeydown sent by LzKeys.js
@@ -623,7 +789,11 @@
 }
 
 LzInputTextSprite.prototype.getText = function () {
-    return this.__LzInputDiv.value;
+    if (this.multiline && this.quirks.text_ie_carriagereturn) {
+        return this.__LzInputDiv.value.replace(this.____crregexp, '\n');
+    } else {
+        return this.__LzInputDiv.value;
+    }
 }
 
 LzInputTextSprite.prototype.getTextfieldHeight = function () {

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js       
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js       
2008-01-16 20:58:33 UTC (rev 7841)
@@ -229,6 +229,11 @@
     ,text_measurement_use_insertadjacenthtml: false
     ,text_selection_use_range: false
     ,document_size_use_offsetheight: false
+    ,text_ie_carriagereturn: false
+    ,ie_paste_event: false
+    ,safari_paste_event: false
+    ,text_event_charcode: true
+    ,keypress_function_keys: true
 }
 
 LzSprite.prototype.capabilities = {
@@ -292,6 +297,16 @@
             // text size measurement uses insertAdjacentHTML()
             quirks['text_measurement_use_insertadjacenthtml'] = true;
             quirks['text_selection_use_range'] = true;
+            
+            // IE uses "\r\n" for newlines, which gives different text-lengths 
compared to SWF and
+            // to other browsers
+            quirks['text_ie_carriagereturn'] = true;
+            // IE has got a special event for pasting
+            quirks['ie_paste_event'] = true;
+            // IE does not send onkeypress for function keys
+            quirks['keypress_function_keys'] = false;
+            // IE does not use charCode for onkeypress
+            quirks['text_event_charcode'] = false;
         } else if (Lz.__BrowserDetect.isSafari) {
             // Fix bug in where if any parent of an image is hidden the size 
is 0
             // TODO: Tucker claims this is fixed in the latest version of 
webkit
@@ -313,6 +328,11 @@
             if (Lz.__BrowserDetect.version > 523.10) {
                 this.capabilities['rotation'] = true;
             }
+            
+            // Safari has got a special event for pasting
+            quirks['safari_paste_event'] = true;
+            // Safari does not send onkeypress for function keys
+            quirks['keypress_function_keys'] = false;
         } else if (Lz.__BrowserDetect.isOpera) {
             // Fix bug in where if any parent of an image is hidden the size 
is 0
             quirks['invisible_parent_image_sizing_fix'] = true;
@@ -320,6 +340,8 @@
             quirks['absolute_position_accounts_for_offset'] = true;
             quirks['canvas_div_cannot_be_clipped'] = true;
             quirks['document_size_use_offsetheight'] = true;
+            // Opera does not use charCode for onkeypress
+            quirks['text_event_charcode'] = false;
         } else if (Lz.__BrowserDetect.isFirefox && Lz.__BrowserDetect.version 
< 2) {
             // see 
http://groups.google.ca/group/netscape.public.mozilla.dom/browse_thread/thread/821271ca11a1bdbf/46c87b49c026246f?lnk=st&q=+focus+nsIAutoCompletePopup+selectedIndex&rnum=1
             quirks['firefox_autocomplete_bug'] = true;

Modified: 
openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs 
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLibraryLoader.lzs 
2008-01-16 20:58:33 UTC (rev 7841)
@@ -33,8 +33,6 @@
     //Debug.write("LzLibraryLoader.request() this.proxied=", this.proxied);
     var o = { libpath: req, url: req , lzt: "lib", proxied: this.proxied};
     super.request( o );
-    this.owner.setAttribute( "framesloadratio" , 0 );
-    this.owner.setAttribute( "loadratio" , 0 ); 
 }
 
 /**

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs        
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzLoader.lzs        
2008-01-16 20:58:33 UTC (rev 7841)
@@ -675,8 +675,8 @@
             if (timedout) { state = "timedout"; }
             // TODO: [2005-08-11 ptw] LzURL should be able to
             // parse a relative URL
-            var url = (new LzURL(this.reqobj.url)).file;
-            if (! url) { url = this.reqobj.url; }
+            var url = (new LzURL(this.url)).file;
+            if (! url) { url = this.url; }
             return Debug.formatToString("%s (%s)", url, state);
         }
     };

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as 
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/kernel/swf/LzSprite.as 
2008-01-16 20:58:33 UTC (rev 7841)
@@ -1309,6 +1309,7 @@
     this.updatePlayStatus();
     this.__LZtracking = false;
     this.updatePlayDel.unregisterAll();
+    this.checkPlayStatusDel.unregisterAll();
 }
 
 
@@ -1364,7 +1365,7 @@
      if (('isaudio' in this.getMCRef()) && (this.getMCRef().isaudio == true)) 
this.__lzskipplaychecklimit = LzSprite.prototype.__lzskipplaychecklimitmax;
     
     //Debug.warn('checkPlayStatus %w %w %w %w', this.__lzcheckframe, 
this.frame, this.totalframes, this.__lzskipplaychecklimit);
-    LzIdle.callOnIdle( this.checkPlayStatusDel );
+    this.checkPlayStatusDel.register( LzIdle, "onidle" );
 }
 
 /**
@@ -1377,11 +1378,10 @@
     this.updatePlayStatus();
     this.__lzskipplaycheck++;
     if (this.__lzskipplaycheck < this.__lzskipplaychecklimit) {
-        LzIdle.callOnIdle( this.checkPlayStatusDel );
         return;
     }
+    this.checkPlayStatusDel.unregisterAll();
 
-
     if ( this.frame != this.__lzcheckframe || this.totalframes != 
this.__lzchecktotalframes){
         //Debug.write('checkPlayStatus2 tracking', this.frame, 
this.__lzcheckframe);
         this.trackPlay();

Modified: 
openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/platform/dhtml/LzBrowser.js
===================================================================
--- 
openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/platform/dhtml/LzBrowser.js
   2008-01-16 20:01:23 UTC (rev 7840)
+++ 
openlaszlo/branches/devildog/WEB-INF/lps/lfc/services/platform/dhtml/LzBrowser.js
   2008-01-16 20:58:33 UTC (rev 7841)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @affects lzbrowser
@@ -264,7 +264,7 @@
   * @return: An URL decoded string
   */
 LzBrowser.urlUnescape = function (str) {
-    return unescape( str );
+    return unescape( str.split('+').join(' ') );
 }
 
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzInputText.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzInputText.lzs  
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzInputText.lzs  
2008-01-16 20:58:33 UTC (rev 7841)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -171,7 +171,7 @@
   * @access protected
   */
 function updateData (){
-    return this.sprite.text;
+    return this.sprite.getText();
 }
 
 

Modified: openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzText.lzs
===================================================================
--- openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzText.lzs       
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/WEB-INF/lps/lfc/views/LzText.lzs       
2008-01-16 20:58:33 UTC (rev 7841)
@@ -1,6 +1,6 @@
 /**
   *
-  * @copyright Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.
+  * @copyright Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.
   *            Use is subject to license terms.
   *
   * @access public
@@ -459,8 +459,9 @@
     this.maxlength = val;
     if (this.onmaxlength.ready) this.onmaxlength.sendEvent(val);
 
-    if(this.text && this.text.length > this.maxlength){
-        this.setText (this.text, true);
+    var t = this.getText();
+    if(t && t.length > this.maxlength){
+        this.setText (t, true);
     }
 }
 

Modified: 
openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
===================================================================
--- 
openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
 2008-01-16 20:01:23 UTC (rev 7840)
+++ 
openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/Parser.jjt
 2008-01-16 20:58:33 UTC (rev 7841)
@@ -851,9 +851,16 @@
      "for" "(" { setAllowIn(false); } Expression() { setAllowIn(true); } "in" 
Expression() ")" Statement()
 }
 
-void ForVarInStatement() #ForVarInStatement : {}
+void ForVarInStatement() #ForVarInStatement : {ASTIdentifier id; 
ASTIdentifier.Type type;}
 {
-     "for" "(" "var" Identifier() ({ setAllowIn(false); } [Initializer()] { 
setAllowIn(true); }) #EmptyExpression(jjtree.nodeArity()==0) "in" Expression() 
")" Statement()
+     "for" "(" "var" id = Identifier()
+     (
+        [ ":" type = TypeIdentifier() { id.setType(type); } ]
+        { setAllowIn(false); }
+        [Initializer()]
+        { setAllowIn(true); }
+     ) #EmptyExpression(jjtree.nodeArity()==0)
+     "in" Expression() ")" Statement()
 }
 
 void ContinueStatement() #ContinueStatement : {}

Modified: 
openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/parser/ASTIdentifier.java
===================================================================
--- 
openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/parser/ASTIdentifier.java
  2008-01-16 20:01:23 UTC (rev 7840)
+++ 
openlaszlo/branches/devildog/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/parser/ASTIdentifier.java
  2008-01-16 20:58:33 UTC (rev 7841)
@@ -3,7 +3,7 @@
 * ****************************************************************************/
 
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 

Modified: 
openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
===================================================================
--- 
openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
  2008-01-16 20:01:23 UTC (rev 7840)
+++ 
openlaszlo/branches/devildog/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
  2008-01-16 20:58:33 UTC (rev 7841)
@@ -3,7 +3,7 @@
  * ***************************************************************************/
 
 /* J_LZ_COPYRIGHT_BEGIN *******************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * J_LZ_COPYRIGHT_END *********************************************************/
 
@@ -535,17 +535,6 @@
                 value = FontInfo.normalizeStyleString(value, false);
             }
 
-            if (name.toLowerCase().equals("datacontrolsvisibility")) {
-                env.warn(
-/* (non-Javadoc)
- * @i18n.test
- * @org-mes="The attribute \"datacontrolsvisibility\" is deprecated. " + "Use 
visible=\"null\" instead. " + "For future compatibility you should make this 
change to your source code."
- */
-            org.openlaszlo.i18n.LaszloMessages.getMessage(
-                NodeModel.class.getName(),"051018-497")
-                         ,element);
-            }
-
             if (name.toLowerCase().equals("defaultplacement")) {
                 if (value != null && value.matches("\\s*['\"]\\S*['\"]\\s*")) {
                     String oldValue = value;

Modified: openlaszlo/branches/devildog/docs/src/build.xml
===================================================================
--- openlaszlo/branches/devildog/docs/src/build.xml     2008-01-16 20:01:23 UTC 
(rev 7840)
+++ openlaszlo/branches/devildog/docs/src/build.xml     2008-01-16 20:58:33 UTC 
(rev 7841)
@@ -329,6 +329,11 @@
     <copy todir="${local.output.dir}/resources" failonerror="false">
       <fileset dir="${local.build.dir}/resources"/>
     </copy>
+       
+    <mkdir dir="${developers.output.dir}/includes"/>
+    <copy todir="${developers.output.dir}/includes" failonerror="false">
+      <fileset dir="${docs.output.dir}/includes"/>
+    </copy>
 
     <copy todir="${local.output.dir}">
       <fileset dir="${local.input.dir}" excludes="*.html,*.dbk,schemas.xml"/>

Modified: openlaszlo/branches/devildog/docs/src/developers/constraints.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/constraints.dbk    
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/docs/src/developers/constraints.dbk    
2008-01-16 20:58:33 UTC (rev 7841)
@@ -149,7 +149,7 @@
 canvas, the blue square will move as the mouse moves, floating
 relative to the position of the mouse.  In this case, the constraint
 expression includes a method call, but it works in the same way as the
-simple attribute expression in <xref linkend="ex.constraints.1"/>.</para>
+simple attribute expression in the previous example.</para>
 
 <example role="live-example">
    <title>Constrain to mouse position</title>
@@ -159,7 +159,7 @@
 </example>
 
 <para>The constraint expression may be almost any Javascript expression.  For
-example, you could change the y value in example <xref 
linkend="ex.constraints.1"/> to
+example, you could change the y value in the previous example to
 <literal>y="${immediateparent.getMouse('y')+10}"</literal> and cause the
 blue square to float below the mouse.  If you centered the blue square
 at the mouse position by setting the y value with

Modified: openlaszlo/branches/devildog/docs/src/developers/doc-toolchain.dbk
===================================================================
--- openlaszlo/branches/devildog/docs/src/developers/doc-toolchain.dbk  
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/docs/src/developers/doc-toolchain.dbk  
2008-01-16 20:58:33 UTC (rev 7841)
@@ -115,7 +115,7 @@
     </para>
     <para>This part of the toolchain unifies the various source material into 
js2doc format, then
       joins them together into a massive XML file, 
<literal>LaszloLibrary-verbose.js2doc</literal>.
-      To understand those processes, please review <xref id="js2doc-schema"/> 
to grasp the kinds of
+      To understand those processes, please review <xref 
linkend="js2doc-schema"/> to grasp the kinds of
       information that js2doc is trying to represent. The next three sections 
will walk through each
       of the three paths in the diagram above: from langref.xml, from 
javascript code, and from lzx
       source code, all to the js2doc intermediate format.</para>

Copied: openlaszlo/branches/devildog/docs/src/developers/images/datarequest.png 
(from rev 7836, openlaszlo/trunk/docs/src/developers/images/datarequest.png)

Modified: 
openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$9.lzx
===================================================================
--- 
openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$9.lzx    
    2008-01-16 20:01:23 UTC (rev 7840)
+++ 
openlaszlo/branches/devildog/docs/src/developers/programs/databinding-$9.lzx    
    2008-01-16 20:58:33 UTC (rev 7841)
@@ -4,7 +4,7 @@
   
   <datapointer xpath="myData:/" ondata="processData()">
     <method name="processData">
-      this.selectChild(1); 
+      this.selectChild(2); 
       do {
         if (this.xpathQuery( '@show' ) == 'south park') {
             Debug.write(this.xpathQuery('lastName/text()'));

Modified: openlaszlo/branches/devildog/examples/components/style_example.html
===================================================================
--- openlaszlo/branches/devildog/examples/components/style_example.html 
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/examples/components/style_example.html 
2008-01-16 20:58:33 UTC (rev 7841)
@@ -2,7 +2,7 @@
 <!-- explanation page for  vacation survey                                  -->
 <!--                                                                       -->
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!--=======================================================================-->
@@ -16,7 +16,7 @@
       <script src="../../lps/includes/utils.js" 
type="text/javascript"></script>
       <title>Components Sampler</title>
       <style type="text/css">
-        .smallapp {margin-right: 100px;}
+        .smallapp {margin-right: 10px;}
       </style>
 
   </head>

Modified: 
openlaszlo/branches/devildog/laszlo-explorer/coverpages/welcome/index.html
===================================================================
--- openlaszlo/branches/devildog/laszlo-explorer/coverpages/welcome/index.html  
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/laszlo-explorer/coverpages/welcome/index.html  
2008-01-16 20:58:33 UTC (rev 7841)
@@ -2,7 +2,7 @@
 <!-- welcome/index.html                                                    -->
 <!--                                                                       -->
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!--=======================================================================-->
@@ -32,7 +32,7 @@
 </head>
 <body>
 <h2>
-Welcome to OpenLaszlo 4.0.5 
+Welcome to OpenLaszlo 4.1 
 </h2>
 <h1 style="margin-top: 2px">
 The open source platform for building rich internet applications
@@ -58,9 +58,9 @@
 <div id="left">
 <div class="column-in">
 <h3>
-OpenLaszlo 4.0.5 is the recommended platform for .swf development
+OpenLaszlo 4.1 is the recommended platform for .swf development
 </h3>
-With OpenLaszlo 4.0.5, there is no longer any reason to continue application 
development using OpenLaszlo 3.4. Support for DHTML applications remains at 
"beta" level; it will be fully supported with OL 4.1. This release has been 
tested by users world wide and vetted by the Laszlo Systems Quality Assurance 
team. Hundreds of improvements have been made since OpenLaszlo 4.0.  Please see 
the <a href="../../../docs/release-notes.html" target="_top">release notes</a> 
for a detailed description of new features in this release, changes since the 
last major release, and known problems.
+With OpenLaszlo 4.1, there is no longer any reason to continue application 
development using OpenLaszlo 3.4. Support for DHTML applications remains at 
"beta" level; it will be fully supported with OL 4.1. This release has been 
tested by users world wide and vetted by the Laszlo Systems Quality Assurance 
team. Hundreds of improvements have been made since OpenLaszlo 4.0.  Please see 
the <a href="../../../docs/release-notes.html" target="_top">release notes</a> 
for a detailed description of new features in this release, changes since the 
last major release, and known problems.
 </div>
 </div>
 

Modified: 
openlaszlo/branches/devildog/lps/components/utils/layouts/simplelayout.lzx
===================================================================
--- openlaszlo/branches/devildog/lps/components/utils/layouts/simplelayout.lzx  
2008-01-16 20:01:23 UTC (rev 7840)
+++ openlaszlo/branches/devildog/lps/components/utils/layouts/simplelayout.lzx  
2008-01-16 20:58:33 UTC (rev 7841)
@@ -28,18 +28,31 @@
     </method>
 
     <!--- @keywords private -->
-    <method name="addSubview" args="newsub">
+    <method name="addSubview" args="newsub"><![CDATA[
         this.updateDelegate.register( newsub,  "on" + this.sizeAxis);
         this.updateDelegate.register( newsub,  "onvisible" );
         //this is an optimization to avoid calling update in the simple case
         //where a single subview was just added
-        if ( ! this.locked &amp;&amp; this.subviews.length ){
-            var s= this.subviews[ this.subviews.length-1 ];
-            var p =  s[ this.axis ] + s[ this.sizeAxis ] + this.spacing;
-            newsub.setAttribute( this.axis , p  ) ;
+        if (!this.locked) {
+            var rv = null;
+            var sv = this.subviews;
+            for (var i = sv.length-1; i >= 0; --i) {
+                if (sv[i].visible) {
+                    rv = sv[i];
+                    break;
+                }
+            } 
+            
+            if (rv) {
+                var p = rv[ this.axis ] + rv[ this.sizeAxis ] + this.spacing;
+            } else {
+                var p = this.inset;
+            }
+            
+            newsub.setAttribute(this.axis, p);
         }
         super.addSubview( newsub );
-    </method>
+    ]]></method>
 
     <!--- This method is usually called automatically when any of the views
           controlled by the layout change their size in the layout axis, or
@@ -64,7 +77,7 @@
 </class>
 </library>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2006 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->
 <!-- @LZX_VERSION@                                                         -->

Modified: openlaszlo/branches/devildog/test/typevar.lzx
===================================================================
--- openlaszlo/branches/devildog/test/typevar.lzx       2008-01-16 20:01:23 UTC 
(rev 7840)
+++ openlaszlo/branches/devildog/test/typevar.lzx       2008-01-16 20:58:33 UTC 
(rev 7841)
@@ -16,6 +16,7 @@
       var v_typed_init:int = val * 2;
       var v_typed_q:int? = 123;
       var v_typed_ex:int! = 234;
+      var v_star:* = 345;
 
       // These must be set before use
       v_plain = 99;
@@ -71,6 +72,27 @@
          estatus.setText("FAIL 7");
       }
 
+      if (v_star == 345) {
+         Debug.write("test8 passed");
+      } else {
+         Debug.write("FAIL: test8");
+         estatus.setText("FAIL 8");
+      }
+
+      var arr = [0,1,2];
+      var s = "";
+      for (var fv_star:* in arr) {
+          s += fv_star;
+      }
+
+      // There is no guarantee about the ordering of for var in
+      if (s == "012" || s == "021" || s == "102" || s == "120" || s == "201" 
|| s == "210") {
+         Debug.write("test9 passed");
+      } else {
+         Debug.write("FAIL: test9");
+         estatus.setText("FAIL 9, got: " + s);
+      }
+
     </method>
   </view>
 
@@ -84,6 +106,6 @@
 
 </canvas>
 <!-- * X_LZ_COPYRIGHT_BEGIN ***************************************************
-* Copyright 2001-2007 Laszlo Systems, Inc.  All Rights Reserved.              *
+* Copyright 2001-2008 Laszlo Systems, Inc.  All Rights Reserved.              *
 * Use is subject to license terms.                                            *
 * X_LZ_COPYRIGHT_END ****************************************************** -->


_______________________________________________
Laszlo-checkins mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins

Reply via email to