mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-05 02:36:19 +02:00
[Workspaces]Fix snapshotting minimized apps (#37598)
* Fix snapshotting minimized packaged apps * Fix window arranger to work with the same windows as the snapshot tool. * spell checker * optimising code * Remove filter condition.
This commit is contained in:
@@ -52,6 +52,11 @@ namespace SnapshotUtils
|
||||
|
||||
for (const auto window : windows)
|
||||
{
|
||||
if (WindowFilter::FilterPopup(window))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// filter by window rect size
|
||||
RECT rect = WindowUtils::GetWindowRect(window);
|
||||
if (rect.right - rect.left <= 0 || rect.bottom - rect.top <= 0)
|
||||
@@ -93,7 +98,7 @@ namespace SnapshotUtils
|
||||
continue;
|
||||
}
|
||||
|
||||
// fix for the packaged apps that are not caught when minimized, e.g., Settings.
|
||||
// fix for the packaged apps that are not caught when minimized, e.g. Settings, Microsoft ToDo, ...
|
||||
if (processPath.ends_with(NonLocalizable::ApplicationFrameHost))
|
||||
{
|
||||
for (auto otherWindow : windows)
|
||||
@@ -110,11 +115,6 @@ namespace SnapshotUtils
|
||||
}
|
||||
}
|
||||
|
||||
if (WindowFilter::FilterPopup(window))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
auto data = Utils::Apps::GetApp(processPath, pid, installedApps);
|
||||
if (!data.has_value() || data->name.empty())
|
||||
{
|
||||
|
||||
@@ -14,6 +14,11 @@
|
||||
#include <WindowProperties/WorkspacesWindowPropertyUtils.h>
|
||||
#include <WorkspacesLib/PwaHelper.h>
|
||||
|
||||
namespace NonLocalizable
|
||||
{
|
||||
const std::wstring ApplicationFrameHost = L"ApplicationFrameHost.exe";
|
||||
}
|
||||
|
||||
namespace PlacementHelper
|
||||
{
|
||||
// When calculating the coordinates difference (== 'distance') between 2 windows, there are additional values added to the real distance
|
||||
@@ -157,6 +162,11 @@ std::optional<WindowWithDistance> WindowArranger::GetNearestWindow(const Workspa
|
||||
|
||||
for (HWND window : m_windowsBefore)
|
||||
{
|
||||
if (WindowFilter::FilterPopup(window))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (std::find(movedWindows.begin(), movedWindows.end(), window) != movedWindows.end())
|
||||
{
|
||||
continue;
|
||||
@@ -170,6 +180,24 @@ std::optional<WindowWithDistance> WindowArranger::GetNearestWindow(const Workspa
|
||||
|
||||
DWORD pid{};
|
||||
GetWindowThreadProcessId(window, &pid);
|
||||
std::wstring title = WindowUtils::GetWindowTitle(window);
|
||||
|
||||
// fix for the packaged apps that are not caught when minimized, e.g. Settings, Microsoft ToDo, ...
|
||||
if (processPath.ends_with(NonLocalizable::ApplicationFrameHost))
|
||||
{
|
||||
for (auto otherWindow : m_windowsBefore)
|
||||
{
|
||||
DWORD otherPid{};
|
||||
GetWindowThreadProcessId(otherWindow, &otherPid);
|
||||
|
||||
// searching for the window with the same title but different PID
|
||||
if (pid != otherPid && title == WindowUtils::GetWindowTitle(otherWindow))
|
||||
{
|
||||
processPath = get_process_path(otherPid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
auto data = Utils::Apps::GetApp(processPath, pid, m_installedApps);
|
||||
if (!data.has_value())
|
||||
|
||||
@@ -50,11 +50,6 @@ namespace WindowFilter
|
||||
return false;
|
||||
}
|
||||
|
||||
if (WindowFilter::FilterPopup(window))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!VirtualDesktop::instance().IsWindowOnCurrentDesktop(window))
|
||||
{
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user