mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:52:45 +00:00 
			
		
		
		
	DisplaySettings: Show revert dialog only for resolution/dpi changes.
This commit is contained in:
		
							parent
							
								
									a4d4571522
								
							
						
					
					
						commit
						4f80bb6ce3
					
				
					 1 changed files with 22 additions and 20 deletions
				
			
		|  | @ -283,28 +283,30 @@ void DisplaySettingsWidget::send_settings_to_window_server() | |||
|         current_scale_factor = 1; | ||||
|     } | ||||
| 
 | ||||
|     auto result = GUI::WindowServerConnection::the().send_sync<Messages::WindowServer::SetResolution>(m_monitor_widget->desktop_resolution(), m_monitor_widget->desktop_scale_factor()); | ||||
|     if (!result->success()) { | ||||
|         GUI::MessageBox::show(nullptr, String::formatted("Reverting to resolution {}x{} @ {}x", result->resolution().width(), result->resolution().height(), result->scale_factor()), | ||||
|             "Unable to set resolution", GUI::MessageBox::Type::Error); | ||||
|     } else { | ||||
|         auto box = GUI::MessageBox::construct(window(), String::formatted("Do you want to keep the new settings? They will be reverted after 10 seconds."), | ||||
|             String::formatted("New screen resolution: {}x{} @ {}x", m_monitor_widget->desktop_resolution().width(), m_monitor_widget->desktop_resolution().height(), | ||||
|                 m_monitor_widget->desktop_scale_factor()), | ||||
|             GUI::MessageBox::Type::Question, GUI::MessageBox::InputType::YesNo); | ||||
|         box->set_icon(window()->icon()); | ||||
|     if (current_resolution != m_monitor_widget->desktop_resolution() || current_scale_factor != m_monitor_widget->desktop_scale_factor()) { | ||||
|         auto result = GUI::WindowServerConnection::the().send_sync<Messages::WindowServer::SetResolution>(m_monitor_widget->desktop_resolution(), m_monitor_widget->desktop_scale_factor()); | ||||
|         if (!result->success()) { | ||||
|             GUI::MessageBox::show(nullptr, String::formatted("Reverting to resolution {}x{} @ {}x", result->resolution().width(), result->resolution().height(), result->scale_factor()), | ||||
|                 "Unable to set resolution", GUI::MessageBox::Type::Error); | ||||
|         } else { | ||||
|             auto box = GUI::MessageBox::construct(window(), String::formatted("Do you want to keep the new settings? They will be reverted after 10 seconds."), | ||||
|                 String::formatted("New screen resolution: {}x{} @ {}x", m_monitor_widget->desktop_resolution().width(), m_monitor_widget->desktop_resolution().height(), | ||||
|                     m_monitor_widget->desktop_scale_factor()), | ||||
|                 GUI::MessageBox::Type::Question, GUI::MessageBox::InputType::YesNo); | ||||
|             box->set_icon(window()->icon()); | ||||
| 
 | ||||
|         // If after 10 seconds the user doesn't close the message box, just close it.
 | ||||
|         auto timer = Core::Timer::construct(10000, [&] { | ||||
|             box->close(); | ||||
|         }); | ||||
|             // If after 10 seconds the user doesn't close the message box, just close it.
 | ||||
|             auto timer = Core::Timer::construct(10000, [&] { | ||||
|                 box->close(); | ||||
|             }); | ||||
| 
 | ||||
|         // If the user selects "No", closes the window or the window gets closed by the 10 seconds timer, revert the changes.
 | ||||
|         if (box->exec() != GUI::MessageBox::ExecYes) { | ||||
|             result = GUI::WindowServerConnection::the().send_sync<Messages::WindowServer::SetResolution>(current_resolution, current_scale_factor); | ||||
|             if (!result->success()) { | ||||
|                 GUI::MessageBox::show(nullptr, String::formatted("Reverting to resolution {}x{} @ {}x", result->resolution().width(), result->resolution().height(), result->scale_factor()), | ||||
|                     "Unable to set resolution", GUI::MessageBox::Type::Error); | ||||
|             // If the user selects "No", closes the window or the window gets closed by the 10 seconds timer, revert the changes.
 | ||||
|             if (box->exec() != GUI::MessageBox::ExecYes) { | ||||
|                 result = GUI::WindowServerConnection::the().send_sync<Messages::WindowServer::SetResolution>(current_resolution, current_scale_factor); | ||||
|                 if (!result->success()) { | ||||
|                     GUI::MessageBox::show(nullptr, String::formatted("Reverting to resolution {}x{} @ {}x", result->resolution().width(), result->resolution().height(), result->scale_factor()), | ||||
|                         "Unable to set resolution", GUI::MessageBox::Type::Error); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 belginul
						belginul