Patch: [#22524] Update Windows Recent Documents on Open/Save
authorAndrea Weikert <elubie@gmx.net>
Wed, 5 Jan 2011 14:56:10 +0000 (14:56 +0000)
committerAndrea Weikert <elubie@gmx.net>
Wed, 5 Jan 2011 14:56:10 +0000 (14:56 +0000)
Slightly modified to better fit in architecture (moved to related GHOST SystemPaths)
Thanks to Harley Acheson for the research and for providing the original patch.

Note: I added empty function for X11(Linux) and Mac (Carbon and Cocoa) to be implemented still.

13 files changed:
intern/ghost/GHOST_ISystemPaths.h
intern/ghost/GHOST_Path-api.h
intern/ghost/intern/GHOST_Path-api.cpp
intern/ghost/intern/GHOST_SystemPaths.h
intern/ghost/intern/GHOST_SystemPathsCarbon.cpp
intern/ghost/intern/GHOST_SystemPathsCarbon.h
intern/ghost/intern/GHOST_SystemPathsCocoa.h
intern/ghost/intern/GHOST_SystemPathsCocoa.mm
intern/ghost/intern/GHOST_SystemPathsWin32.cpp
intern/ghost/intern/GHOST_SystemPathsWin32.h
intern/ghost/intern/GHOST_SystemPathsX11.cpp
intern/ghost/intern/GHOST_SystemPathsX11.h
source/blender/windowmanager/intern/wm_files.c

index a4bb942..0d50e2b 100644 (file)
@@ -85,6 +85,11 @@ public:
          */
         virtual const GHOST_TUns8* getBinaryDir() const = 0;
 
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        virtual void addToSystemRecentFiles(const char* filename) const = 0;
+
 private:
        /** The one and only system paths*/
        static GHOST_ISystemPaths* m_systemPaths;
index 23a5062..f5117a0 100644 (file)
@@ -70,6 +70,11 @@ extern const GHOST_TUns8* GHOST_getUserDir(void);
  */
 extern const GHOST_TUns8* GHOST_getBinaryDir(void);
 
+/**
+* Add the file to the operating system most recently used files
+*/
+extern void GHOST_addToSystemRecentFiles(const char* filename);
+
 #ifdef __cplusplus
 } 
 #endif
index adb8a7d..387ca62 100644 (file)
@@ -59,3 +59,11 @@ const GHOST_TUns8* GHOST_getBinaryDir()
        GHOST_ISystemPaths* systemPaths = GHOST_ISystemPaths::get();
        return systemPaths ? systemPaths->getBinaryDir() : 0;  /* shouldn't be NULL */
 }
+
+void GHOST_addToSystemRecentFiles(const char* filename)
+{
+       GHOST_ISystemPaths* systemPaths = GHOST_ISystemPaths::get();
+       if (systemPaths) {
+               systemPaths->addToSystemRecentFiles(filename);
+       }
+}
\ No newline at end of file
index 526a39e..c197797 100644 (file)
@@ -67,6 +67,11 @@ public:
          */
         virtual const GHOST_TUns8* getBinaryDir() const = 0;
 
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        virtual void addToSystemRecentFiles(const char* filename) const = 0;
+
 };
 
 #endif
index d35ab6e..9023d8f 100644 (file)
@@ -76,3 +76,8 @@ const GHOST_TUns8* GHOST_SystemPathsCarbon::getBinaryDir() const
        return (GHOST_TUns8*)path;
 }
 
+void GHOST_SystemPathsCarbon::addToSystemRecentFiles(const char* filename) const
+{
+       /* XXXXX TODO: Implementation for Carbon if possible */
+
+}
\ No newline at end of file
index f50e66a..4d61aea 100644 (file)
@@ -75,6 +75,10 @@ public:
          */
         virtual const GHOST_TUns8* getBinaryDir() const;
 
+       /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
 };
 
 #endif // _GHOST_SYSTEM_CARBON_H_
index 59909d9..6b5715d 100644 (file)
@@ -69,6 +69,10 @@ public:
          */
         virtual const GHOST_TUns8* getBinaryDir() const;
 
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
 };
 
 #endif // _GHOST_SYSTEM_COCOA_H_
index d12ad6f..51763b4 100644 (file)
@@ -114,3 +114,8 @@ const GHOST_TUns8* GHOST_SystemPathsCocoa::getBinaryDir() const
        [pool drain];\r
        return tempPath;\r
 }\r
+\r
+void GHOST_SystemPathsCocoa::addToSystemRecentFiles(const char* filename) const\r
+{\r
+       /* XXXXX TODO: Implementation for X11 if possible */\r
+}\r
index 9946768..843a4e6 100644 (file)
@@ -79,3 +79,10 @@ const GHOST_TUns8* GHOST_SystemPathsWin32::getBinaryDir() const
 
        return NULL;
 }
+
+void GHOST_SystemPathsWin32::addToSystemRecentFiles(const char* filename) const
+{
+       /* SHARD_PATHA is for ansi strings, use SHARD_PATHW for wide */
+       SHAddToRecentDocs(SHARD_PATHA,filename);
+
+}
\ No newline at end of file
index c4abfbb..28e0174 100644 (file)
@@ -76,6 +76,10 @@ public:
          */
         const GHOST_TUns8* getBinaryDir() const;
 
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
 };
 
 #endif // _GHOST_SYSTEM_PATHS_WIN32_H_
index 0f0578f..70d4ea5 100644 (file)
@@ -73,4 +73,8 @@ const GHOST_TUns8* GHOST_SystemPathsX11::getBinaryDir() const
        return NULL;
 }
 
+void GHOST_SystemPathsX11::addToSystemRecentFiles(const char* filename) const
+{
+       /* XXXXX TODO: Implementation for X11 if possible */
 
+}
index f4b7dda..b95ed45 100644 (file)
@@ -67,6 +67,10 @@ public:
          */
         const GHOST_TUns8* getBinaryDir() const;
 
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
 };
 
 #endif
index b5601f6..e716559 100644 (file)
@@ -91,6 +91,7 @@
 #include "ED_util.h"
 
 #include "GHOST_C-api.h"
+#include "GHOST_Path-api.h"
 
 #include "UI_interface.h"
 
@@ -511,6 +512,9 @@ static void write_history(void)
                        }
                        fclose(fp);
                }
+
+               /* also update most recent files on System */
+               GHOST_addToSystemRecentFiles(G.main->name);
        }
 }