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 a4bb94229e0b6bf19f63fd6c674930b27ff94db3..0d50e2b59826e47aed19877ed7dd620c53467b57 100644 (file)
@@ -85,6 +85,11 @@ public:
          */
         virtual const GHOST_TUns8* getBinaryDir() const = 0;
 
          */
         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;
 private:
        /** The one and only system paths*/
        static GHOST_ISystemPaths* m_systemPaths;
index 23a50623fb713f88101f69bca5f759fb575f01a0..f5117a0bd7ad139c77e3c1566f19740081b0eeb1 100644 (file)
@@ -70,6 +70,11 @@ extern const GHOST_TUns8* GHOST_getUserDir(void);
  */
 extern const GHOST_TUns8* GHOST_getBinaryDir(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
 #ifdef __cplusplus
 } 
 #endif
index adb8a7d0b9748dc4bb00dc9f234494cbbd9cd5b1..387ca62889f922511920835337d708907604b43e 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 */
 }
        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 526a39e45f1668b2c45168cc47bd9f6fc20845da..c197797dd554ea803899e6d2a63955962dc51ea0 100644 (file)
@@ -67,6 +67,11 @@ public:
          */
         virtual const GHOST_TUns8* getBinaryDir() const = 0;
 
          */
         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
 };
 
 #endif
index d35ab6e311f981cdc55029144d33d811967e41a4..9023d8f60d8a5ec84b5453a87e61ba0a98662de3 100644 (file)
@@ -76,3 +76,8 @@ const GHOST_TUns8* GHOST_SystemPathsCarbon::getBinaryDir() const
        return (GHOST_TUns8*)path;
 }
 
        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 f50e66a7f9ec9443cc5d05b447cbb5543ff3b5c9..4d61aea4b9fe6dbb70ed8b0c311319fc9acb4760 100644 (file)
@@ -75,6 +75,10 @@ public:
          */
         virtual const GHOST_TUns8* getBinaryDir() const;
 
          */
         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_
 };
 
 #endif // _GHOST_SYSTEM_CARBON_H_
index 59909d9fdd75e158614bf4db4d6aaebc2e4a999b..6b5715d89c8d026c0396728508f4daa477a27f8c 100644 (file)
@@ -69,6 +69,10 @@ public:
          */
         virtual const GHOST_TUns8* getBinaryDir() const;
 
          */
         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_
 };
 
 #endif // _GHOST_SYSTEM_COCOA_H_
index d12ad6fb9788b1a13b853e8f0f300c91d10f0d8e..51763b42d17c63da8d3f8d6089a66255b4055feb 100644 (file)
@@ -114,3 +114,8 @@ const GHOST_TUns8* GHOST_SystemPathsCocoa::getBinaryDir() const
        [pool drain];\r
        return tempPath;\r
 }\r
        [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 99467689a7a087953821390b94507cfac41643c3..843a4e6a4603a5ba64c5899d89429e359389b2c9 100644 (file)
@@ -79,3 +79,10 @@ const GHOST_TUns8* GHOST_SystemPathsWin32::getBinaryDir() const
 
        return NULL;
 }
 
        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 c4abfbb235b22c63733cc338500f48e595d72f97..28e0174516424e184a241985310ff03b2f4e2dbc 100644 (file)
@@ -76,6 +76,10 @@ public:
          */
         const GHOST_TUns8* getBinaryDir() const;
 
          */
         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_
 };
 
 #endif // _GHOST_SYSTEM_PATHS_WIN32_H_
index 0f0578f4ef5e424ffa9e1a082a416841e4756a30..70d4ea5df4a33ba444168d8596647f0a63330f5b 100644 (file)
@@ -73,4 +73,8 @@ const GHOST_TUns8* GHOST_SystemPathsX11::getBinaryDir() const
        return NULL;
 }
 
        return NULL;
 }
 
+void GHOST_SystemPathsX11::addToSystemRecentFiles(const char* filename) const
+{
+       /* XXXXX TODO: Implementation for X11 if possible */
 
 
+}
index f4b7dda4e60bdc143fdc2030758712bff8c2f3f4..b95ed451ed32ba73d259ba416f99feedd0bc7451 100644 (file)
@@ -67,6 +67,10 @@ public:
          */
         const GHOST_TUns8* getBinaryDir() const;
 
          */
         const GHOST_TUns8* getBinaryDir() const;
 
+        /**
+         * Add the file to the operating system most recently used files
+         */
+        void addToSystemRecentFiles(const char* filename) const;
 };
 
 #endif
 };
 
 #endif
index b5601f60beeb1909298a57e8c29d39bf4098e5b6..e7165598e38ab3733a3d841ea4939eea2df190d9 100644 (file)
@@ -91,6 +91,7 @@
 #include "ED_util.h"
 
 #include "GHOST_C-api.h"
 #include "ED_util.h"
 
 #include "GHOST_C-api.h"
+#include "GHOST_Path-api.h"
 
 #include "UI_interface.h"
 
 
 #include "UI_interface.h"
 
@@ -511,6 +512,9 @@ static void write_history(void)
                        }
                        fclose(fp);
                }
                        }
                        fclose(fp);
                }
+
+               /* also update most recent files on System */
+               GHOST_addToSystemRecentFiles(G.main->name);
        }
 }
 
        }
 }