Fixed a potentially dangerous bug : the palette setup screen was reading things in an area just released when closing the window ! Makes the palette sliders work correctly for me.

git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@744 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
Adrien Destugues 2009-04-08 07:55:52 +00:00
parent c98bfafb76
commit 603ed38297

View File

@ -2110,6 +2110,7 @@ void Button_Secondary_palette(void)
T_Scroller_button * rgb_scale_slider;
char str[4];
byte palette_vertical = Config.Palette_vertical;
byte palette_cols, palette_lines, rgb_scale;
byte palette_needs_redraw=0;
Open_window(200,146,"Palettes");
@ -2156,18 +2157,22 @@ void Button_Secondary_palette(void)
switch(clicked_button)
{
case 5:
// Column slider
Num2str(256-Window_attribute2,str,3);
Print_in_window(38,89,str,MC_Black,MC_Light);
break;
case 6:
// Line slider
Num2str(16-Window_attribute2,str,3);
Print_in_window(94,89,str,MC_Black,MC_Light);
break;
case 7:
// RGB scale slider
Num2str(256-Window_attribute2,str,3);
Print_in_window(157,89,str,MC_Black,MC_Light);
break;
case 8:
// Vertical switch
palette_vertical = !palette_vertical;
Hide_cursor();
Print_in_window(38,108,(palette_vertical)?"X":" ",MC_Black,MC_Light);
@ -2177,6 +2182,11 @@ void Button_Secondary_palette(void)
}
while (clicked_button!=1 && clicked_button!=3 && clicked_button!=4);
// We need to get the sliders positions before closing the window, because they will be freed.
palette_cols=256-columns_slider->Position;
palette_lines=16-lines_slider->Position;
rgb_scale=256-rgb_scale_slider->Position;
Close_window();
Unselect_bouton(BUTTON_PALETTE);
Display_cursor();
@ -2189,16 +2199,16 @@ void Button_Secondary_palette(void)
Config.Palette_vertical=palette_vertical;
palette_needs_redraw=1;
}
if (columns_slider->Position!=256-Config.Palette_cells_X ||
lines_slider->Position!=16-Config.Palette_cells_Y)
if (palette_cols!=Config.Palette_cells_X ||
palette_lines!=Config.Palette_cells_Y)
{
Config.Palette_cells_X = 256-columns_slider->Position;
Config.Palette_cells_Y = 16-lines_slider->Position;
Config.Palette_cells_X = palette_cols;
Config.Palette_cells_Y = palette_lines;
palette_needs_redraw=1;
}
if (rgb_scale_slider->Position!=256-RGB_scale)
if (rgb_scale!=RGB_scale)
{
Set_palette_RGB_scale(256-rgb_scale_slider->Position);
Set_palette_RGB_scale(rgb_scale);
Set_palette(Main_palette);
}