[Laszlo-dev] For Review: Change 20090103-hqm-F Summary: always set textfield.mouseEnabled=true in swf9 LzTextSprite

P T Withington ptw at pobox.com
Sun Jan 4 12:44:16 PST 2009


I wonder if we should do a little more designing before publishing  
this new feature.  I'd hate to get locked in to a random API.  I'd at  
least like to keep this API private until we are happy with it.

Aren't what you really doing is enabling a callback from a span of  
text?  Maybe we should be using `callback` instead of `link`?

Also, in the test case, it seems odd to use %s to insert this callback  
in the text.  It seems quite plausible to me that there could be some  
runtime where you cannot just inject text to create a callback (e.g.,  
you might have to draw a target box or something).  It's probably a  
bug in %s if it does not escape HTML (which would defeat the example).

I'm thinking there should be a more abstract interface, perhaps using  
`format` that would allow you to specify a callback.  Something like:

> <class name="testcase" extends="text"
>         multiline="true" width="150"    >
>    <handler name="oninit" >
>      this.format("click %!s or %!s", 'callback', 'here', 'callback',  
> 'there');
>    </handler>
>    <method name="callback" args="val" >
>      this.addFormat("\n%s was clicked", val);
>    </method>
>  </class>


That is, add a new flag '!' (mnemonic executable magic number, or  
emacs m-! (execute shell command), etc.) which takes the next argument  
as a method to call, and indicates that the formatted version of the  
subsequent argument should be clickable (and call the method with that  
object as an argument).  (Similar in spirit to the `=` flag that lets  
you associate an object with a presentation for the debugger to  
inspect.)

That's my 2p. at least.


On 2009-01-04, at 11:50EST, André Bargull wrote:

> Yes, I think that's the way to go. Maybe the name shouldn't contain  
> "hyperlink" but instead "textlink" because the method is also called  
> "makeTextLink(..)". And how about to use just "textlinks", because  
> IMO writing "enabletextlinks" is a bit too cumbersome.
>
> <text enabletextlinks="true" />
> <text textlinks="true" />
>
>
>
> On 1/4/2009 4:48 PM, Henry Minsky wrote:
>> Yeah, I guess we had better not set mouseEnabled=true by default. But
>> it looks like we do need to set it in order
>> to make text links clickable. So maybe we have to add a new flag
>> "enablehyperlinks" or something, to let
>> the user specify that they want mouse clicks to be accepted, but  
>> don't
>> necessarily want the other
>> behaviors of 'selectable' or 'clickable'?
>> On Sun, Jan 4, 2009 at 8:51 AM, André Bargull  
>> <andre.bargull at udo.edu> wrote:
>>> If you set "mouseEnabled" to `true` unconditionally, you'll  
>>> reintroduce
>>> LPP-6086, won't you?
>>>
>>>
>>> On 1/4/2009 5:25 AM, Henry Minsky wrote:
>>>> This  change just keeps textfield.mouseEnabled = true all the  
>>>> time in the
>>>> LzTextSprite. This at least makes the same behavior in swf8 and  
>>>> swf9, for
>>>> non-clickable text with links.
>>>>
>>>> The current behavior in swf8, when  clickable=true on a <text>  
>>>> view,
>>>> clicking on a hyperlink causes the view to only generate onclick  
>>>> events,
>>>> and doesn't send the ontextlink event.
>>>>
>>>> I'm not sure how to get the hand cursor to appear in dhtml over
>>>> hyperlinks, maybe Max knows...
>>>>
>>>>
>>>>
>>>> Change 20090103-hqm-F by hqm at badtzmaru.home on 2009-01-03  
>>>> 23:16:46 EST
>>>>   in /Users/hqm/openlaszlo/trunk4/WEB-INF/lps/lfc
>>>>   for http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/lfc
>>>>
>>>> Summary: always set textfield.mouseEnabled=true in swf9  
>>>> LzTextSprite
>>>>
>>>> New Features:
>>>>
>>>> Bugs Fixed: LPP-7551
>>>>
>>>> Technical Reviewer: andre
>>>> QA Reviewer: (pending)
>>>> Doc Reviewer: (pending)
>>>>
>>>> Documentation:
>>>>
>>>> Release Notes:
>>>>
>>>> Details:
>>>>
>>>>
>>>> Tests:
>>>>
>>>> <canvas debug="true">
>>>>  <class name="testcase" extends="text"
>>>>         multiline="true" width="150"    >
>>>>    <handler name="oninit" >
>>>>      this.format("click %s or %s", this.makeTextLink("here",  
>>>> "opt1"),
>>>> this.makeTextLink("here", "opt2"));
>>>>    </handler>
>>>>    <handler name="ontextlink" args="val" >
>>>>      this.addFormat("\noption %d was clicked", val == "opt1" ?  
>>>> 1 : 2);
>>>>    </handler>
>>>>    <handler name="onclick" args="val" >
>>>>      this.addFormat("\nclick %w ", val);
>>>>    </handler>
>>>>  </class>
>>>>
>>>>  <simplelayout spacing="6"/>
>>>>  <testcase id="foo" clickable="false" bgcolor="#cccccc"/>
>>>>  <testcase id="bar" clickable="true" bgcolor="#ccffcc"/>
>>>>
>>>> </canvas>
>>>>
>>>>
>>>> Files:
>>>> M      kernel/swf9/LzTextSprite.as
>>>>
>>>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20090103-hqm-F.tar
>>>>
>>>
>




More information about the Laszlo-dev mailing list