Browse Source

Added special paste menu option to not update clip order on paste

scott brogden 7 years ago
parent
commit
2a964114ff
10 changed files with 52 additions and 5 deletions
  1. 2 0
      ActionEnums.cpp
  2. 2 0
      ActionEnums.h
  3. 2 0
      CP_Main.rc
  4. 5 3
      ProcessPaste.cpp
  5. 2 1
      ProcessPaste.h
  6. 31 0
      QPasteWnd.cpp
  7. 4 0
      QPasteWnd.h
  8. 2 1
      Resource.h
  9. 1 0
      SpecialPasteOptions.cpp
  10. 1 0
      SpecialPasteOptions.h

+ 2 - 0
ActionEnums.cpp

@@ -305,6 +305,8 @@ CString ActionEnums::EnumDescription(ActionEnumValues value)
 	case PASTE_SCRIPT:
 		val = "Paste Script";
 		break;
+	case PASTE_DONT_MOVE_CLIP:
+		val = "Paste, Don't Change Clip Order";
 	}
 
 	CString translatedValue = theApp.m_Language.GetQuickPasteKeyboardString(value, val);

+ 2 - 0
ActionEnums.h

@@ -103,6 +103,8 @@ public:
 		TOGGLE_SEARCH_METHOD,
 		PASTE_SCRIPT,
 		MOVE_CLIP_LAST,
+		PASTE_DONT_MOVE_CLIP,
+
 
 
 		LAST_ACTION

+ 2 - 0
CP_Main.rc

@@ -261,6 +261,8 @@ BEGIN
             MENUITEM "Paste + Two Line Feeds",      ID_SPECIALPASTE_PASTE32919
             MENUITEM "Paste + Current Time",        ID_SPECIALPASTE_PASTE32927
             MENUITEM SEPARATOR
+            MENUITEM "Paste, Don't Change Clip Order", ID_SPECIALPASTE_PASTE32945
+            MENUITEM SEPARATOR
             MENUITEM "Typoglycemia",                ID_SPECIALPASTE_TYPOGLYCEMIA
         END
         POPUP "Compare"

+ 5 - 3
ProcessPaste.cpp

@@ -35,7 +35,7 @@ BOOL CProcessPaste::DoPaste()
 			// MarkAsPasted() must be done first since it makes use of
 			//  m_pOle->m_ClipIDs and m_pOle is inaccessible after
 			//  SetClipboard is called.
-			MarkAsPasted();
+			MarkAsPasted(m_pasteOptions.m_updateClipOrder);
 
 			// Ignore the clipboard change that we will cause IF:
 			// 1) we are pasting a single element, since the element is already
@@ -103,7 +103,7 @@ BOOL CProcessPaste::DoDrag()
 		DROPEFFECT de = m_pOle->DoDragDrop(DROPEFFECT_COPY);
 		if (de != DROPEFFECT_NONE)
 		{
-			MarkAsPasted();
+			MarkAsPasted(m_pasteOptions.m_updateClipOrder);
 			ret = TRUE;
 		}		
 	}
@@ -148,7 +148,7 @@ BOOL CProcessPaste::DoDrag()
 	return ret;
 }
 
-void CProcessPaste::MarkAsPasted()
+void CProcessPaste::MarkAsPasted(bool updateClipOrder)
 {
 	Log(_T("start of MarkAsPasted"));
 
@@ -163,6 +163,7 @@ void CProcessPaste::MarkAsPasted()
 		pData->ids.Add(clips.ElementAt(i));
 	}
 	pData->pastedFromGroup = m_pastedFromGroup;
+	pData->updateClipOrder = updateClipOrder;
 
 	//Moved to a thread because when running from from U3 devices the write is time consuming
 	AfxBeginThread(CProcessPaste::MarkAsPastedThread, (LPVOID)pData, THREAD_PRIORITY_LOWEST);
@@ -190,6 +191,7 @@ UINT CProcessPaste::MarkAsPastedThread(LPVOID pParam)
 			int clipCount = pData->ids.GetCount();
 
 			if(g_Opt.m_bUpdateTimeOnPaste && 
+				pData->updateClipOrder &&
 				clipCount == 1)
 			{
 				for (int i = 0; i < clipCount; i++)

+ 2 - 1
ProcessPaste.h

@@ -32,6 +32,7 @@ public:
 	{
 		CClipIDs ids;
 		bool pastedFromGroup;
+		bool updateClipOrder;
 	};
 	
 	CProcessPaste();
@@ -42,7 +43,7 @@ public:
 	BOOL DoPaste();
 	BOOL DoDrag();
 
-	void MarkAsPasted();
+	void MarkAsPasted(bool updateClipOrder);
 	static UINT MarkAsPastedThread(LPVOID pParam);
 };
 

+ 31 - 0
QPasteWnd.cpp

