SDL2: restore window position on startup
This commit is contained in:
		
							parent
							
								
									58c53c33b8
								
							
						
					
					
						commit
						7de6a95291
					
				
							
								
								
									
										12
									
								
								src/input.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/input.c
									
									
									
									
									
								
							@ -1608,6 +1608,18 @@ int Get_input(int sleep_time)
 | 
				
			|||||||
                  break;
 | 
					                  break;
 | 
				
			||||||
                case SDL_WINDOWEVENT_MOVED:
 | 
					                case SDL_WINDOWEVENT_MOVED:
 | 
				
			||||||
                  GFX2_Log(GFX2_DEBUG, "SDL_WINDOWEVENT_MOVED %d (%d, %d)\n", event.window.windowID, event.window.data1, event.window.data2);
 | 
					                  GFX2_Log(GFX2_DEBUG, "SDL_WINDOWEVENT_MOVED %d (%d, %d)\n", event.window.windowID, event.window.data1, event.window.data2);
 | 
				
			||||||
 | 
					                  Config.Window_pos_x = event.window.data1;
 | 
				
			||||||
 | 
					                  Config.Window_pos_y = event.window.data2;
 | 
				
			||||||
 | 
					#if SDL_VERSION_ATLEAST(2, 0, 5)
 | 
				
			||||||
 | 
					                  {
 | 
				
			||||||
 | 
					                    // correct position by taking window decoration into account
 | 
				
			||||||
 | 
					                    int offset_x, offset_y;
 | 
				
			||||||
 | 
					                    if (SDL_GetWindowBordersSize(SDL_GetWindowFromID(event.window.windowID), &offset_y, &offset_x, NULL, NULL) == 0) {
 | 
				
			||||||
 | 
					                      Config.Window_pos_x -= offset_x;
 | 
				
			||||||
 | 
					                      Config.Window_pos_y -= offset_y;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
                  break;
 | 
					                  break;
 | 
				
			||||||
                case SDL_WINDOWEVENT_ENTER:
 | 
					                case SDL_WINDOWEVENT_ENTER:
 | 
				
			||||||
                  GFX2_Log(GFX2_DEBUG, "SDL_WINDOWEVENT_ENTER %d\n", event.window.windowID);
 | 
					                  GFX2_Log(GFX2_DEBUG, "SDL_WINDOWEVENT_ENTER %d\n", event.window.windowID);
 | 
				
			||||||
 | 
				
			|||||||
@ -1251,7 +1251,7 @@ void Program_shutdown(void)
 | 
				
			|||||||
      Config.Window_pos_y = windowplacement.rcNormalPosition.top;
 | 
					      Config.Window_pos_y = windowplacement.rcNormalPosition.top;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  #elif !defined(USE_X11)
 | 
					  #elif !defined(USE_X11) && !defined(USE_SDL2)
 | 
				
			||||||
  // All other targets: irrelevant dimensions.
 | 
					  // All other targets: irrelevant dimensions.
 | 
				
			||||||
  // Do not attempt to force them back on next program run.
 | 
					  // Do not attempt to force them back on next program run.
 | 
				
			||||||
    Config.Window_pos_x = 9999;
 | 
					    Config.Window_pos_x = 9999;
 | 
				
			||||||
 | 
				
			|||||||
@ -153,7 +153,9 @@ void GFX2_Set_mode(int *width, int *height, int fullscreen)
 | 
				
			|||||||
  // SDL2
 | 
					  // SDL2
 | 
				
			||||||
  if (Window_SDL == NULL)
 | 
					  if (Window_SDL == NULL)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    Window_SDL = SDL_CreateWindow("GrafX2", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
 | 
					    Window_SDL = SDL_CreateWindow("GrafX2",
 | 
				
			||||||
 | 
					                                  Config.Window_pos_x != 9999 ? Config.Window_pos_x : (int)SDL_WINDOWPOS_UNDEFINED,
 | 
				
			||||||
 | 
					                                  Config.Window_pos_y != 9999 ? Config.Window_pos_y : (int)SDL_WINDOWPOS_UNDEFINED,
 | 
				
			||||||
                                  *width, *height, (fullscreen?SDL_WINDOW_FULLSCREEN:SDL_WINDOW_RESIZABLE));
 | 
					                                  *width, *height, (fullscreen?SDL_WINDOW_FULLSCREEN:SDL_WINDOW_RESIZABLE));
 | 
				
			||||||
    SDL_SetWindowIcon(Window_SDL, icon);
 | 
					    SDL_SetWindowIcon(Window_SDL, icon);
 | 
				
			||||||
    Renderer_SDL = SDL_CreateRenderer(Window_SDL, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
 | 
					    Renderer_SDL = SDL_CreateRenderer(Window_SDL, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user