Browse Source

Use ever incrementing value for drag file names, this way they are always unique

ScottBrogden 10 years ago
parent
commit
c7cc061f5d
3 changed files with 25 additions and 6 deletions
  1. 12 6
      OleClipSource.cpp
  2. 10 0
      Options.cpp
  3. 3 0
      Options.h

+ 12 - 6
OleClipSource.cpp

@@ -847,13 +847,14 @@ BOOL COleClipSource::OnRenderGlobalData(LPFORMATETC lpFormatEtc, HGLOBAL* phGlob
 
 HGLOBAL COleClipSource::ConvertToFileDrop()
 {
-	CString csFile = CGetSetOptions::GetPath(PATH_DRAG_FILES);
-	CString path;
-	path.Format(_T("%s%d\\"), csFile, GetTickCount());
+	CString path = CGetSetOptions::GetPath(PATH_DRAG_FILES);	
 	CreateDirectory(path, NULL);
 
 	CFileRecieve fileList;
 
+	int dragId = CGetSetOptions::GetDragId();
+	int origDragId = dragId;
+
 	for (int i = 0; i < m_ClipIDs.GetCount(); i++)
 	{
 		CClip fileClip;
@@ -863,7 +864,7 @@ HGLOBAL COleClipSource::ConvertToFileDrop()
 		if (unicodeText)
 		{
 			CString file;
-			file.Format(_T("%stext_%d.txt"), path, i + 1);
+			file.Format(_T("%stext_%d.txt"), path, dragId++);
 
 			fileClip.WriteTextToFile(file, TRUE, FALSE, FALSE);
 			fileList.AddFile(file);
@@ -874,7 +875,7 @@ HGLOBAL COleClipSource::ConvertToFileDrop()
 			if (asciiText)
 			{
 				CString file;
-				file.Format(_T("%stext_%d.txt"), path, i + 1);
+				file.Format(_T("%stext_%d.txt"), path, dragId++);
 
 				fileClip.WriteTextToFile(file, FALSE, TRUE, FALSE);
 				fileList.AddFile(file);
@@ -885,7 +886,7 @@ HGLOBAL COleClipSource::ConvertToFileDrop()
 				if (bitmap)
 				{
 					CString file;
-					file.Format(_T("%simage_%d.png"), path, i + 1);
+					file.Format(_T("%simage_%d.png"), path, dragId++);
 
 					LPVOID pvData = GlobalLock(bitmap->m_hgData);
 					ULONG size = (ULONG) GlobalSize(bitmap->m_hgData);
@@ -900,6 +901,11 @@ HGLOBAL COleClipSource::ConvertToFileDrop()
 		}
 	}
 
+	if(dragId != origDragId)
+	{
+		CGetSetOptions::SetDragId(dragId);
+	}
+
 	HGLOBAL hData = fileList.CreateCF_HDROPBuffer();
 
 	return hData;

+ 10 - 0
Options.cpp

@@ -2335,4 +2335,14 @@ BOOL CGetSetOptions::GetUseIPFromAccept()
 void CGetSetOptions::SetUseIPFromAccept(BOOL useAccept)
 {
 	SetProfileLong(_T("UseIPFromAccept"), useAccept);
+}
+
+int CGetSetOptions::GetDragId()
+{
+	return GetProfileLong(_T("DragId"), 1);
+}
+
+void CGetSetOptions::SetDragId(int id)
+{
+	SetProfileLong(_T("DragId"), id);
 }

+ 3 - 0
Options.h

@@ -509,6 +509,9 @@ public:
 	
 	static BOOL GetUseIPFromAccept();
 	static void SetUseIPFromAccept(BOOL useAccept);
+
+	static int GetDragId();
+	static void SetDragId(int id);
 };
 
 // global for easy access and for initialization of fast access variables