Yes, this is certainly an annoying bug, especially for games.

On Sat, May 23, 2009 at 5:44 PM, Satoshi Asakawa <[email protected]> wrote:
> Hi Devyn,
>
> Thank you for the confirmation.
> That's the same as on my Windows XP. Strange...
>
>> But still, start does not work for the dynamic creation
>> of objects.
> Yes, also the same. :(
>
> And I attempted the following snippet using "50%".
> It works except dynamic creation. I need to resize or
> reappear window for displaying the message.
>
> Shoes.app do
>   s = flow :top => "50%", :left => "50%"
>   start do
>     para "Stack is at (#{s.top}, #{s.left})"
>   end
> end
>
> Umm...
> ashbb
>
> On Sun, May 24, 2009 at 7:26 AM, Devyn Cairns <[email protected]>
> wrote:
>>
>> But if you change 0.5 to 10, it works, strangely enough.
>>
>> But still, start does not work for the dynamic creation of objects.
>>
>> On Sat, May 23, 2009 at 3:24 PM, Devyn Cairns <[email protected]>
>> wrote:
>> > First of all, you have to change the "50%" to 0.50. Otherwise it doesn't
>> > work.
>> > After that, it still reports 0,0. On Linux GTK.
>> >
>> > On Fri, May 22, 2009 at 11:06 PM, Satoshi Asakawa <[email protected]>
>> > wrote:
>> >> Hi Devyn,
>> >>
>> >> Thanks for the reply. :)
>> >>
>> >> Does the following snippet work well on your pc/mac?
>> >>
>> >> Shoes.app do
>> >>   o = oval :top => "50%", :left => "50%"
>> >>   start do
>> >>     para "oval is at (#{o.top}, #{o.left})"
>> >>   end
>> >> end
>> >>
>> >> -- ashbb
>> >>
>> >> On Sat, May 23, 2009 at 2:10 PM, Devyn Cairns <[email protected]>
>> >> wrote:
>> >>>
>> >>> Oh, well read the manual: Shoes thinks of percentages in decimals from
>> >>> 0.0 to 1.0 (0% to 100%). 50% = 0.5 in Shoes.
>> >>>
>> >>> On Fri, May 22, 2009 at 10:10 AM, Satoshi Asakawa <[email protected]>
>> >>> wrote:
>> >>> > Hi _why,
>> >>> >
>> >>> > Thank you for the explanation.
>> >>> > I understood to need `start` block!
>> >>> >
>> >>> > But still a bit confusing for the following behavior. :(
>> >>> >
>> >>> > Shoes.app do
>> >>> >   o = oval :top => "50%", :left => "50%"
>> >>> >   start do
>> >>> >     para "oval is at (#{o.top}, #{o.left})"
>> >>> >   end
>> >>> > end
>> >>> >
>> >>> > Run the above snippet, it didn't work and I got the error
>> >>> > on Shoes console window:
>> >>> >
>> >>> > Error in C:/Program Files/Common Files/Shoes/0.r1134/lib/shoes.rb
>> >>> > line
>> >>> > 394 :
>> >>> > can't convert String into Integer
>> >>> >
>> >>> > Then replaced "50%" to 0.5.
>> >>> > It works but displayed `oval is at(0, 0)`.
>> >>> >
>> >>> > Then again replaced "50%" to 100.
>> >>> > It works and displayed `oval is at(100, 100)`.
>> >>> >
>> >>> > Umm... I'm using Windows XP and Shoes 2 (0.r1134).
>> >>> >
>> >>> > Regards,
>> >>> > ashbb
>> >>> >
>> >>> >
>> >>> > On Sat, May 23, 2009 at 12:50 AM, _why <[email protected]>
>> >>> > wrote:
>> >>> >>
>> >>> >> On Fri, May 22, 2009 at 12:04:35PM +0000, Ehsanul Hoque wrote:
>> >>> >> > Ahh, well I did expect it to work like that, hmmm... It still
>> >>> >> > could be justified I suppose, it's really upto _why whether
>> >>> >> > it's a bug, or just a "feature", just how it works.
>> >>> >>
>> >>> >> Until the image is drawn, you can't really know `top` and `left`.
>> >>> >>
>> >>> >> For instance, let's say you're using percentages:
>> >>> >>
>> >>> >>  Shoes.app do
>> >>> >>    o = oval :top => "50%", :left => "50%", :radius => 20
>> >>> >>    para "Oval is at (#{oval.top}, #{oval.left})"
>> >>> >>  end
>> >>> >>
>> >>> >> Until we compute the window size, the coordinates can't be shown.
>> >>> >> So, what you do is get the coordinates in the `start` block:
>> >>> >>
>> >>> >>  Shoes.app do
>> >>> >>    o = oval :top => "50%", :left => "50%", :radius => 20
>> >>> >>    start do
>> >>> >>      para "Oval is at (#{oval.top}, #{oval.left})"
>> >>> >>    end
>> >>> >>  end
>> >>> >>
>> >>> >> Because the start block runs after the first paint.
>> >>> >>
>> >>> >> It still feels like a bug, but I'm not sure if I want to recompute
>> >>> >> every slot each time a new element is added. I will probably have
>> >>> >> `top` and `left` and `width` and so on return exceptions if you
>> >>> >> try to use them before the window is painted... I don't know.
>> >>> >>
>> >>> >> _why
>> >>> >
>> >>> >
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>>    ~devyn
>> >>
>> >>
>> >
>> >
>> >
>> > --
>> >    ~devyn
>> >
>>
>>
>>
>> --
>>    ~devyn
>
>



-- 
    ~devyn

Reply via email to