diff --git a/src/FileBrowser.cpp b/src/FileBrowser.cpp index d2b6372..23f977f 100644 --- a/src/FileBrowser.cpp +++ b/src/FileBrowser.cpp @@ -977,6 +977,24 @@ void FileBrowser::UpdateInputFolders() m_IEC_Commands.CreateD64(newFileName, "42", true); FolderChanged(); } + else if (inputMappings->BrowseWriteProtect()) + { + FileBrowser::BrowsableList::Entry* current = folder.current; + if (current) + { + if (current->filImage.fattrib & AM_RDO) + { + current->filImage.fattrib &= ~AM_RDO; + f_chmod(current->filImage.fname, 0, AM_RDO); + } + else + { + current->filImage.fattrib |= AM_RDO; + f_chmod(current->filImage.fname, AM_RDO, AM_RDO); + } + dirty = true; + } + } else { unsigned keySetIndex; diff --git a/src/InputMappings.cpp b/src/InputMappings.cpp index 61bdccc..9cb5140 100644 --- a/src/InputMappings.cpp +++ b/src/InputMappings.cpp @@ -191,6 +191,8 @@ bool InputMappings::CheckKeyboardBrowseMode() SetKeyboardFlag(AUTOLOAD_FLAG); else if (keyboard->KeyHeld(KEY_R) && keyboard->KeyEitherAlt() ) SetKeyboardFlag(FAKERESET_FLAG); + else if (keyboard->KeyHeld(KEY_W) && keyboard->KeyEitherAlt()) + SetKeyboardFlag(WRITEPROTECT_FLAG); else { unsigned index; diff --git a/src/InputMappings.h b/src/InputMappings.h index 004ea50..ffce76e 100644 --- a/src/InputMappings.h +++ b/src/InputMappings.h @@ -40,6 +40,7 @@ #define NEWD64_FLAG (1 << 14) #define AUTOLOAD_FLAG (1 << 15) #define FAKERESET_FLAG (1 << 16) +#define WRITEPROTECT_FLAG (1 << 17) // dont exceed 32!! class InputMappings : public Singleton @@ -173,6 +174,11 @@ public: return KeyboardFlag(FAKERESET_FLAG); } + inline bool BrowseWriteProtect() + { + return KeyboardFlag(WRITEPROTECT_FLAG); + } + // Used by the 2 cores so need to be volatile //volatile static unsigned directDiskSwapRequest; static unsigned directDiskSwapRequest;