diff options
author | George Hazan <george.hazan@gmail.com> | 2023-07-29 14:23:02 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-07-29 14:23:02 +0300 |
commit | edbfd659e4990494670e535d5be282659cd5bfc8 (patch) | |
tree | 47dabe0dd71e2fa07b8476273e58ead785317f36 /plugins/NewStory/src/history_control.cpp | |
parent | a63fdd451d23aa5d4b33c1bcf3540bea411f3358 (diff) |
fixes #3602 ("Copy path" в контекстном меню для файлов)
Diffstat (limited to 'plugins/NewStory/src/history_control.cpp')
-rw-r--r-- | plugins/NewStory/src/history_control.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/plugins/NewStory/src/history_control.cpp b/plugins/NewStory/src/history_control.cpp index 4e723dfa1c..7f25cfbc94 100644 --- a/plugins/NewStory/src/history_control.cpp +++ b/plugins/NewStory/src/history_control.cpp @@ -596,8 +596,19 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM int eventCount = data->items.getCount(); for (int i = 0; i < eventCount; i++) { ItemData *p = data->items.get(i, false); - if (p->m_bSelected) - res.Append(ptrW(TplFormatString(p->getCopyTemplate(), p->hContact, p))); + if (!p->m_bSelected) + continue; + + if (p->m_bOfflineFile) { + DB::EventInfo dbei(p->hEvent); + DB::FILE_BLOB blob(dbei); + if (p->m_bOfflineDownloaded) + res.Append(blob.getLocalName()); + else + res.Append(_A2T(blob.getUrl())); + res.Append(L"\r\n"); + } + else res.Append(ptrW(TplFormatString(p->getCopyTemplate(), p->hContact, p))); } Utils_ClipboardCopy(res); @@ -605,6 +616,11 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM InvalidateRect(hwnd, 0, FALSE); break; + case NSM_DOWNLOAD: + if (auto *p = data->items[data->caret]) + Srmm_DownloadOfflineFile(p->hContact, p->hEvent, lParam); + break; + case UM_EDITEVENT: idx = data->items.find(lParam); if (idx != -1) { @@ -835,7 +851,7 @@ LRESULT CALLBACK NewstoryListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM pt.y -= pItem->savedTop; if (pItem->m_bOfflineFile) { - Srmm_DownloadOfflineFile(pItem->hContact, pItem->hEvent, true); + Srmm_DownloadOfflineFile(pItem->hContact, pItem->hEvent, OFD_DOWNLOAD | OFD_RUN); return 0; } |