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() | ||||
| { | ||||
|     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_has_alpha_channel(true); | ||||
|     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")); | ||||
| 
 | ||||
|     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.
 | ||||
|     GUI::ConnectionToWindowManagerServer::the(); | ||||
|  | @ -26,15 +27,33 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | |||
| 
 | ||||
|     auto window = TRY(DesktopStatusWindow::try_create()); | ||||
|     window->set_title("WorkspacePicker"); | ||||
| 
 | ||||
|     auto& desktop = GUI::Desktop::the(); | ||||
|     if (desktop.workspace_rows() == 1 && desktop.workspace_columns() == 1) | ||||
|         window->resize(0, 0); | ||||
|     else | ||||
|     window->resize(28, 16); | ||||
| 
 | ||||
|     auto& desktop = GUI::Desktop::the(); | ||||
| 
 | ||||
|     auto hide_tray_icon = [&] { | ||||
|         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(); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling