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:
		
							parent
							
								
									747f9e8526
								
							
						
					
					
						commit
						5af6f7bd4d
					
				
							
								
								
									
										20
									
								
								src/engine.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								src/engine.c
									
									
									
									
									
								
							@ -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;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user