Преглед изворни кода

- control-drag will always drag files
- reset last copy crc when deleting clips, lets you copy the same clip again after delete

Scott Brogden пре 8 година
родитељ
комит
6c5f10f51a
5 измењених фајлова са 22 додато и 1 уклоњено
  1. 11 1
      OleClipSource.cpp
  2. 1 0
      ProcessPaste.cpp
  3. 8 0
      QPasteWnd.cpp
  4. 1 0
      SpecialPasteOptions.cpp
  5. 1 0
      SpecialPasteOptions.h

+ 11 - 1
OleClipSource.cpp

@@ -40,7 +40,17 @@ BOOL COleClipSource::DoDelayRender()
 	INT_PTR count = types.GetSize();
 	for(int i=0; i < count; i++)
 	{
-		DelayRenderData(types[i]);
+		if (m_pasteOptions.m_dragDropFilesOnly)
+		{
+			if (types[i] == CF_HDROP)
+			{
+				DelayRenderData(types[i]);
+			}
+		}
+		else
+		{
+			DelayRenderData(types[i]);
+		}
 
 		if (types[i] == CF_HDROP)
 		{

+ 1 - 0
ProcessPaste.cpp

@@ -72,6 +72,7 @@ BOOL CProcessPaste::DoPaste()
 
 BOOL CProcessPaste::DoDrag()
 {
+	m_pOle->m_pasteOptions = m_pasteOptions;
 	m_pOle->DoDelayRender();
 	DROPEFFECT de = m_pOle->DoDragDrop(DROPEFFECT_COPY);
 	if(de != DROPEFFECT_NONE)

+ 8 - 0
QPasteWnd.cpp

@@ -2591,6 +2591,8 @@ bool CQPasteWnd::DeleteClips(CClipIDs &IDs, ARRAY &Indexs)
 		}
 	}
 
+	CClip::m_LastAddedCRC = 0;
+
 	m_extraDataThread.FireLoadAccelerators();
 
 	m_lstHeader.SetItemCountEx(m_lstHeader.GetItemCount() - erasedCount);
@@ -4650,6 +4652,12 @@ void CQPasteWnd::OnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
     NM_LISTVIEW *pLV = (NM_LISTVIEW*)pNMHDR;
     CProcessPaste paste;
 	paste.m_pastedFromGroup = (theApp.m_GroupID > 0);
+
+	if (CONTROL_PRESSED)
+	{
+		paste.m_pasteOptions.m_dragDropFilesOnly = true;
+	}
+
     CClipIDs &clips = paste.GetClipIDs();
 
     m_lstHeader.GetSelectionItemData(clips);

+ 1 - 0
SpecialPasteOptions.cpp

@@ -16,6 +16,7 @@ CSpecialPasteOptions::CSpecialPasteOptions()
 	m_pasteTypoglycemia = false;
 	m_pasteAddingDateTime = false;
 	m_delayRenderLockout = 0;
+	m_dragDropFilesOnly = false;
 }
 
 CSpecialPasteOptions::~CSpecialPasteOptions()

+ 1 - 0
SpecialPasteOptions.h

@@ -19,6 +19,7 @@ public:
 	bool m_pasteAddingDateTime;
 	CClipFormats *m_pPasteFormats;
 	DWORD m_delayRenderLockout;
+	bool m_dragDropFilesOnly;
 
 	bool LimitFormatsToText() 
 	{