@@ -302,6 +302,8 @@ ON_COMMAND_RANGE(ChaiScriptMenuStartId, (ChaiScriptMenuStartId + MaxChaiScripts
 ON_MESSAGE(WM_DPICHANGED, OnDpiChanged)
 ON_COMMAND(ID_CLIPORDER_MOVETOLAST, &CQPasteWnd::OnCliporderMovetolast)
 ON_UPDATE_COMMAND_UI(ID_CLIPORDER_MOVETOLAST, &CQPasteWnd::OnUpdateCliporderMovetolast)
+ON_COMMAND(ID_SPECIALPASTE_PASTE32945, &CQPasteWnd::OnSpecialpastePasteDontUpdateOrder)
+ON_UPDATE_COMMAND_UI(ID_SPECIALPASTE_PASTE32945, &CQPasteWnd::OnUpdateOnSpecialPasteDontUpdateOrder)
 END_MESSAGE_MAP()
 
 
@@ -3205,11 +3207,23 @@ bool CQPasteWnd::DoAction(CAccel a)
 	case ActionEnums::PASTE_SCRIPT:
 		ret = DoActionPasteScript(a.RefData);
 		break;
+	case ActionEnums::PASTE_DONT_MOVE_CLIP:
+		ret = DoActionPasteDontMoveClip();
+		break;
 	}
 
 	return ret;
 }
 
+bool CQPasteWnd::DoActionPasteDontMoveClip()
+{
+	CSpecialPasteOptions pasteOptions;
+	pasteOptions.m_updateClipOrder = false;
+	OpenSelection(pasteOptions);
+
+	return true;
+}
+
 bool CQPasteWnd::DoActionPasteScript(CString scriptGuid)
 {
 	CSpecialPasteOptions pasteOptions;
@@ -6794,3 +6808,20 @@ void CQPasteWnd::OnUpdateCliporderMovetolast(CCmdUI *pCmdUI)
 
 	UpdateMenuShortCut(pCmdUI, ActionEnums::MOVE_CLIP_LAST);
 }
+
+
+void CQPasteWnd::OnSpecialpastePasteDontUpdateOrder()
+{
+	DoAction(ActionEnums::PASTE_DONT_MOVE_CLIP);
+}
+
+
+void CQPasteWnd::OnUpdateOnSpecialPasteDontUpdateOrder(CCmdUI *pCmdUI)
+{
+	if (!pCmdUI->m_pMenu)
+	{
+		return;
+	}
+
+	UpdateMenuShortCut(pCmdUI, ActionEnums::PASTE_DONT_MOVE_CLIP);
+}

+ 4 - 0
QPasteWnd.h

@@ -288,6 +288,7 @@ public:
 	bool DoActionPromptSendToFriend();
 	bool DoActionSaveCF_HDROP_FileData();
 	bool DoActionToggleClipboardConnection();
+	bool DoActionPasteDontMoveClip();
 
 	bool OnNewClip();
 	bool OnImportClip();
@@ -528,4 +529,7 @@ public:
 	afx_msg void OnCliporderMovetolast();
 	afx_msg void OnUpdateCliporderMovetolast(CCmdUI *pCmdUI);
 	afx_msg LRESULT OnCopyClip(WPARAM wParam, LPARAM lParam);
+	afx_msg void OnSpecialpastePasteDontUpdateOrder();
+	afx_msg void OnUpdateOnSpecialPasteDontUpdateOrder(CCmdUI *pCmdUI);
+
 };

+ 2 - 1
Resource.h

@@ -759,6 +759,7 @@
 #define ID_FIRST_ALWAYSONTOP            32942
 #define ID_CLIPORDER_MOVETOLAST         32943
 #define ID_QUICKOPTIONS_                32944
+#define ID_SPECIALPASTE_PASTE32945      32945
 
 // Next default values for new objects
 // 
@@ -766,7 +767,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_3D_CONTROLS                     1
 #define _APS_NEXT_RESOURCE_VALUE        383
-#define _APS_NEXT_COMMAND_VALUE         32945
+#define _APS_NEXT_COMMAND_VALUE         32946
 #define _APS_NEXT_CONTROL_VALUE         2172
 #define _APS_NEXT_SYMED_VALUE           104
 #endif

+ 1 - 0
SpecialPasteOptions.cpp

@@ -18,6 +18,7 @@ CSpecialPasteOptions::CSpecialPasteOptions()
 	m_delayRenderLockout = 0;
 	m_dragDropFilesOnly = false;
 	m_pasteScriptGuid = _T("");
+	m_updateClipOrder = true;
 }
 
 CSpecialPasteOptions::~CSpecialPasteOptions()

+ 1 - 0
SpecialPasteOptions.h

@@ -21,6 +21,7 @@ public:
 	DWORD m_delayRenderLockout;
 	bool m_dragDropFilesOnly;
 	CString m_pasteScriptGuid;
+	bool m_updateClipOrder;
 
 	bool LimitFormatsToText() 
 	{