Problems with segmented control widget

Ben Rubinstein benr at cogapp.com
Fri Aug 30 05:19:05 EDT 2019


I forgot to mention that both these issues can be worked around - but 
surprisingly, the second is easier than the first.

Using "wait 0 seconds with messages" after changing the hilitedItems allows 
the hiliteChanged message to be processed immediately; but even then testing 
the lockMessages is unhelpful - it's always false (presumably because it's in 
a different thread? Although I thought that lockMessages was a global property?)

So the complete solution is to have a global set to mirror lockMessages, and 
wait with messages whenever the state is changed by script.

Anyway, my real question is: is it just a bug, fixable in the widget 
definiton, that messages emitted by some widgets (at least Navbar is the same) 
are not handled in the same way as native controls? Or is this a fundamental 
limitation of LCB?

Ben

On 30/08/2019 09:30, Ben Rubinstein via use-livecode wrote:
> I've been using this widget and found some issues. Before I report the bug(s) 
> I want to check if I'm missing some knowledge or understanding.
> 
> At various times I need to change the hilitedItems on the control by script; 
> at other times I need to react when the user does so. For the latter case I 
> respond to the "hiliteChanged" message.
> 
> The problem came when I change the hilitedItems by script: it triggered 
> hiliteChanged causing all sorts of hilarity. I had trouble tracking it down 
> because when I stepped through the code I couldn't see any point when the 
> problems occurred. Setting lockMessages didn't help.  And even when I checked 
> the lockMessages in my hiliteChanged handler, the aberrant behaviour continued..
> 
> After further investigation, the upshot is that there are two issues:
> 
> - the widget pays no attention to the lockMessages in deciding to post 
> "hiliteChanged"
> 
> - although it redraws immediately in response to a change in hilitedItems, the 
> hiliteChanged message (or potentially multiple messages stacked up) is not 
> sent until idle time.
> 
> (The latter issue explains my problem with spotting where the issue was 
> occurring, and also why checking the lockMessages in my hiliteChanged handler 
> didn't help - because by the time the handler was invoked, the lockMessages 
> *was* false.)
> 
> The first issue is presumably straightforward to address.
> 
> Is there some fundamental property of widgets that make it impossible to fix 
> the second issue?
> 
> TIA,
> 
> Ben
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
> 




More information about the use-livecode mailing list