Fix issue 380: Exiting zoom mode in a large image jumps the viewport to a 'random' position
git-svn-id: svn://pulkomandy.tk/GrafX2/trunk@1620 416bcca6-2ee7-4201-b75f-2eb2f807beb1
This commit is contained in:
parent
82e469a11e
commit
db8bde5ba6
@ -1522,8 +1522,6 @@ void Button_Page(void)
|
|||||||
SWAP_WORDS (Main_visible_image.Height,Spare_visible_image.Height)
|
SWAP_WORDS (Main_visible_image.Height,Spare_visible_image.Height)
|
||||||
SWAP_SHORTS(Main_offset_X,Spare_offset_X)
|
SWAP_SHORTS(Main_offset_X,Spare_offset_X)
|
||||||
SWAP_SHORTS(Main_offset_Y,Spare_offset_Y)
|
SWAP_SHORTS(Main_offset_Y,Spare_offset_Y)
|
||||||
SWAP_SHORTS(Old_main_offset_X,Old_spare_offset_X)
|
|
||||||
SWAP_SHORTS(Old_main_offset_Y,Old_spare_offset_Y)
|
|
||||||
SWAP_SHORTS(Main_separator_position,Spare_separator_position)
|
SWAP_SHORTS(Main_separator_position,Spare_separator_position)
|
||||||
SWAP_SHORTS(Main_X_zoom,Spare_X_zoom)
|
SWAP_SHORTS(Main_X_zoom,Spare_X_zoom)
|
||||||
SWAP_FLOATS(Main_separator_proportion,Spare_separator_proportion)
|
SWAP_FLOATS(Main_separator_proportion,Spare_separator_proportion)
|
||||||
@ -3736,8 +3734,6 @@ void Button_Magnify(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Old_main_offset_X=Main_offset_X;
|
|
||||||
Old_main_offset_Y=Main_offset_Y;
|
|
||||||
Compute_magnifier_data();
|
Compute_magnifier_data();
|
||||||
if ((!Config.Fast_zoom) || (Mouse_Y>=Menu_Y) || Coming_from_zoom_factor_menu)
|
if ((!Config.Fast_zoom) || (Mouse_Y>=Menu_Y) || Coming_from_zoom_factor_menu)
|
||||||
{
|
{
|
||||||
@ -3830,24 +3826,20 @@ void Button_Unselect_magnifier(void)
|
|||||||
// On sort du mode loupe
|
// On sort du mode loupe
|
||||||
Main_magnifier_mode=0;
|
Main_magnifier_mode=0;
|
||||||
|
|
||||||
/*
|
|
||||||
// --> Recalculer le décalage de l'écran lorsqu'on sort de la loupe <--
|
// --> Recalculer le décalage de l'écran lorsqu'on sort de la loupe <--
|
||||||
// Centrage "brut" de lécran par rapport à la loupe
|
// Centrage "brut" de lécran par rapport à la loupe
|
||||||
Main_offset_X=Main_magnifier_offset_X-((Screen_width-Main_magnifier_width)>>1);
|
Main_offset_X=Main_magnifier_offset_X-((Screen_width-Main_magnifier_width)>>1);
|
||||||
Main_offset_Y=Main_magnifier_offset_Y-((Menu_Y-Main_magnifier_height)>>1);
|
Main_offset_Y=Main_magnifier_offset_Y-((Menu_Y-Main_magnifier_height)>>1);
|
||||||
*/
|
|
||||||
// Correction en cas de débordement de l'image
|
// Correction en cas de débordement de l'image
|
||||||
if (Old_main_offset_X+Screen_width>Main_image_width)
|
if (Main_offset_X+Screen_width>Main_image_width)
|
||||||
Main_offset_X=Main_image_width-Screen_width;
|
Main_offset_X=Main_image_width-Screen_width;
|
||||||
else
|
|
||||||
Main_offset_X=Old_main_offset_X;
|
|
||||||
if (Main_offset_X<0)
|
if (Main_offset_X<0)
|
||||||
Main_offset_X=0;
|
Main_offset_X=0;
|
||||||
|
|
||||||
if (Old_main_offset_Y+Menu_Y>Main_image_height)
|
if (Main_offset_Y+Menu_Y>Main_image_height)
|
||||||
Main_offset_Y=Main_image_height-Menu_Y;
|
Main_offset_Y=Main_image_height-Menu_Y;
|
||||||
else
|
|
||||||
Main_offset_Y=Old_main_offset_Y;
|
|
||||||
if (Main_offset_Y<0)
|
if (Main_offset_Y<0)
|
||||||
Main_offset_Y=0;
|
Main_offset_Y=0;
|
||||||
|
|
||||||
|
|||||||
@ -300,10 +300,6 @@ GFX2_GLOBAL short Main_image_height;
|
|||||||
GFX2_GLOBAL short Main_offset_X;
|
GFX2_GLOBAL short Main_offset_X;
|
||||||
/// Y position (in image space) of the pixel to display in the top left corner of screen.
|
/// Y position (in image space) of the pixel to display in the top left corner of screen.
|
||||||
GFX2_GLOBAL short Main_offset_Y;
|
GFX2_GLOBAL short Main_offset_Y;
|
||||||
/// Backup of ::Main_offset_X, used to store it while the magnifier is open.
|
|
||||||
GFX2_GLOBAL short Old_main_offset_X;
|
|
||||||
/// Backup of ::Main_offset_Y, used to store it while the magnifier is open.
|
|
||||||
GFX2_GLOBAL short Old_main_offset_Y;
|
|
||||||
/// Name of the directory that holds the image currently edited.
|
/// Name of the directory that holds the image currently edited.
|
||||||
GFX2_GLOBAL char Main_file_directory[1024];
|
GFX2_GLOBAL char Main_file_directory[1024];
|
||||||
/// Filename (without directory) of the image currently edited.
|
/// Filename (without directory) of the image currently edited.
|
||||||
@ -370,10 +366,6 @@ GFX2_GLOBAL short Spare_image_height;
|
|||||||
GFX2_GLOBAL short Spare_offset_X;
|
GFX2_GLOBAL short Spare_offset_X;
|
||||||
/// Y position (in image space) of the pixel to display in the top left corner of screen.
|
/// Y position (in image space) of the pixel to display in the top left corner of screen.
|
||||||
GFX2_GLOBAL short Spare_offset_Y;
|
GFX2_GLOBAL short Spare_offset_Y;
|
||||||
/// Backup of ::Main_offset_X, used to store it while the magnifier is open.
|
|
||||||
GFX2_GLOBAL short Old_spare_offset_X;
|
|
||||||
/// Backup of ::Main_offset_Y, used to store it while the magnifier is open.
|
|
||||||
GFX2_GLOBAL short Old_spare_offset_Y;
|
|
||||||
/// Name of the directory that holds the image currently edited as spare page.
|
/// Name of the directory that holds the image currently edited as spare page.
|
||||||
GFX2_GLOBAL char Spare_file_directory[MAX_PATH_CHARACTERS];
|
GFX2_GLOBAL char Spare_file_directory[MAX_PATH_CHARACTERS];
|
||||||
/// Filename (without directory) of the image currently edited as spare page.
|
/// Filename (without directory) of the image currently edited as spare page.
|
||||||
|
|||||||
@ -475,8 +475,6 @@ int Init_program(int argc,char * argv[])
|
|||||||
// On initialise d'ot' trucs
|
// On initialise d'ot' trucs
|
||||||
Main_offset_X=0;
|
Main_offset_X=0;
|
||||||
Main_offset_Y=0;
|
Main_offset_Y=0;
|
||||||
Old_main_offset_X=0;
|
|
||||||
Old_main_offset_Y=0;
|
|
||||||
Main_separator_position=0;
|
Main_separator_position=0;
|
||||||
Main_X_zoom=0;
|
Main_X_zoom=0;
|
||||||
Main_separator_proportion=INITIAL_SEPARATOR_PROPORTION;
|
Main_separator_proportion=INITIAL_SEPARATOR_PROPORTION;
|
||||||
@ -488,8 +486,6 @@ int Init_program(int argc,char * argv[])
|
|||||||
Main_magnifier_offset_Y=0;
|
Main_magnifier_offset_Y=0;
|
||||||
Spare_offset_X=0;
|
Spare_offset_X=0;
|
||||||
Spare_offset_Y=0;
|
Spare_offset_Y=0;
|
||||||
Old_spare_offset_X=0;
|
|
||||||
Old_spare_offset_Y=0;
|
|
||||||
Spare_separator_position=0;
|
Spare_separator_position=0;
|
||||||
Spare_X_zoom=0;
|
Spare_X_zoom=0;
|
||||||
Spare_separator_proportion=INITIAL_SEPARATOR_PROPORTION;
|
Spare_separator_proportion=INITIAL_SEPARATOR_PROPORTION;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user