Merge branch 'blender-v3.0-release'
This commit is contained in:
commit
e2937ff24f
|
@ -21,6 +21,8 @@
|
|||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "BLI_compiler_attrs.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -32,7 +34,9 @@ void BKE_appdir_exit(void);
|
|||
|
||||
/* note on naming: typical _get() suffix is omitted here,
|
||||
* since its the main purpose of the API. */
|
||||
const char *BKE_appdir_folder_default(void);
|
||||
const char *BKE_appdir_folder_default(void) ATTR_WARN_UNUSED_RESULT;
|
||||
const char *BKE_appdir_folder_root(void) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL;
|
||||
const char *BKE_appdir_folder_default_or_root(void) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL;
|
||||
const char *BKE_appdir_folder_home(void);
|
||||
bool BKE_appdir_folder_documents(char *dir);
|
||||
bool BKE_appdir_folder_caches(char *r_path, size_t path_len);
|
||||
|
|
|
@ -170,6 +170,26 @@ const char *BKE_appdir_folder_default(void)
|
|||
#endif /* WIN32 */
|
||||
}
|
||||
|
||||
const char *BKE_appdir_folder_root(void)
|
||||
{
|
||||
#ifndef WIN32
|
||||
return "/";
|
||||
#else
|
||||
static char root[4];
|
||||
BLI_windows_get_default_root_dir(root);
|
||||
return root;
|
||||
#endif
|
||||
}
|
||||
|
||||
const char *BKE_appdir_folder_default_or_root(void)
|
||||
{
|
||||
const char *path = BKE_appdir_folder_default();
|
||||
if (path == NULL) {
|
||||
path = BKE_appdir_folder_root();
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user's home directory, i.e.
|
||||
* - Unix: `$HOME`
|
||||
|
|
|
@ -106,7 +106,7 @@ const char *dirname(char *path);
|
|||
|
||||
/* Windows utility functions. */
|
||||
bool BLI_windows_register_blend_extension(const bool background);
|
||||
void BLI_windows_get_default_root_dir(char *root_dir);
|
||||
void BLI_windows_get_default_root_dir(char root_dir[4]);
|
||||
int BLI_windows_get_executable_dir(char *str);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -1730,6 +1730,9 @@ void BLI_path_append(char *__restrict dst, const size_t maxlen, const char *__re
|
|||
/**
|
||||
* Simple appending of filename to dir, does not check for valid path!
|
||||
* Puts result into `dst`, which may be same area as `dir`.
|
||||
*
|
||||
* \note Consider using #BLI_path_join for more general path joining
|
||||
* that de-duplicates separators and can handle an arbitrary number of paths.
|
||||
*/
|
||||
void BLI_join_dirfile(char *__restrict dst,
|
||||
const size_t maxlen,
|
||||
|
@ -1741,9 +1744,13 @@ void BLI_join_dirfile(char *__restrict dst,
|
|||
#endif
|
||||
size_t dirlen = BLI_strnlen(dir, maxlen);
|
||||
|
||||
/* args can't match */
|
||||
/* Arguments can't match. */
|
||||
BLI_assert(!ELEM(dst, dir, file));
|
||||
|
||||
/* Files starting with a separator cause a double-slash which could later be interpreted
|
||||
* as a relative path where: `dir == "/"` and `file == "/file"` would result in "//file". */
|
||||
BLI_assert(file[0] != SEP);
|
||||
|
||||
if (dirlen == maxlen) {
|
||||
memcpy(dst, dir, dirlen);
|
||||
dst[dirlen - 1] = '\0';
|
||||
|
|
|
@ -193,7 +193,7 @@ bool BLI_windows_register_blend_extension(const bool background)
|
|||
return true;
|
||||
}
|
||||
|
||||
void BLI_windows_get_default_root_dir(char *root)
|
||||
void BLI_windows_get_default_root_dir(char root[4])
|
||||
{
|
||||
char str[MAX_PATH + 1];
|
||||
|
||||
|
|
|
@ -2491,12 +2491,14 @@ static void file_expand_directory(bContext *C)
|
|||
if (BLI_path_is_rel(params->dir)) {
|
||||
/* Use of 'default' folder here is just to avoid an error message on '//' prefix. */
|
||||
BLI_path_abs(params->dir,
|
||||
G.relbase_valid ? BKE_main_blendfile_path(bmain) : BKE_appdir_folder_default());
|
||||
G.relbase_valid ? BKE_main_blendfile_path(bmain) :
|
||||
BKE_appdir_folder_default_or_root());
|
||||
}
|
||||
else if (params->dir[0] == '~') {
|
||||
char tmpstr[sizeof(params->dir) - 1];
|
||||
BLI_strncpy(tmpstr, params->dir + 1, sizeof(tmpstr));
|
||||
BLI_join_dirfile(params->dir, sizeof(params->dir), BKE_appdir_folder_default(), tmpstr);
|
||||
BLI_path_join(
|
||||
params->dir, sizeof(params->dir), BKE_appdir_folder_default_or_root(), tmpstr, NULL);
|
||||
}
|
||||
|
||||
else if (params->dir[0] == '\0')
|
||||
|
|
|
@ -769,21 +769,22 @@ void fsmenu_read_system(struct FSMenu *fsmenu, int read_bookmarks)
|
|||
FS_INSERT_LAST);
|
||||
|
||||
const char *home = BLI_getenv("HOME");
|
||||
|
||||
if (home) {
|
||||
# define FS_MACOS_PATH(path, name, icon) \
|
||||
BLI_snprintf(line, sizeof(line), path, home); \
|
||||
fsmenu_insert_entry(fsmenu, FS_CATEGORY_OTHER, line, name, icon, FS_INSERT_LAST);
|
||||
|
||||
FS_MACOS_PATH("%s/", NULL, ICON_HOME)
|
||||
FS_MACOS_PATH("%s/Desktop/", N_("Desktop"), ICON_DESKTOP)
|
||||
FS_MACOS_PATH("%s/Documents/", N_("Documents"), ICON_DOCUMENTS)
|
||||
FS_MACOS_PATH("%s/Downloads/", N_("Downloads"), ICON_IMPORT)
|
||||
FS_MACOS_PATH("%s/Movies/", N_("Movies"), ICON_FILE_MOVIE)
|
||||
FS_MACOS_PATH("%s/Music/", N_("Music"), ICON_FILE_SOUND)
|
||||
FS_MACOS_PATH("%s/Pictures/", N_("Pictures"), ICON_FILE_IMAGE)
|
||||
FS_MACOS_PATH("%s/Library/Fonts/", N_("Fonts"), ICON_FILE_FONT)
|
||||
FS_MACOS_PATH("%s/", NULL, ICON_HOME)
|
||||
FS_MACOS_PATH("%s/Desktop/", N_("Desktop"), ICON_DESKTOP)
|
||||
FS_MACOS_PATH("%s/Documents/", N_("Documents"), ICON_DOCUMENTS)
|
||||
FS_MACOS_PATH("%s/Downloads/", N_("Downloads"), ICON_IMPORT)
|
||||
FS_MACOS_PATH("%s/Movies/", N_("Movies"), ICON_FILE_MOVIE)
|
||||
FS_MACOS_PATH("%s/Music/", N_("Music"), ICON_FILE_SOUND)
|
||||
FS_MACOS_PATH("%s/Pictures/", N_("Pictures"), ICON_FILE_IMAGE)
|
||||
FS_MACOS_PATH("%s/Library/Fonts/", N_("Fonts"), ICON_FILE_FONT)
|
||||
|
||||
# undef FS_MACOS_PATH
|
||||
}
|
||||
|
||||
/* Get mounted volumes better method OSX 10.6 and higher, see:
|
||||
* https://developer.apple.com/library/mac/#documentation/CoreFOundation/Reference/CFURLRef/Reference/reference.html
|
||||
|
|
Loading…
Reference in New Issue