瀏覽代碼

FileManager: Disables mkdir action if permissions don't allow it

Now the "New directory..." contextual menu is disabled if the current
user doesn't have enough permissions to create a node in the current
path.

This prevents the user going to the "New Directory" InputBox, writing
an appropriate name and accepting just to find they can't even do it :)
Andres Vieira 5 年之前
父節點
當前提交
a1bcd9ca8a
共有 1 個文件被更改,包括 9 次插入2 次删除
  1. 9 2
      Applications/FileManager/main.cpp

+ 9 - 2
Applications/FileManager/main.cpp

@@ -654,8 +654,15 @@ int run_in_windowed_mode(RefPtr<Core::ConfigFile> config, String initial_locatio
             tree_view.update();
         }
 
-        go_forward_action->set_enabled(directory_view.path_history_position()
-            < directory_view.path_history_size() - 1);
+        struct stat st;
+        if (lstat(new_path.characters(), &st)) {
+            perror("stat");
+            return;
+        }
+
+        auto can_write_in_path = access(new_path.characters(), W_OK) == 0;
+        mkdir_action->set_enabled(can_write_in_path);
+        go_forward_action->set_enabled(directory_view.path_history_position() < directory_view.path_history_size() - 1);
         go_back_action->set_enabled(directory_view.path_history_position() > 0);
         open_parent_directory_action->set_enabled(new_path != "/");
     };