Harden screen position check against missing monitors
This commit is contained in:
		
							parent
							
								
									b882917af8
								
							
						
					
					
						commit
						8fac2ada62
					
				@ -52,7 +52,7 @@ void AOApplication::construct_lobby()
 | 
				
			|||||||
  w_lobby = new Lobby(this, net_manager);
 | 
					  w_lobby = new Lobby(this, net_manager);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  auto point = Options::getInstance().windowPosition("lobby");
 | 
					  auto point = Options::getInstance().windowPosition("lobby");
 | 
				
			||||||
  if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value())
 | 
					  if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value() || !pointExistsOnScreen(point.value()))
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    QRect geometry = QGuiApplication::primaryScreen()->geometry();
 | 
					    QRect geometry = QGuiApplication::primaryScreen()->geometry();
 | 
				
			||||||
    int x = (geometry.width() - w_lobby->width()) / 2;
 | 
					    int x = (geometry.width() - w_lobby->width()) / 2;
 | 
				
			||||||
@ -233,6 +233,18 @@ void AOApplication::initBASS()
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					bool AOApplication::pointExistsOnScreen(QPoint point)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  for (QScreen *screen : QApplication::screens())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    if (screen->availableGeometry().contains(point))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  return false;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if (defined(_WIN32) || defined(_WIN64))
 | 
					#if (defined(_WIN32) || defined(_WIN64))
 | 
				
			||||||
void AOApplication::load_bass_plugins()
 | 
					void AOApplication::load_bass_plugins()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
				
			|||||||
@ -325,6 +325,8 @@ public:
 | 
				
			|||||||
  // The file name of the log file in base/logs.
 | 
					  // The file name of the log file in base/logs.
 | 
				
			||||||
  QString log_filename;
 | 
					  QString log_filename;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool pointExistsOnScreen(QPoint point);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void initBASS();
 | 
					  void initBASS();
 | 
				
			||||||
  static void load_bass_plugins();
 | 
					  static void load_bass_plugins();
 | 
				
			||||||
  static void CALLBACK BASSreset(HSTREAM handle, DWORD channel, DWORD data, void *user);
 | 
					  static void CALLBACK BASSreset(HSTREAM handle, DWORD channel, DWORD data, void *user);
 | 
				
			||||||
 | 
				
			|||||||
@ -1373,7 +1373,7 @@ void Courtroom::done_received()
 | 
				
			|||||||
  if (Options::getInstance().restoreWindowPositionEnabled())
 | 
					  if (Options::getInstance().restoreWindowPositionEnabled())
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    auto maybe_point = Options::getInstance().windowPosition("courtroom");
 | 
					    auto maybe_point = Options::getInstance().windowPosition("courtroom");
 | 
				
			||||||
    if (maybe_point.has_value())
 | 
					    if (maybe_point.has_value() && ao_app->pointExistsOnScreen(maybe_point.value()))
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      qDebug() << maybe_point.value();
 | 
					      qDebug() << maybe_point.value();
 | 
				
			||||||
      QMainWindow::move(maybe_point.value());
 | 
					      QMainWindow::move(maybe_point.value());
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user