diff --git a/Base/res/icons/16x16/desktop.png b/Base/res/icons/16x16/desktop.png new file mode 100644 index 0000000000..08bff67889 Binary files /dev/null and b/Base/res/icons/16x16/desktop.png differ diff --git a/Base/res/icons/32x32/desktop.png b/Base/res/icons/32x32/desktop.png new file mode 100644 index 0000000000..5b99add22d Binary files /dev/null and b/Base/res/icons/32x32/desktop.png differ diff --git a/Userland/Libraries/LibGUI/FileIconProvider.cpp b/Userland/Libraries/LibGUI/FileIconProvider.cpp index ac20948f1e..d2748b8abc 100644 --- a/Userland/Libraries/LibGUI/FileIconProvider.cpp +++ b/Userland/Libraries/LibGUI/FileIconProvider.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, Andreas Kling + * Copyright (c) 2020-2021, Andreas Kling * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -45,6 +45,7 @@ static Icon s_hard_disk_icon; static Icon s_directory_icon; static Icon s_directory_open_icon; static Icon s_inaccessible_directory_icon; +static Icon s_desktop_directory_icon; static Icon s_home_directory_icon; static Icon s_home_directory_open_icon; static Icon s_file_icon; @@ -84,6 +85,7 @@ static void initialize_if_needed() s_inaccessible_directory_icon = Icon::default_icon("filetype-folder-inaccessible"); s_home_directory_icon = Icon::default_icon("home-directory"); s_home_directory_open_icon = Icon::default_icon("home-directory-open"); + s_desktop_directory_icon = Icon::default_icon("desktop"); s_file_icon = Icon::default_icon("filetype-unknown"); s_symlink_icon = Icon::default_icon("filetype-symlink"); s_socket_icon = Icon::default_icon("filetype-socket"); @@ -118,6 +120,12 @@ Icon FileIconProvider::home_directory_icon() return s_home_directory_icon; } +Icon FileIconProvider::desktop_directory_icon() +{ + initialize_if_needed(); + return s_desktop_directory_icon; +} + Icon FileIconProvider::home_directory_open_icon() { initialize_if_needed(); @@ -219,6 +227,8 @@ Icon FileIconProvider::icon_for_path(const String& path, mode_t mode) if (S_ISDIR(mode)) { if (path == Core::StandardPaths::home_directory()) return s_home_directory_icon; + if (path == Core::StandardPaths::desktop_directory()) + return s_desktop_directory_icon; if (access(path.characters(), R_OK | X_OK) < 0) return s_inaccessible_directory_icon; return s_directory_icon; diff --git a/Userland/Libraries/LibGUI/FileIconProvider.h b/Userland/Libraries/LibGUI/FileIconProvider.h index ca3938b537..4a446d6d54 100644 --- a/Userland/Libraries/LibGUI/FileIconProvider.h +++ b/Userland/Libraries/LibGUI/FileIconProvider.h @@ -43,6 +43,7 @@ public: static Icon directory_open_icon(); static Icon home_directory_icon(); static Icon home_directory_open_icon(); + static Icon desktop_directory_icon(); }; } diff --git a/Userland/Libraries/LibGUI/FileSystemModel.cpp b/Userland/Libraries/LibGUI/FileSystemModel.cpp index 8cf034518b..d99499b0c3 100644 --- a/Userland/Libraries/LibGUI/FileSystemModel.cpp +++ b/Userland/Libraries/LibGUI/FileSystemModel.cpp @@ -491,6 +491,8 @@ Icon FileSystemModel::icon_for(const Node& node) const return FileIconProvider::home_directory_open_icon(); return FileIconProvider::home_directory_icon(); } + if (node.full_path() == Core::StandardPaths::desktop_directory()) + return FileIconProvider::desktop_directory_icon(); if (node.is_selected() && node.is_accessible_directory) return FileIconProvider::directory_open_icon(); }