I had some free time so I gave edge shoes some play time and found a
few problems/odd features.
With git shoes (Last commit e18bd270d7f6e8b71743bfcf4844c05e52f640ee)
on Windows XP, I'm seeing strange behavior with the following code:
1. A simple
Shoes.app do
para "Hello World"
end
Why does this scroll with the scroll wheel?!?
2.
Shoes.app :width => 500, :height => 500 do
stack :scroll => false, :width => 1.0, :height => 1.0 do
para "Hello World"
end
end
Now this one is interesting because if you 'aggressively' scroll the
scroll wheel you can see it redrawn with it scrolled, then immediately
'un-scroll' and redraw...
3.
Shoes.app :width => 500, :height => 500 do
rotate 45
arrow(500, 0, 20)
rotate 90
arrow(0, 0, 20)
rotate 90
arrow(0, 500, 20)
rotate 90
arrow(500, 500, 20)
end
This should give me arrows in the corners of the screen; however,
instead all of the arrows are offset by the size of the arrow slot.
This seems like strange behavior but perhaps it is intended?
4. Fullscreen. I know this is undocumented but the :fullscreen
attribute was added several commits ago so I've been playing with it.
I haven't had a chance to experiment on other platforms but on WinXP,
fullscreen properly eliminates everything except the canvas, but it
does not size the canvas to be fullscreen. So, given that my
resolution is 1920x1200 I tried
Shoes.app :width => 1920, :height => 1200, :fullscreen => true do
rotate 45
arrow(1920, 0, 20)
rotate 90
arrow(0, 0, 20)
rotate 90
arrow(0, 1200, 20)
rotate 90
arrow(1920, 1200, 20)
end
Beyond the previously mentioned problems with the arrows not being in
the correct places, its apparent that setting the width and height to
1920x1200 creates a canvas larger than that size.
It would be nice if setting :fullscreen => true automatically made the
window fullscreen sized. I modified shoes_native_app_open in windows.h
to add
if (app->fullscreen) {
DEVMODE dm;
ZeroMemory(&dm, sizeof(dm));
dm.dmSize = sizeof(dm);
EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm);
app->width = dm.dmPelsWidth;
app->height = dm.dmPelsHeight;
}
Which properly set the width and the height to the fullscreen size
(which is still too big somehow).
I'm sure the canvas being too large has something to do with having
space previously allocated for the title bar and borders. Does anyone
know precisely how wide these elements are so they can be subtracted
from dmPelsWidth and dmPelsHeight?
Good talk,
Garret Buell