| @@ -46,8 +46,9 @@ const char* const projectItemDragType = "Project Items"; | |||||
| const char* const drawableItemDragType = "Drawable Items"; | const char* const drawableItemDragType = "Drawable Items"; | ||||
| const char* const componentItemDragType = "Components"; | const char* const componentItemDragType = "Components"; | ||||
| const char* const sourceFileExtensions = "cpp;mm;m;c;h;hpp"; | |||||
| const char* const headerFileExtensions = "h;hpp"; | |||||
| const char* const sourceFileExtensions = "cpp;mm;m;c;cc;cxx"; | |||||
| const char* const headerFileExtensions = "h;hpp;hxx"; | |||||
| const char* const sourceOrHeaderFileExtensions = "cpp;mm;m;c;cc;cxx;h;hpp;hxx"; | |||||
| #endif | #endif | ||||
| @@ -57,10 +57,10 @@ void SourceCodeEditor::resized() | |||||
| bool SourceCodeEditor::isTextFile (const File& file) | bool SourceCodeEditor::isTextFile (const File& file) | ||||
| { | { | ||||
| return file.hasFileExtension ("cpp;h;hpp;mm;m;c;txt;xml;plist;rtf;html;htm;php;py;rb;cs"); | |||||
| return file.hasFileExtension ("cpp;h;hpp;mm;m;c;cc;cxx;txt;xml;plist;rtf;html;htm;php;py;rb;cs"); | |||||
| } | } | ||||
| bool SourceCodeEditor::isCppFile (const File& file) | bool SourceCodeEditor::isCppFile (const File& file) | ||||
| { | { | ||||
| return file.hasFileExtension (sourceFileExtensions); | |||||
| return file.hasFileExtension (sourceOrHeaderFileExtensions); | |||||
| } | } | ||||
| @@ -264,7 +264,7 @@ const String Project::getRelativePathForFile (const File& file) const | |||||
| //============================================================================== | //============================================================================== | ||||
| bool Project::shouldBeAddedToBinaryResourcesByDefault (const File& file) | bool Project::shouldBeAddedToBinaryResourcesByDefault (const File& file) | ||||
| { | { | ||||
| return ! file.hasFileExtension (sourceFileExtensions); | |||||
| return ! file.hasFileExtension (sourceOrHeaderFileExtensions); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -454,7 +454,7 @@ Project::Item Project::createNewItem (const File& file) | |||||
| Item item (*this, ValueTree (Tags::file)); | Item item (*this, ValueTree (Tags::file)); | ||||
| item.initialiseNodeValues(); | item.initialiseNodeValues(); | ||||
| item.getName() = file.getFileName(); | item.getName() = file.getFileName(); | ||||
| item.getShouldCompileValue() = file.hasFileExtension ("cpp;mm;c;m"); | |||||
| item.getShouldCompileValue() = file.hasFileExtension ("cpp;mm;c;m;cc;cxx"); | |||||
| item.getShouldAddToResourceValue() = shouldBeAddedToBinaryResourcesByDefault (file); | item.getShouldAddToResourceValue() = shouldBeAddedToBinaryResourcesByDefault (file); | ||||
| return item; | return item; | ||||
| } | } | ||||
| @@ -597,7 +597,7 @@ protected: | |||||
| XmlElement* const group = createGroup (groupName, parent); | XmlElement* const group = createGroup (groupName, parent); | ||||
| for (int i = 0; i < files.size(); ++i) | for (int i = 0; i < files.size(); ++i) | ||||
| if (files.getReference(i).hasFileExtension ("cpp;c;cc;h;hpp;rc;ico")) | |||||
| if (files.getReference(i).hasFileExtension ("cpp;c;cc;cxx;h;hpp;hxx;rc;ico")) | |||||
| addFile (files.getReference(i), *group, false, | addFile (files.getReference(i), *group, false, | ||||
| useStdcall && shouldFileBeCompiledByDefault (files.getReference(i))); | useStdcall && shouldFileBeCompiledByDefault (files.getReference(i))); | ||||
| } | } | ||||
| @@ -1037,7 +1037,7 @@ private: | |||||
| if (projectItem.isGroup()) | if (projectItem.isGroup()) | ||||
| { | { | ||||
| out << "# Begin Group \"" << projectItem.getName() << '"' << newLine | out << "# Begin Group \"" << projectItem.getName() << '"' << newLine | ||||
| << "# PROP Default_Filter \"cpp;c;cxx;rc;def;r;odl;idl;hpj;bat\"" << newLine; | |||||
| << "# PROP Default_Filter \"cpp;c;cc;cxx;rc;def;r;odl;idl;hpj;bat\"" << newLine; | |||||
| for (int i = 0; i < projectItem.getNumChildren(); ++i) | for (int i = 0; i < projectItem.getNumChildren(); ++i) | ||||
| writeFiles (out, projectItem.getChild (i)); | writeFiles (out, projectItem.getChild (i)); | ||||
| @@ -1057,7 +1057,7 @@ private: | |||||
| { | { | ||||
| out << "# Begin Group \"" << groupName << '"' << newLine; | out << "# Begin Group \"" << groupName << '"' << newLine; | ||||
| for (int i = 0; i < files.size(); ++i) | for (int i = 0; i < files.size(); ++i) | ||||
| if (files.getReference(i).hasFileExtension ("cpp;c;h")) | |||||
| if (files.getReference(i).hasFileExtension ("cpp;cc;c;cxx;h;hpp;hxx")) | |||||
| writeFile (out, files.getReference(i), false); | writeFile (out, files.getReference(i), false); | ||||
| out << "# End Group" << newLine; | out << "# End Group" << newLine; | ||||
| @@ -1401,7 +1401,7 @@ protected: | |||||
| { | { | ||||
| jassert (file.getRoot() == RelativePath::buildTargetFolder); | jassert (file.getRoot() == RelativePath::buildTargetFolder); | ||||
| if (file.hasFileExtension ("cpp;c")) | |||||
| if (file.hasFileExtension ("cpp;cc;cxx;c")) | |||||
| { | { | ||||
| XmlElement* e = cpps.createNewChildElement ("ClCompile"); | XmlElement* e = cpps.createNewChildElement ("ClCompile"); | ||||
| e->setAttribute ("Include", file.toWindowsStyle()); | e->setAttribute ("Include", file.toWindowsStyle()); | ||||
| @@ -1440,7 +1440,7 @@ protected: | |||||
| { | { | ||||
| const RelativePath path (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder); | const RelativePath path (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder); | ||||
| if (path.hasFileExtension (headerFileExtensions) || (path.hasFileExtension ("cpp;c") && projectItem.shouldBeCompiled())) | |||||
| if (path.hasFileExtension (headerFileExtensions) || (path.hasFileExtension ("cpp;cc;c;cxx") && projectItem.shouldBeCompiled())) | |||||
| addFileToCompile (path, cpps, headers, false, false); | addFileToCompile (path, cpps, headers, false, false); | ||||
| } | } | ||||
| } | } | ||||
| @@ -771,7 +771,7 @@ private: | |||||
| static const String getFileType (const RelativePath& file) | static const String getFileType (const RelativePath& file) | ||||
| { | { | ||||
| if (file.hasFileExtension (".cpp")) return "sourcecode.cpp.cpp"; | |||||
| if (file.hasFileExtension ("cpp;cc;cxx")) return "sourcecode.cpp.cpp"; | |||||
| else if (file.hasFileExtension (".mm")) return "sourcecode.cpp.objcpp"; | else if (file.hasFileExtension (".mm")) return "sourcecode.cpp.objcpp"; | ||||
| else if (file.hasFileExtension (".m")) return "sourcecode.c.objc"; | else if (file.hasFileExtension (".m")) return "sourcecode.c.objc"; | ||||
| else if (file.hasFileExtension (headerFileExtensions)) return "sourcecode.c.h"; | else if (file.hasFileExtension (headerFileExtensions)) return "sourcecode.c.h"; | ||||
| @@ -1065,7 +1065,7 @@ private: | |||||
| bool shouldFileBeCompiledByDefault (const RelativePath& file) const | bool shouldFileBeCompiledByDefault (const RelativePath& file) const | ||||
| { | { | ||||
| return file.hasFileExtension ("cpp;mm;c;m"); | |||||
| return file.hasFileExtension (sourceFileExtensions); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -146,7 +146,7 @@ const RelativePath ProjectExporter::getJucePathFromTargetFolder() const | |||||
| bool ProjectExporter::shouldFileBeCompiledByDefault (const RelativePath& file) const | bool ProjectExporter::shouldFileBeCompiledByDefault (const RelativePath& file) const | ||||
| { | { | ||||
| return file.hasFileExtension ("cpp;c"); | |||||
| return file.hasFileExtension ("cpp;cc;c;cxx"); | |||||
| } | } | ||||
| void ProjectExporter::createPropertyEditors (Array <PropertyComponent*>& props) | void ProjectExporter::createPropertyEditors (Array <PropertyComponent*>& props) | ||||
| @@ -44,7 +44,7 @@ ResourceFile::~ResourceFile() | |||||
| bool ResourceFile::isResourceFile (const File& file) | bool ResourceFile::isResourceFile (const File& file) | ||||
| { | { | ||||
| if (file.hasFileExtension ("cpp;h")) | |||||
| if (file.hasFileExtension ("cpp;cc;h")) | |||||
| { | { | ||||
| ScopedPointer <InputStream> in (file.createInputStream()); | ScopedPointer <InputStream> in (file.createInputStream()); | ||||
| @@ -171,7 +171,7 @@ const String SourceFileTreeViewItem::getDisplayName() const | |||||
| static const File findCorrespondingHeaderOrCpp (const File& f) | static const File findCorrespondingHeaderOrCpp (const File& f) | ||||
| { | { | ||||
| if (f.hasFileExtension ("cpp;c;mm;m")) | |||||
| if (f.hasFileExtension (sourceFileExtensions)) | |||||
| return f.withFileExtension (".h"); | return f.withFileExtension (".h"); | ||||
| else if (f.hasFileExtension (headerFileExtensions)) | else if (f.hasFileExtension (headerFileExtensions)) | ||||
| return f.withFileExtension (".cpp"); | return f.withFileExtension (".cpp"); | ||||
| @@ -429,8 +429,7 @@ class AXBrowserPluginHolderComponent : public Component | |||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| AXBrowserPluginHolderComponent() | AXBrowserPluginHolderComponent() | ||||
| : child (0), | |||||
| parentHWND (0), | |||||
| : parentHWND (0), | |||||
| browser (0) | browser (0) | ||||
| { | { | ||||
| setOpaque (true); | setOpaque (true); | ||||
| @@ -443,7 +442,7 @@ public: | |||||
| ~AXBrowserPluginHolderComponent() | ~AXBrowserPluginHolderComponent() | ||||
| { | { | ||||
| setWindow (0); | setWindow (0); | ||||
| deleteAndZero (child); | |||||
| child = 0; | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -522,7 +521,7 @@ public: | |||||
| private: | private: | ||||
| //============================================================================== | //============================================================================== | ||||
| BrowserPluginComponent* child; | |||||
| ScopedPointer<BrowserPluginComponent> child; | |||||
| HWND parentHWND; | HWND parentHWND; | ||||
| IWebBrowser2* browser; | IWebBrowser2* browser; | ||||
| }; | }; | ||||
| @@ -581,17 +580,15 @@ class JuceActiveXObject : public IUnknown, | |||||
| { | { | ||||
| public: | public: | ||||
| JuceActiveXObject() | JuceActiveXObject() | ||||
| : refCount (0) | |||||
| : site (0), refCount (0) | |||||
| { | { | ||||
| log ("JuceActiveXObject"); | log ("JuceActiveXObject"); | ||||
| site = 0; | |||||
| holderComp = 0; | |||||
| } | } | ||||
| ~JuceActiveXObject() | ~JuceActiveXObject() | ||||
| { | { | ||||
| deleteHolderComp(); | |||||
| log ("~JuceActiveXObject"); | log ("~JuceActiveXObject"); | ||||
| holderComp = 0; | |||||
| } | } | ||||
| HRESULT __stdcall QueryInterface (REFIID id, void __RPC_FAR* __RPC_FAR* result) | HRESULT __stdcall QueryInterface (REFIID id, void __RPC_FAR* __RPC_FAR* result) | ||||
| @@ -670,26 +667,31 @@ public: | |||||
| void createHolderComp() | void createHolderComp() | ||||
| { | { | ||||
| if (numActivePlugins++ == 0) | |||||
| if (holderComp == 0) | |||||
| { | { | ||||
| log ("initialiseJuce_GUI()"); | |||||
| initialiseJuce_GUI(); | |||||
| if (numActivePlugins++ == 0) | |||||
| { | |||||
| log ("initialiseJuce_GUI()"); | |||||
| initialiseJuce_GUI(); | |||||
| browserVersionDesc = "Internet Explorer " + getExeVersion (getExePath(), "FileVersion"); | |||||
| } | |||||
| browserVersionDesc = "Internet Explorer " + getExeVersion (getExePath(), "FileVersion"); | |||||
| } | |||||
| if (holderComp == 0) | |||||
| holderComp = new AXBrowserPluginHolderComponent(); | holderComp = new AXBrowserPluginHolderComponent(); | ||||
| } | |||||
| } | } | ||||
| void deleteHolderComp() | void deleteHolderComp() | ||||
| { | { | ||||
| deleteAndZero (holderComp); | |||||
| if (--numActivePlugins == 0) | |||||
| if (holderComp != 0) | |||||
| { | { | ||||
| log ("shutdownJuce_GUI()"); | |||||
| shutdownJuce_GUI(); | |||||
| holderComp = 0; | |||||
| if (--numActivePlugins == 0) | |||||
| { | |||||
| log ("shutdownJuce_GUI()"); | |||||
| shutdownJuce_GUI(); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| @@ -735,7 +737,7 @@ public: | |||||
| private: | private: | ||||
| IUnknown* site; | IUnknown* site; | ||||
| int refCount; | int refCount; | ||||
| AXBrowserPluginHolderComponent* holderComp; | |||||
| ScopedPointer<AXBrowserPluginHolderComponent> holderComp; | |||||
| IDispatchHelper iDispatchHelper; | IDispatchHelper iDispatchHelper; | ||||
| JuceActiveXObject (const JuceActiveXObject&); | JuceActiveXObject (const JuceActiveXObject&); | ||||
| @@ -253485,6 +253485,25 @@ bool File::isHidden() const | |||||
| return getFileName().startsWithChar ('.'); | return getFileName().startsWithChar ('.'); | ||||
| } | } | ||||
| static const File juce_readlink (const char* const utf8, const File& defaultFile) | |||||
| { | |||||
| const int size = 8192; | |||||
| HeapBlock<char> buffer; | |||||
| buffer.malloc (size + 4); | |||||
| const size_t numBytes = readlink (utf8, buffer, size); | |||||
| if (numBytes > 0 && numBytes <= size) | |||||
| return File (String::fromUTF8 (buffer, (int) numBytes)); | |||||
| return defaultFile; | |||||
| } | |||||
| const File File::getLinkedTarget() const | |||||
| { | |||||
| return juce_readlink (getFullPathName().toUTF8(), *this); | |||||
| } | |||||
| const char* juce_Argv0 = 0; // referenced from juce_Application.cpp | const char* juce_Argv0 = 0; // referenced from juce_Application.cpp | ||||
| const File File::getSpecialLocation (const SpecialLocationType type) | const File File::getSpecialLocation (const SpecialLocationType type) | ||||
| @@ -253545,14 +253564,7 @@ const File File::getSpecialLocation (const SpecialLocationType type) | |||||
| return juce_getExecutableFile(); | return juce_getExecutableFile(); | ||||
| case hostApplicationPath: | case hostApplicationPath: | ||||
| { | |||||
| unsigned int size = 8192; | |||||
| HeapBlock<char> buffer; | |||||
| buffer.calloc (size + 8); | |||||
| readlink ("/proc/self/exe", buffer.getData(), size); | |||||
| return String::fromUTF8 (buffer, size); | |||||
| } | |||||
| return juce_readlink ("/proc/self/exe", juce_getExecutableFile()); | |||||
| default: | default: | ||||
| jassertfalse; // unknown type? | jassertfalse; // unknown type? | ||||
| @@ -253567,18 +253579,6 @@ const String File::getVersion() const | |||||
| return String::empty; // xxx not yet implemented | return String::empty; // xxx not yet implemented | ||||
| } | } | ||||
| const File File::getLinkedTarget() const | |||||
| { | |||||
| char buffer [4096]; | |||||
| size_t numChars = readlink (getFullPathName().toUTF8(), | |||||
| buffer, sizeof (buffer)); | |||||
| if (numChars > 0 && numChars <= sizeof (buffer)) | |||||
| return File (String::fromUTF8 (buffer, (int) numChars)); | |||||
| return *this; | |||||
| } | |||||
| bool File::moveToTrash() const | bool File::moveToTrash() const | ||||
| { | { | ||||
| if (! exists()) | if (! exists()) | ||||
| @@ -64,7 +64,7 @@ | |||||
| */ | */ | ||||
| #define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
| #define JUCE_MINOR_VERSION 52 | #define JUCE_MINOR_VERSION 52 | ||||
| #define JUCE_BUILDNUMBER 48 | |||||
| #define JUCE_BUILDNUMBER 49 | |||||
| /** Current Juce version number. | /** Current Juce version number. | ||||
| @@ -5963,7 +5963,7 @@ template <typename Type> | |||||
| inline Type Atomic<Type>::operator+= (const Type amountToAdd) throw() | inline Type Atomic<Type>::operator+= (const Type amountToAdd) throw() | ||||
| { | { | ||||
| #if JUCE_ATOMICS_MAC | #if JUCE_ATOMICS_MAC | ||||
| return sizeof (Type) == 4 ? (Type) OSAtomicAdd32Barrier ((int32_t) amountToAdd, (JUCE_MAC_ATOMICS_VOLATILE int32_t*) &value) | |||||
| return sizeof (Type) == 4 ? (Type) OSAtomicAdd32Barrier ((int32_t) castTo32Bit (amountToAdd), (JUCE_MAC_ATOMICS_VOLATILE int32_t*) &value) | |||||
| : (Type) OSAtomicAdd64Barrier ((int64_t) amountToAdd, (JUCE_MAC_ATOMICS_VOLATILE int64_t*) &value); | : (Type) OSAtomicAdd64Barrier ((int64_t) amountToAdd, (JUCE_MAC_ATOMICS_VOLATILE int64_t*) &value); | ||||
| #elif JUCE_ATOMICS_WINDOWS | #elif JUCE_ATOMICS_WINDOWS | ||||
| return sizeof (Type) == 4 ? (Type) (juce_InterlockedExchangeAdd ((volatile long*) &value, (long) amountToAdd) + (long) amountToAdd) | return sizeof (Type) == 4 ? (Type) (juce_InterlockedExchangeAdd ((volatile long*) &value, (long) amountToAdd) + (long) amountToAdd) | ||||
| @@ -45921,10 +45921,10 @@ private: | |||||
| */ | */ | ||||
| class JUCE_API Slider : public Component, | class JUCE_API Slider : public Component, | ||||
| public SettableTooltipClient, | public SettableTooltipClient, | ||||
| private AsyncUpdater, | |||||
| private ButtonListener, // (can't use Button::Listener due to idiotic VC2005 bug) | |||||
| private LabelListener, | |||||
| private Value::Listener | |||||
| public AsyncUpdater, | |||||
| public ButtonListener, // (can't use Button::Listener due to idiotic VC2005 bug) | |||||
| public LabelListener, | |||||
| public Value::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| @@ -264,7 +264,7 @@ template <typename Type> | |||||
| inline Type Atomic<Type>::operator+= (const Type amountToAdd) throw() | inline Type Atomic<Type>::operator+= (const Type amountToAdd) throw() | ||||
| { | { | ||||
| #if JUCE_ATOMICS_MAC | #if JUCE_ATOMICS_MAC | ||||
| return sizeof (Type) == 4 ? (Type) OSAtomicAdd32Barrier ((int32_t) amountToAdd, (JUCE_MAC_ATOMICS_VOLATILE int32_t*) &value) | |||||
| return sizeof (Type) == 4 ? (Type) OSAtomicAdd32Barrier ((int32_t) castTo32Bit (amountToAdd), (JUCE_MAC_ATOMICS_VOLATILE int32_t*) &value) | |||||
| : (Type) OSAtomicAdd64Barrier ((int64_t) amountToAdd, (JUCE_MAC_ATOMICS_VOLATILE int64_t*) &value); | : (Type) OSAtomicAdd64Barrier ((int64_t) amountToAdd, (JUCE_MAC_ATOMICS_VOLATILE int64_t*) &value); | ||||
| #elif JUCE_ATOMICS_WINDOWS | #elif JUCE_ATOMICS_WINDOWS | ||||
| return sizeof (Type) == 4 ? (Type) (juce_InterlockedExchangeAdd ((volatile long*) &value, (long) amountToAdd) + (long) amountToAdd) | return sizeof (Type) == 4 ? (Type) (juce_InterlockedExchangeAdd ((volatile long*) &value, (long) amountToAdd) + (long) amountToAdd) | ||||
| @@ -55,10 +55,10 @@ | |||||
| */ | */ | ||||
| class JUCE_API Slider : public Component, | class JUCE_API Slider : public Component, | ||||
| public SettableTooltipClient, | public SettableTooltipClient, | ||||
| private AsyncUpdater, | |||||
| private ButtonListener, // (can't use Button::Listener due to idiotic VC2005 bug) | |||||
| private LabelListener, | |||||
| private Value::Listener | |||||
| public AsyncUpdater, | |||||
| public ButtonListener, // (can't use Button::Listener due to idiotic VC2005 bug) | |||||
| public LabelListener, | |||||
| public Value::Listener | |||||
| { | { | ||||
| public: | public: | ||||
| //============================================================================== | //============================================================================== | ||||
| @@ -106,6 +106,26 @@ bool File::isHidden() const | |||||
| return getFileName().startsWithChar ('.'); | return getFileName().startsWithChar ('.'); | ||||
| } | } | ||||
| //============================================================================== | |||||
| static const File juce_readlink (const char* const utf8, const File& defaultFile) | |||||
| { | |||||
| const int size = 8192; | |||||
| HeapBlock<char> buffer; | |||||
| buffer.malloc (size + 4); | |||||
| const size_t numBytes = readlink (utf8, buffer, size); | |||||
| if (numBytes > 0 && numBytes <= size) | |||||
| return File (String::fromUTF8 (buffer, (int) numBytes)); | |||||
| return defaultFile; | |||||
| } | |||||
| const File File::getLinkedTarget() const | |||||
| { | |||||
| return juce_readlink (getFullPathName().toUTF8(), *this); | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| const char* juce_Argv0 = 0; // referenced from juce_Application.cpp | const char* juce_Argv0 = 0; // referenced from juce_Application.cpp | ||||
| @@ -167,14 +187,7 @@ const File File::getSpecialLocation (const SpecialLocationType type) | |||||
| return juce_getExecutableFile(); | return juce_getExecutableFile(); | ||||
| case hostApplicationPath: | case hostApplicationPath: | ||||
| { | |||||
| unsigned int size = 8192; | |||||
| HeapBlock<char> buffer; | |||||
| buffer.calloc (size + 8); | |||||
| readlink ("/proc/self/exe", buffer.getData(), size); | |||||
| return String::fromUTF8 (buffer, size); | |||||
| } | |||||
| return juce_readlink ("/proc/self/exe", juce_getExecutableFile()); | |||||
| default: | default: | ||||
| jassertfalse; // unknown type? | jassertfalse; // unknown type? | ||||
| @@ -190,19 +203,6 @@ const String File::getVersion() const | |||||
| return String::empty; // xxx not yet implemented | return String::empty; // xxx not yet implemented | ||||
| } | } | ||||
| //============================================================================== | |||||
| const File File::getLinkedTarget() const | |||||
| { | |||||
| char buffer [4096]; | |||||
| size_t numChars = readlink (getFullPathName().toUTF8(), | |||||
| buffer, sizeof (buffer)); | |||||
| if (numChars > 0 && numChars <= sizeof (buffer)) | |||||
| return File (String::fromUTF8 (buffer, (int) numChars)); | |||||
| return *this; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| bool File::moveToTrash() const | bool File::moveToTrash() const | ||||
| { | { | ||||