Fix crash of layer preview in some sizes, and removed overdraw

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1927 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Yves Rizoud 2012-03-09 20:06:55 +00:00
parent 747f9e8526
commit 5af6f7bd4d

View File

@ -1409,12 +1409,12 @@ void Main_handler(void)
if (!preview_is_visible)
{
previewW = Buttons_Pool[BUTTON_LAYER_SELECT].Width / Main_backups->Pages->Nb_layers;
previewW = Layer_button_width;
previewH = previewW * Main_image_height / Main_image_width;
if (previewH * Menu_factor_Y > Menu_Y) previewH = Menu_Y / Menu_factor_Y;
Open_popup((Buttons_Pool[BUTTON_LAYER_SELECT].X_offset + 2)*Menu_factor_X,
Menu_Y - previewH * Menu_factor_Y, previewW * layercount, previewH);
Menu_Y - previewH * Menu_factor_Y, Buttons_Pool[BUTTON_LAYER_SELECT].Width, previewH);
preview_is_visible = 1;
// Make the system think the menu is visible (Open_popup hides it)
@ -1426,20 +1426,24 @@ void Main_handler(void)
// NOT an else of the previous if - variable may have changed
if (preview_is_visible)
{
layer = Layer_under_mouse();
//layer = Layer_under_mouse();
for(layer = 0; layer < layercount; ++layer)
{
for (x = 0; x < Window_width; x++)
for (y = 0; y < Window_height; y++)
// Stop if the window is too small to show the
// layer button (ex: 320x200 can only display 12 layers)
if (layer*Layer_button_width+previewW > Window_width)
break;
for (x = 0; x < previewW; x++)
for (y = 0; y < previewH; y++)
{
int imgx = x * Main_image_width / previewW;
int imgy = y * Main_image_height / previewH;
Pixel_in_window(x + previewW*layer, y, *(Main_backups->Pages->Image[layer].Pixels
Pixel_in_window(layer*Layer_button_width + x, y, *(Main_backups->Pages->Image[layer].Pixels
+ imgx + imgy * Main_image_width));
}
Update_window_area(0,0,Window_width, Window_height);
}
Update_window_area(0,0,Window_width, Window_height);
}
} else if (preview_is_visible) {
int x = Mouse_K;