Harry Potter's magic button - a solution to another tricky group bug
J. Landman Gay
jacque at hyperactivesw.com
Fri Aug 6 15:00:40 EDT 2010
On 8/6/10 12:01 PM, Wilhelm Sanke wrote:
> I need to rephrase the bug definition after Jacqueline has found out
> about the effect of the group scrollbars:
> "If an image is smaller than the dimensions of a group and the
> vscrollbar and the hscrollbar are set to true, then you cannot set the
> loc of the image to the loc of the group or reliably to any other x,y
> Actually, there are at least two bugs: The problem of "setting" the loc
> and that of "keeping" the loc - although the lockloc of the image is set
> to true. "Lockloc" in the context of the definition above is also broken.
> After having succesfully centered the image, it will - as reported -
> revert to a topleft position in the group
> - when you go to another card and then navigate back
> - when you set the imagedata
> - when you import a new image
> - when you toggle the scrollbars back to true
> - when you close the stack (even after having saved it again) and then
> reopen it.
All these, plus other issues you describe in the rest of the message,
boil down to the same thing: the loc of the image isn't applied
correctly whenever the group (or card, perhaps) is redrawn. Everything
in the above list redraws at least part of the card. Even just moving
the image causes a redraw.
When I did my brief tests it looked like the "set" command ignored the
requested location, even if I stored it in a variable first:
get the loc of grp "imagegroup" -- this was identified correctly
set the loc of img "eins" to it -- didn't work
This only failed when the group had scrollbars. So I think setting and
keeping the requested location are really the same problem, and fixing
one will likely fix the other.
I think you can probably revise the bug report with that info and it
will be enough for the team to identify the issue, especially if you
upload your example stack which makes the problem quite clear.
To work around it, I altered your button script to open images this way:
answer file "Choose image" -- with filter "*.jpg;*.png"
if it is empty then
exit to top
put it into tfile
put "binfile:" before tfile
set the lockloc of img "eins" to false
put URL tfile into img "eins"
set the lockloc of img "eins" to true
-- changes start here:
put (the width of img "eins" > the width of group "imagegroup" \
or the height of img "eins" > the height of \
group "imagegroup") into tIsLarge
set the hscrollbar of group "imagegroup" to tIsLarge
set the vscrollbar of group "imagegroup" to tIsLarge
BTW, I had to comment out the "with filter" which doesn't apply on Macs.
If you will be distributing this cross platform, use "with type" instead.
Since you only have to work around the problem when the image is opened
or reset, you shouldn't need to add anything else to other handlers.
Leave the scrollbars alone except when changing or importing an image.
This worked in your sample stack.
Jacqueline Landman Gay | jacque at hyperactivesw.com
HyperActive Software | http://www.hyperactivesw.com
More information about the Use-livecode