[Winmerge-svn] SF.net SVN: winmerge:[6531] trunk
Windows visual diff and merge for files and directories
Brought to you by:
christianlist,
grimmdp
From: <ki...@us...> - 2009-03-04 15:48:29
|
Revision: 6531 http://winmerge.svn.sourceforge.net/winmerge/?rev=6531&view=rev Author: kimmov Date: 2009-03-04 15:48:21 +0000 (Wed, 04 Mar 2009) Log Message: ----------- PATCH: [ 2659228 ] Remember last copy/move to -folder Modified Paths: -------------- trunk/Docs/Users/ChangeLog.txt trunk/Src/DirActions.cpp trunk/Src/DirView.h trunk/Src/FileOrFolderSelect.cpp Modified: trunk/Docs/Users/ChangeLog.txt =================================================================== --- trunk/Docs/Users/ChangeLog.txt 2009-03-03 21:56:54 UTC (rev 6530) +++ trunk/Docs/Users/ChangeLog.txt 2009-03-04 15:48:21 UTC (rev 6531) @@ -3,6 +3,9 @@ to Subversion revision numbers (rXXXXX). To open the tracker item, go to URL: http://winmerge.org/tracker/[tracker-id] +WinMerge 2.13.5 + Remember last target folder for Copy/Move to in folder compare (#2659228) + WinMerge 2.13.4 - 2009-03-03 (r6529) Add option for setting line difference wordbreak characters (#2655563) Put temp files to per-instance subfolder in temp folder (#2582768) Modified: trunk/Src/DirActions.cpp =================================================================== --- trunk/Src/DirActions.cpp 2009-03-03 21:56:54 UTC (rev 6530) +++ trunk/Src/DirActions.cpp 2009-03-04 15:48:21 UTC (rev 6531) @@ -587,11 +587,12 @@ void CDirView::DoCopyLeftTo() { CString destPath; - CString startPath; + CString startPath(m_lastCopyFolder.c_str()); if (!SelectFolder(destPath, startPath, IDS_SELECT_DEST_LEFT)) return; + m_lastCopyFolder = destPath; WaitStatusCursor waitstatus(IDS_STATUS_COPYFILES); FileActionScript actionScript; @@ -658,11 +659,12 @@ void CDirView::DoCopyRightTo() { CString destPath; - CString startPath; + CString startPath(m_lastCopyFolder.c_str()); if (!SelectFolder(destPath, startPath, IDS_SELECT_DEST_RIGHT)) return; + m_lastCopyFolder = destPath; WaitStatusCursor waitstatus(IDS_STATUS_COPYFILES); FileActionScript actionScript; @@ -729,11 +731,12 @@ void CDirView::DoMoveLeftTo() { CString destPath; - CString startPath; + CString startPath(m_lastCopyFolder.c_str()); if (!SelectFolder(destPath, startPath, IDS_SELECT_DEST_LEFT)) return; + m_lastCopyFolder = destPath; WaitStatusCursor waitstatus(IDS_STATUS_MOVEFILES); FileActionScript actionScript; @@ -798,11 +801,12 @@ void CDirView::DoMoveRightTo() { CString destPath; - CString startPath; + CString startPath(m_lastCopyFolder.c_str()); if (!SelectFolder(destPath, startPath, IDS_SELECT_DEST_RIGHT)) return; + m_lastCopyFolder = destPath; WaitStatusCursor waitstatus(IDS_STATUS_MOVEFILES); FileActionScript actionScript; Modified: trunk/Src/DirView.h =================================================================== --- trunk/Src/DirView.h 2009-03-03 21:56:54 UTC (rev 6530) +++ trunk/Src/DirView.h 2009-03-04 15:48:21 UTC (rev 6531) @@ -274,6 +274,7 @@ DirCompProgressDlg * m_pCmpProgressDlg; clock_t m_compareStart; /**< Starting process time of the compare */ BOOL m_bUserCancelEdit; /**< TRUE if the user cancels rename */ + String m_lastCopyFolder; /**< Last Copy To -target folder. */ CShellContextMenu* m_pShellContextMenuLeft; /**< Shell context menu for group of left files */ CShellContextMenu* m_pShellContextMenuRight; /**< Shell context menu for group of right files */ Modified: trunk/Src/FileOrFolderSelect.cpp =================================================================== --- trunk/Src/FileOrFolderSelect.cpp 2009-03-03 21:56:54 UTC (rev 6530) +++ trunk/Src/FileOrFolderSelect.cpp 2009-03-04 15:48:21 UTC (rev 6531) @@ -48,8 +48,13 @@ #define BIF_USENEWUI (BIF_NEWDIALOGSTYLE | BIF_EDITBOX) #endif +static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, + LPARAM lpData); static void ConvertFilter(LPTSTR filterStr); +/** @brief Last selected folder for folder selection dialog. */ +static String LastSelectedFolder; + /** * @brief Helper function for selecting folder or file. * This function shows standard Windows file selection dialog for selecting @@ -155,13 +160,14 @@ TCHAR szPath[MAX_PATH] = {0}; BOOL bRet = FALSE; String title = theApp.LoadString(titleid); + LastSelectedFolder = root_path; bi.hwndOwner = hwndOwner; bi.pidlRoot = NULL; // Start from desktop folder bi.pszDisplayName = szPath; bi.lpszTitle = title.c_str(); - bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI; - bi.lpfn = NULL; + bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI | BIF_VALIDATE; + bi.lpfn = BrowseCallbackProc; bi.lParam = NULL; pidl = SHBrowseForFolder(&bi); @@ -181,6 +187,21 @@ return bRet; } +/** + * @brief Callback function for setting selected folder for folder dialog. + */ +static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, + LPARAM lpData) +{ + // Look for BFFM_INITIALIZED + if (uMsg == BFFM_INITIALIZED) + { + SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)LastSelectedFolder.c_str()); + } + return 0; +} + + /** * @brief Shows file/folder selection dialog. * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |