[Laszlo-dev] LPP-8477, font changes when switching from single line to multiline in IE7
P T Withington
ptw at laszlosystems.com
Wed Oct 14 07:09:04 PDT 2009
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
> <ptw at 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.minsky at 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 <ptw at 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
>>>>>>> hminsky at laszlosystems.com <mailto:hminsky at laszlosystems.com>
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>> Max Carlson
>>>>>> OpenLaszlo.org
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> Henry Minsky
>>>> Software Architect
>>>> hminsky at laszlosystems.com
>>>>
>>>>
>>>>
>>>>
>>>
>>> --
>>> Henry Minsky
>>> Software Architect
>>> hminsky at laszlosystems.com
>>>
>>
>>
>
>
> --
> Henry Minsky
> Software Architect
> hminsky at laszlosystems.com
More information about the Laszlo-dev
mailing list