It sounds like a good optimization, maybe we should file an improvement task
for it..
I suppose we'd need to check that IE7 didn't have some bug with parsing the
style
text, like it has with reading it out...


On Wed, Oct 14, 2009 at 10:09 AM, P T Withington <p...@laszlosystems.com>wrote:

> My idea is that we'd keep the classes around, so if I create a div that
> uses 15pt monospace, there would be a class for that.  I'd only create it
> the first time around, after that, I'd look up the class name and just jam
> it in:
>
>  var fontclass = findClassForFont(style, variant, weight, size, lineHeight,
> family);
>  div.className = 'lzswftext ' + fontclass;
>
> And when switching from single to multiline I would be able to just reuse
> the "type style" class, doing something like:
>
>  newdiv.className = olddiv.className.replace('lzswftext',
> 'lzswftextmultiline');  // leave the type style class alone.
>
>
>
> On 2009-10-14, at 09:59, Henry Minsky wrote:
>
>  What would be the advantage? making it cleaner to apply and remove these
>> properties as a group? I don't think it would help with speed because it
>> would cost you as much time and space to cons up the new class as to frob
>> the properties directly on the div...
>>
>> On Wed, Oct 14, 2009 at 9:55 AM, P T Withington <p...@laszlosystems.com
>> >wrote:
>>
>>  Ok, here's another idea, maybe too whacky:
>>>
>>> Instead of smacking styles into divs, what if we dynamically created a
>>> CSS
>>> class style rule for each case?  We already have some of this mechanism
>>> in
>>> the measurement cache.  At least for the various text attributes we could
>>> do
>>> something like, accumulate all the text style properties, build a CSS
>>> rule,
>>> assign it to a (generated) class name, and add that class name to the
>>> div's
>>> class (you can have multiple classes apply to a div, they are separated
>>> by
>>> spaces).
>>>
>>> We'd still use individual styles for position/overflow/width/height/clip,
>>> but for the styles that affect text, bundle them into a class.
>>>
>>>
>>> On 2009-10-14, at 09:37, Henry Minsky wrote:
>>>
>>> In Firefox, asking for cssText gives you this
>>>
>>>>
>>>> lzx> foo.sprite.__LzInputDiv.style.cssText
>>>> 'overflow: scroll; font-family: monospace; width: 415px; height: 115px;'
>>>> lzx>
>>>>
>>>> But in IE7 you get no font info
>>>> lzx> foo.sprite.__LzInputDiv.style.cssText
>>>> 'OVERFLOW: scroll; WIDTH: 417px; CLIP: rect(auto auto auto auto);
>>>> HEIGHT:
>>>> 117px'
>>>> lzx>
>>>>
>>>>
>>>> On Wed, Oct 14, 2009 at 9:29 AM, Henry Minsky <henry.min...@gmail.com
>>>>
>>>>> wrote:
>>>>>
>>>>
>>>> That apparently does not work in IE7 for some reason...
>>>>
>>>>>
>>>>> On Wed, Oct 14, 2009 at 9:25 AM, P T Withington <p...@laszlosystems.com
>>>>>
>>>>>> wrote:
>>>>>>
>>>>>
>>>>> I don't follow.  setMultiline copies _all_ of the div styles over:
>>>>>
>>>>>>
>>>>>>    lz.embed.__setAttr(newdiv, 'style', olddiv.style.cssText);
>>>>>>
>>>>>> (in addition to the scroll position).  So, something else is going
>>>>>> wrong...
>>>>>>
>>>>>>
>>>>>> On 2009-10-14, at 08:22, Max Carlson wrote:
>>>>>>
>>>>>> Yes, I think it needs to copy the necessary fontstyles over.  Right
>>>>>> now
>>>>>>
>>>>>>  LzInputTextSprite#setMultiline() only preserves the text contents,
>>>>>>> scrollLeft and scrollTop.  The necessary styles should be preserved
>>>>>>> in:
>>>>>>> LzInputTextSprite.prototype.__fontStyle = 'normal';
>>>>>>> LzInputTextSprite.prototype.__fontWeight = 'normal';
>>>>>>> LzInputTextSprite.prototype.__fontSize = '11px';
>>>>>>> LzInputTextSprite.prototype.__fontFamily = 'Verdana,Vera,sans-serif';
>>>>>>>
>>>>>>> I'd avoid copying the entire CSS style - that's pretty risky.
>>>>>>>
>>>>>>> Henry Minsky wrote:
>>>>>>>
>>>>>>> I'm trying to figure out why the font is changing back to the default
>>>>>>>
>>>>>>>> font when an input field
>>>>>>>> is set to multiline in IE7/DHTML.
>>>>>>>> The code in LzInputTextSprite.setMultiline does create a new div,
>>>>>>>> with
>>>>>>>> _createInputDiv, does that need to
>>>>>>>> copy the font styles over?
>>>>>>>> <canvas>
>>>>>>>> <inputtext id="foo" width="400" x="14" name="foo"  font="monospace"
>>>>>>>> fontsize="11" fontstyle="plain"
>>>>>>>>        multiline="false"
>>>>>>>>        text="${canvas.runtime}"
>>>>>>>>        bgcolor="#ccffcc"
>>>>>>>>        onclick="   setAttribute('multiline', true);
>>>>>>>> this.setAttribute('height', 100); "/>
>>>>>>>> </canvas>
>>>>>>>> --
>>>>>>>> Henry Minsky
>>>>>>>> Software Architect
>>>>>>>> hmin...@laszlosystems.com <mailto:hmin...@laszlosystems.com>
>>>>>>>>
>>>>>>>>
>>>>>>>>  --
>>>>>>> Regards,
>>>>>>> Max Carlson
>>>>>>> OpenLaszlo.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>> --
>>>>> Henry Minsky
>>>>> Software Architect
>>>>> hmin...@laszlosystems.com
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>> --
>>>> Henry Minsky
>>>> Software Architect
>>>> hmin...@laszlosystems.com
>>>>
>>>>
>>>
>>>
>>
>> --
>> Henry Minsky
>> Software Architect
>> hmin...@laszlosystems.com
>>
>
>


-- 
Henry Minsky
Software Architect
hmin...@laszlosystems.com

Reply via email to