IDE versus MSG Box - Field Tabstops

Richard Gaskin ambassador at fourthworld.com
Wed Aug 14 19:02:31 EDT 2013


Looks like we've discovered an inconsistency.

Apparently the engine will treat items in the tabstops as column widths 
if one or more of them is smaller than a preceding item, but if each of 
the items is larger than the last then the value you get back will be 
the same you set it to.

If you wrote code expecting the engine to treat incoming values 
consistently, you risk having unexpected column widths.

So we have to ask ourselves:  now that the engine explicitly supports 
relative values via the tabWidths property, is the "sometimes" rule for 
setting tabStops a feature or a bug?

--
  Richard Gaskin
  Fourth World
  LiveCode training and consulting: http://www.fourthworld.com
  Webzine for LiveCode developers: http://www.LiveCodeJournal.com
  Follow me on Twitter:  http://twitter.com/FourthWorldSys



> On Wed, Aug 14, 2013 at 4:46 PM, Richard Gaskin
> <ambassador at fourthworld.com>wrote:
>
>> Geoff Canyon wrote:
>>
>>> On Wed, Aug 14, 2013 at 9:34 AM, Richard Gaskin wrote:
>>>
>>>> The tabstops property requires absolute metrics from the left edge of the
>>>> control; that is, each item is the complete measure from that edge, e.g.:
>>>>
>>>> 100,150,225
>>>>
>>>
>>> I've never found this to be the case. I just opened up LC 5.0, created a
>>> field with text and tabs in it, and in the message box typed:
>>>
>>>   set the tabstops of fld 1 to 200,100,150,75
>>>
>>> No crash, and the text formatted the way I expected. Now if I type in the
>>> message box:
>>>
>>>   put the tabstops of fld 1
>>>
>>> I get:
>>>
>>>   200,300,450,525
>>>
>>> Which is exactly what I expected; the first value was taken literally, and
>>> the rest were incremental. For kicks, I tried:
>>>
>>>   set the tabstops of fld 1 to 200,100,250,675
>>>
>>> and then
>>>
>>>   put the tabstops of fld 1
>>>
>>> gets me:
>>>
>>>   200,300,550,675
>>>
>>> Which means that the first value was absolute, the next two relative even
>>> though the third was larger than either of the first two (but not larger
>>> than their sum), and the last, which was larger than the sum of the three
>>> previous, was again absolute.
>>>
>>
>> You really expected the value coming back to be different from what you
>> set it to?
>>
>> If you set the text of a field to "Hello", do you expect getting the text
>> from the field to yield "World"? ;)
>>
>> It seems the engine is being very graceful in allowing both relative and
>> absolute values as input for the tabStops, but ultimately the values that
>> get stored are the absolute ones.
>>
>> If that weren't the case it would mean that Mark Waddingham wasted his
>> time adding the tabWidth property, and I don't think I've ever seen Mark
>> willfully waste his time.
>>
>> Now I'm wondering what the engine does with values in which each column is
>> larger than the last.  That is, if you set the tabstops to this:
>>
>> 100,150,200
>>
>> ...do you get this back:
>>
>> 100,250,450
>>
>> ..or:
>>
>> 100,150,200
>>
>> ?
>>
>> --
>>  Richard Gaskin
>>  Fourth World
>>  LiveCode training and consulting: http://www.fourthworld.com
>>  Webzine for LiveCode developers: http://www.LiveCodeJournal.com
>>  Follow me on Twitter:  http://twitter.com/**FourthWorldSys<http://twitter.com/FourthWorldSys>




More information about the use-livecode mailing list