mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:32:44 +00:00 
			
		
		
		
	WorkspacePicker: Hide tray applet entirely when there's only 1 workspace
Instead of collapsing to a 1x1 applet, we now hide the applet window entirely, which stops it from taking up space in the system tray.
This commit is contained in:
		
							parent
							
								
									8862434376
								
							
						
					
					
						commit
						419e986dcc
					
				
					 2 changed files with 25 additions and 15 deletions
				
			
		|  | @ -113,15 +113,6 @@ private: | ||||||
| 
 | 
 | ||||||
| DesktopStatusWindow::DesktopStatusWindow() | DesktopStatusWindow::DesktopStatusWindow() | ||||||
| { | { | ||||||
|     GUI::Desktop::the().on_receive_screen_rects([&](GUI::Desktop&) { |  | ||||||
|         auto& desktop = GUI::Desktop::the(); |  | ||||||
|         if (desktop.workspace_rows() == 1 && desktop.workspace_columns() == 1) |  | ||||||
|             resize(0, 0); |  | ||||||
|         else |  | ||||||
|             resize(28, 16); |  | ||||||
| 
 |  | ||||||
|         update(); |  | ||||||
|     }); |  | ||||||
|     set_window_type(GUI::WindowType::Applet); |     set_window_type(GUI::WindowType::Applet); | ||||||
|     set_has_alpha_channel(true); |     set_has_alpha_channel(true); | ||||||
|     m_widget = &set_main_widget<DesktopStatusWidget>(); |     m_widget = &set_main_widget<DesktopStatusWidget>(); | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     TRY(Core::System::pledge("stdio recvfd sendfd rpath unix")); |     TRY(Core::System::pledge("stdio recvfd sendfd rpath unix")); | ||||||
| 
 | 
 | ||||||
|     auto app = TRY(GUI::Application::try_create(arguments)); |     auto app = TRY(GUI::Application::try_create(arguments)); | ||||||
|  |     app->set_quit_when_last_window_deleted(false); | ||||||
| 
 | 
 | ||||||
|     // We need to obtain the WM connection here as well before the pledge shortening.
 |     // We need to obtain the WM connection here as well before the pledge shortening.
 | ||||||
|     GUI::ConnectionToWindowManagerServer::the(); |     GUI::ConnectionToWindowManagerServer::the(); | ||||||
|  | @ -26,15 +27,33 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
| 
 | 
 | ||||||
|     auto window = TRY(DesktopStatusWindow::try_create()); |     auto window = TRY(DesktopStatusWindow::try_create()); | ||||||
|     window->set_title("WorkspacePicker"); |     window->set_title("WorkspacePicker"); | ||||||
|  |     window->resize(28, 16); | ||||||
| 
 | 
 | ||||||
|     auto& desktop = GUI::Desktop::the(); |     auto& desktop = GUI::Desktop::the(); | ||||||
|     if (desktop.workspace_rows() == 1 && desktop.workspace_columns() == 1) |  | ||||||
|         window->resize(0, 0); |  | ||||||
|     else |  | ||||||
|         window->resize(28, 16); |  | ||||||
| 
 | 
 | ||||||
|     window->show(); |     auto hide_tray_icon = [&] { | ||||||
|     window->make_window_manager(WindowServer::WMEventMask::WorkspaceChanges); |         window->hide(); | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     auto show_tray_icon = [&] { | ||||||
|  |         if (!window->is_visible()) { | ||||||
|  |             window->show(); | ||||||
|  |             window->make_window_manager(WindowServer::WMEventMask::WorkspaceChanges); | ||||||
|  |         } | ||||||
|  |     }; | ||||||
|  | 
 | ||||||
|  |     if (desktop.workspace_rows() != 1 || desktop.workspace_columns() != 1) { | ||||||
|  |         show_tray_icon(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     desktop.on_receive_screen_rects([&](auto&) { | ||||||
|  |         if (desktop.workspace_rows() == 1 && desktop.workspace_columns() == 1) { | ||||||
|  |             hide_tray_icon(); | ||||||
|  |         } else { | ||||||
|  |             window->update(); | ||||||
|  |             show_tray_icon(); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
| 
 | 
 | ||||||
|     return app->exec(); |     return app->exec(); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling