So, Maynard and I tested this on webtop today, and it works in most cases. It falls down when a field is programatticaly focused - this causes the click tree to be hidden, so the mouse doesn't work until the inputtext is moused over and out. I was able to fix this by checking the target div for the global mousemove event - if it's not an inputtext, I __hide() the one that's currently showing

The other (thornier) thing I can't figure out is how to deal with views in front of an inputtext. This simple testcase fails. I was able to work around a case with the animated focus brackets preventing text selection, but this kind of code appears all over webtop:
<canvas>
<inputtext>Can't select or click because we're covered by another view</inputtext>
    <view width="100%" height="100%" bgcolor="red" opacity=".2"/>
</canvas>

So, do we go back to reparenting and accept the degenerate case where inputtext can be floating on top of everything? I'm not sure how to: a) detect there's an active inputtext behind the lzdiv and b) forward the mouse event there...

Anyone have any ideas there? Otherwise, webtop will need to somehow prevent views from floating over inputtexts - in all cases.

On Jul 27, 2009, at 4:25 PM, Max Carlson wrote:

Change 20090727-maxcarlson-U by [email protected] on 2009-07-27 16:21:22 PDT
   in /Users/maxcarlson/openlaszlo/trunk-clean
   for http://svn.openlaszlo.org/openlaszlo/trunk


Summary: UPDATED: Don't re-parent input text to click tree

Bugs Fixed: LPP-5447 DHTML: inputtext and clickable

Technical Reviewer: ptw (pending)
QA Reviewer: [email protected] (pending)

Details:
This is based on Tucker's change (http://svn.openlaszlo.org/openlaszlo/patches/20090722-ptw-k.tar ). I turned off the dom_breaks_focus quirk for firefox, cleaned up LzMouseKernel to not attempt to re-focus inputtexts when showing the click tree again. I also changed focusoverlay to allow clicks through to an inputtext when the focus animation is happening.

  This is just a first pass.  It doesn't reparent the input text
  sprite into the click tree, and it turns off the click tree when
  you mouse over in input element.  The test case works in Safari,
  and Firefox.  I have not tested IE.

LzSprite: Move the canvas hiding from the CSS class style to the canvas
  div, so removing it just removes the div style (and the div
  reverts to the class style default).  Similarly for controlling
  visibility on all divs.  Correct fencepost error in __isMouseOver.

  LzInputTextSprite:  Add documentation from Max.  Fix init clauses
  that were causing the schema-generator to warn.  Remove
  reparenting code, replace with hiding/showing the click tree.  Now
  we can just turn the whole click tree on and off, since we are not
  reparenting, which should be much more efficient.  Only re-enable
  click tree when we _actually_ leave the bounding box of the input
  element.

Tests:
  Test case from LPP-8334

Files:
M      WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
M      WEB-INF/lps/lfc/kernel/dhtml/LzMouseKernel.js
M      WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js
M      lps/components/lz/focusoverlay.lzx

Changeset: 
http://svn.openlaszlo.org/openlaszlo/patches/20090727-maxcarlson-U.tar

Reply via email to