From 1114400fe189709fca54fc41a141366265d99259 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 15 Aug 2019 13:59:18 +0200 Subject: [PATCH] Added some tweaks and comments --- examples/custom_file_dialog/gui_file_dialog.h | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/examples/custom_file_dialog/gui_file_dialog.h b/examples/custom_file_dialog/gui_file_dialog.h index 3810fe8..5357d27 100644 --- a/examples/custom_file_dialog/gui_file_dialog.h +++ b/examples/custom_file_dialog/gui_file_dialog.h @@ -9,6 +9,13 @@ * INIT: GuiFileDialogState state = InitGuiFileDialog(); * DRAW: GuiFileDialog(&state); * +* NOTE: This module depends on some raylib file system functions: +* - GetDirectoryFiles() +* - ClearDirectoryFiles() +* - GetWorkingDirectory() +* - DirectoryExists() +* - FileExists() +* * LICENSE: Propietary License * * Copyright (c) 2019 raylib technologies (@raylibtech). All Rights Reserved. @@ -101,6 +108,8 @@ void GuiFileDialog(GuiFileDialogState *state); #include "raygui.h" +#include // Required for: strcpy() + //---------------------------------------------------------------------------------- // Defines and Macros //---------------------------------------------------------------------------------- @@ -186,7 +195,7 @@ void GuiFileDialog(GuiFileDialogState *state) //------------------------------------------------------------------------------------ if (dirFilesIcon == NULL) { - dirFilesIcon = (char **)malloc(MAX_DIRECTORY_FILES*sizeof(char *)); // Max files to read + dirFilesIcon = (char **)RL_MALLOC(MAX_DIRECTORY_FILES*sizeof(char *)); // Max files to read for (int i = 0; i < MAX_DIRECTORY_FILES; i++) dirFilesIcon[i] = (char *)calloc(MAX_DIR_PATH_LENGTH, 1); // Max file name length } @@ -201,9 +210,9 @@ void GuiFileDialog(GuiFileDialogState *state) // Move dir path one level up strcpy(state->dirPathText, GetPrevDirectoryPath(state->dirPathText)); - // Free previous dirFiles (reloaded by ReadDirectoryFiles()) - for (int i = 0; i < state->dirFilesCount; i++) free(state->dirFiles[i]); - free(state->dirFiles); + // RL_FREE previous dirFiles (reloaded by ReadDirectoryFiles()) + for (int i = 0; i < state->dirFilesCount; i++) RL_FREE(state->dirFiles[i]); + RL_FREE(state->dirFiles); // Read files in the new path state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt); @@ -220,9 +229,9 @@ void GuiFileDialog(GuiFileDialogState *state) // Verify if a valid path has been introduced if (DirectoryExists(state->dirPathText)) { - // Free previous dirFiles (reloaded by ReadDirectoryFiles()) - for (int i = 0; i < state->dirFilesCount; i++) free(state->dirFiles[i]); - free(state->dirFiles); + // RL_FREE previous dirFiles (reloaded by ReadDirectoryFiles()) + for (int i = 0; i < state->dirFilesCount; i++) RL_FREE(state->dirFiles[i]); + RL_FREE(state->dirFiles); // Read files in new path state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt); @@ -257,9 +266,9 @@ void GuiFileDialog(GuiFileDialogState *state) strcpy(state->dirPathTextCopy, state->dirPathText); - // Free previous dirFiles (reloaded by ReadDirectoryFiles()) - for (int i = 0; i < state->dirFilesCount; i++) free(state->dirFiles[i]); - free(state->dirFiles); + // RL_FREE previous dirFiles (reloaded by ReadDirectoryFiles()) + for (int i = 0; i < state->dirFilesCount; i++) RL_FREE(state->dirFiles[i]); + RL_FREE(state->dirFiles); // Read files in new path state->dirFiles = ReadDirectoryFiles(state->dirPathText, &state->dirFilesCount, state->filterExt); @@ -312,15 +321,15 @@ void GuiFileDialog(GuiFileDialogState *state) // File dialog has been closed! if (!state->fileDialogActive) { - // Free dirFiles memory + // RL_FREE dirFiles memory for (int i = 0; i < state->dirFilesCount; i++) { - free(state->dirFiles[i]); - free(dirFilesIcon[i]); + RL_FREE(state->dirFiles[i]); + RL_FREE(dirFilesIcon[i]); } - free(state->dirFiles); - free(dirFilesIcon); + RL_FREE(state->dirFiles); + RL_FREE(dirFilesIcon); dirFilesIcon = NULL; state->dirFiles = NULL; @@ -332,8 +341,8 @@ void GuiFileDialog(GuiFileDialogState *state) static char **ReadDirectoryFiles(const char *dir, int *filesCount, char *filterExt) { int validFilesCount = 0; - char **validFiles = (char **)malloc(MAX_DIRECTORY_FILES*sizeof(char *)); // Max files to read - for (int i = 0; i < MAX_DIRECTORY_FILES; i++) validFiles[i] = (char *)malloc(MAX_DIR_PATH_LENGTH); // Max file name length + char **validFiles = (char **)RL_MALLOC(MAX_DIRECTORY_FILES*sizeof(char *)); // Max files to read + for (int i = 0; i < MAX_DIRECTORY_FILES; i++) validFiles[i] = (char *)RL_MALLOC(MAX_DIR_PATH_LENGTH); // Max file name length int filterExtCount = 0; const char **extensions = GuiTextSplit(filterExt, &filterExtCount, NULL);