diff --git a/gfx2.cfg b/gfx2.cfg index 8dde4a90..fb4cd705 100644 Binary files a/gfx2.cfg and b/gfx2.cfg differ diff --git a/sdlscreen.c b/sdlscreen.c index 5c11f5d9..cd2e6ead 100644 --- a/sdlscreen.c +++ b/sdlscreen.c @@ -40,7 +40,7 @@ // UPDATE_METHOD can be set from makefile, otherwise it's selected here // depending on the platform : #ifndef UPDATE_METHOD - #if defined(__macosx__) || defined(__FreeBSD__) + #if defined(__macosx__) #define UPDATE_METHOD UPDATE_METHOD_FULL_PAGE #else #define UPDATE_METHOD UPDATE_METHOD_CUMULATED diff --git a/windows.c b/windows.c index 32a1a78f..fe8d9f17 100644 --- a/windows.c +++ b/windows.c @@ -1635,24 +1635,28 @@ void Display_cursor(void) } else { + DEBUG("B",0); temp=(Config.Cursor)?CURSOR_SHAPE_THIN_COLORPICKER:CURSOR_SHAPE_COLORPICKER; start_x=Mouse_X-Cursor_offset_X[temp]; start_y=Mouse_Y-Cursor_offset_Y[temp]; - for (x_pos=start_x,counter_x=0;counter_x<15;x_pos++,counter_x++) - for (y_pos=start_y,counter_y=0;counter_y<15;y_pos++,counter_y++) - { - color=GFX_cursor_sprite[temp][counter_y][counter_x]; - if ( (x_pos>=0) && (x_pos=0) && (y_pos=Screen_width) break; + for (y_pos=start_y,counter_y=0;counter_y<15;y_pos++,counter_y++) + { + if(y_pos<0) continue; + if(y_pos>=Screen_height) break; + color=GFX_cursor_sprite[temp][counter_y][counter_x]; + // On sauvegarde dans CURSOR_BACKGROUND pour restaurer plus tard + CURSOR_BACKGROUND[counter_y][counter_x]=Read_pixel(x_pos,y_pos); + if (color!=MC_Trans) + Pixel(x_pos,y_pos,color); + } + } + Update_rect(Max(start_x,0),Max(start_y,0),counter_x,counter_y); + } } break; @@ -1941,12 +1945,18 @@ void Hide_cursor(void) start_x=Mouse_X-Cursor_offset_X[temp]; start_y=Mouse_Y-Cursor_offset_Y[temp]; - for (x_pos=start_x,counter_x=0;counter_x<15;x_pos++,counter_x++) - for (y_pos=start_y,counter_y=0;counter_y<15;y_pos++,counter_y++) - if ( (x_pos>=0) && (x_pos=0) && (y_pos=Screen_width) break; + for (y_pos=start_y,counter_y=0;counter_y<15;y_pos++,counter_y++) + { + if(y_pos<0) continue; + if(y_pos>=Screen_height) break; + Pixel(x_pos,y_pos,CURSOR_BACKGROUND[counter_y][counter_x]); + } + } + Update_rect(Max(start_x,0),Max(start_y,0),counter_x,counter_y); } } if (!Paintbrush_hidden)