diff --git a/win-linux/extras/projicons/src/jumplist.cpp b/win-linux/extras/projicons/src/jumplist.cpp index a5b295d1e..57f1570e3 100644 --- a/win-linux/extras/projicons/src/jumplist.cpp +++ b/win-linux/extras/projicons/src/jumplist.cpp @@ -99,14 +99,14 @@ HRESULT _CreateShellLink(PCWSTR pszArguments, PCWSTR pszTitle, IShellLink **ppsl return hr; } -HRESULT _AddTasksToList(ICustomDestinationList *pcdl, QStringList list) +HRESULT _AddTasksToList(ICustomDestinationList *pcdl, const QStringList &list) { pcdl->AppendKnownCategory(KDC_RECENT); IObjectCollection *poc; HRESULT hr = CoCreateInstance(CLSID_EnumerableObjectCollection, NULL, CLSCTX_INPROC, IID_PPV_ARGS(&poc)); if (SUCCEEDED(hr)) { - PCWSTR args[] = { + PCWSTR args[MAX_TASK_NUM] = { L"--new:word", L"--new:cell", L"--new:slide", @@ -115,7 +115,7 @@ HRESULT _AddTasksToList(ICustomDestinationList *pcdl, QStringList list) IShellLink * psl; for (int i = 0; i < MAX_TASK_NUM && i < list.size(); i++) { - hr = _CreateShellLink(args[i], list[i].replace('_', ' ').toStdWString().c_str(), &psl, i); + hr = _CreateShellLink(args[i], list[i].toStdWString().c_str(), &psl, i); if (SUCCEEDED(hr)) { hr = poc->AddObject(psl); diff --git a/win-linux/extras/projicons/src/jumplist.h b/win-linux/extras/projicons/src/jumplist.h index 15e754a58..b16bd686f 100644 --- a/win-linux/extras/projicons/src/jumplist.h +++ b/win-linux/extras/projicons/src/jumplist.h @@ -35,7 +35,6 @@ #include -#define MIN_TASK_NUM 3 #define MAX_TASK_NUM 4 void CreateJumpList(const QStringList &list); diff --git a/win-linux/extras/projicons/src/main.cpp b/win-linux/extras/projicons/src/main.cpp index a735f12e7..36eb73e9e 100644 --- a/win-linux/extras/projicons/src/main.cpp +++ b/win-linux/extras/projicons/src/main.cpp @@ -63,13 +63,11 @@ int main(int argc, char *argv[]) QStringList _cmdArgs(QCoreApplication::arguments().mid(1)); #ifndef __OS_WIN_XP if (_cmdArgs.contains("--create-jump-list")) { - QStringList defaultTitles = { - "New document", - "New spreadsheet", - "New presentation", - "New PDF form" - }; - CreateJumpList(_cmdArgs.size() > MIN_TASK_NUM ? _cmdArgs.mid(1) : defaultTitles); + if (_cmdArgs.size() > 1) { + QStringList list = _cmdArgs.at(1).split(';', Qt::SkipEmptyParts); + if (!list.isEmpty()) + CreateJumpList(list); + } return 0; } else if (_cmdArgs.contains("--remove-jump-list")) { diff --git a/win-linux/package/windows/common.iss b/win-linux/package/windows/common.iss index ce35fd553..9d1d78391 100644 --- a/win-linux/package/windows/common.iss +++ b/win-linux/package/windows/common.iss @@ -971,14 +971,11 @@ begin DoPostInstall(); GetWindowsVersionEx(version); if (version.Major > 6) or ((version.Major = 6) and (version.Minor >= 1)) then begin + translateArgs := ExpandConstant('@{app}\{#iconsExe},-1200;@{app}\{#iconsExe},-1201;@{app}\{#iconsExe},-1202'); #ifdef _ONLYOFFICE - translateArgs := ExpandConstant('@{app}\{#iconsExe},-1200+@{app}\{#iconsExe},-1201+@{app}\{#iconsExe},-1202+@{app}\{#iconsExe},-1103'); -#else - translateArgs := ExpandConstant('@{app}\{#iconsExe},-1200+@{app}\{#iconsExe},-1201+@{app}\{#iconsExe},-1202'); + translateArgs := translateArgs + ExpandConstant(';@{app}\{#iconsExe},-1103'); #endif - StringChangeEx(translateArgs, ' ', '_', True); - StringChangeEx(translateArgs, '+', ' ', True); - Exec(ExpandConstant('{app}\{#iconsExe}'), '--create-jump-list ' + translateArgs, '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode); + Exec(ExpandConstant('{app}\{#iconsExe}'), '--create-jump-list "' + translateArgs + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode); if CheckCommandlineParam('/noupdates') then begin RegWriteDWordValue(HKEY_LOCAL_MACHINE, ExpandConstant('{#APP_REG_PATH}'), 'CheckForUpdates', 0); end else