[Workspaces] detecting right app version (#36100)

* [Workspaces] Add move functionality

* spell checker

* [Workspaces] Modify Arranger to move apps without launch

* moved ipc helper

* removed callback

* use LauncherStatus in WindowArranger

* wait for launching next app

* launch in a separate thread and protect by mutexes

* update app version in advance

* changed canceling launch

* increased waiting time

* Fix optional parameter load from json

* changed arranger waiting time

* additional waiting time for Outlook

* added app id

* ensure ids before launch

* set id in editor

* minor updates

* [Workspaces] Move: Get the nearest window when moving a window

* [Workspaces] convert optional boolean to enum to avoid json problems

* Handle case when the new Application Property "moveIfExists" does not exist

* Re-implementing app-window pairing for moving feature.

* spell checker

* XAML formatting

* Fixing bug: IPC message not arriving

* spell checker

* Removing app-level-setting for move app. Also fixed compiler errors due styling.

* Updating editor window layout

* Re-implementing window positioning UI elements

* XAML formatting

* Code review findings

* Code cleanup

* Code cleanup

* Code cleanup

* code cleanup

* Code cleanup

* Code cleanup

* [Workspaces] fix detection of specific version of apps

---------

Co-authored-by: Seraphima <zykovas91@gmail.com>
Co-authored-by: donlaci <donlaci@yahoo.com>
This commit is contained in:
Laszlo Nemeth 2024-12-09 18:47:02 +01:00 коммит произвёл GitHub
Родитель ef672b5564
Коммит 9591950875
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
1 изменённых файлов: 8 добавлений и 1 удалений

Просмотреть файл

@ -252,6 +252,7 @@ namespace Utils
}
// search in apps list
std::optional<AppData> appDataPlanB{ std::nullopt };
for (const auto& appData : apps)
{
if (!appData.installPath.empty())
@ -274,13 +275,19 @@ namespace Utils
// edge case, some apps (e.g., Gitkraken) have different .exe files in the subfolders.
// apps list contains only one path, so in this case app is not found
// remember the match and return it in case the loop is over and there are no direct matches
if (std::filesystem::path(appPath).filename() == std::filesystem::path(appData.installPath).filename())
{
return appData;
appDataPlanB = appData;
}
}
}
if (appDataPlanB.has_value())
{
return appDataPlanB.value();
}
// try by name if path not found
// apps list could contain a different path from that one we get from the process (for electron)
std::wstring exeName = std::filesystem::path(appPath).stem();