summaryrefslogtreecommitdiff
path: root/plugins/NewStory/src/history_control.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2023-07-29 14:23:02 +0300
committerGeorge Hazan <george.hazan@gmail.com>2023-07-29 14:23:02 +0300
commitedbfd659e4990494670e535d5be282659cd5bfc8 (patch)
tree47dabe0dd71e2fa07b8476273e58ead785317f36 /plugins/NewStory/src/history_control.cpp
parenta63fdd451d23aa5d4b33c1bcf3540bea411f3358 (diff)
fixes #3602 ("Copy path" в контекстном меню для файлов)
Diffstat (limited to 'plugins/NewStory/src/history_control.cpp')
-rw-r--r--plugins/NewStory/src/history_control.cpp22
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;
}