Skip to content

Commit a043c51

Browse files
AlapipapiSeraphimaZykovadonlaci
committed
[Workspaces] Arranger: smart timer (microsoft#36096)
* [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] Arranger: Reset wait timer after each successful arrange action * fix merge error --------- Co-authored-by: Seraphima <[email protected]> Co-authored-by: donlaci <[email protected]>
1 parent eb524c4 commit a043c51

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.cpp

+17-9
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,11 @@ WindowArranger::WindowArranger(WorkspacesData::WorkspacesProject project) :
313313
// process launching windows
314314
while (!m_launchingStatus.AllLaunched() && waitingTime < maxLaunchingWaitingTime)
315315
{
316-
processWindows(false);
316+
if (processWindows(false))
317+
{
318+
waitingTime = 0;
319+
}
320+
317321
std::this_thread::sleep_for(std::chrono::milliseconds(ms));
318322
waitingTime += ms;
319323
}
@@ -340,8 +344,9 @@ WindowArranger::WindowArranger(WorkspacesData::WorkspacesProject project) :
340344
}
341345
}
342346

343-
void WindowArranger::processWindows(bool processAll)
347+
bool WindowArranger::processWindows(bool processAll)
344348
{
349+
bool processedAnyWindow = false;
345350
std::vector<HWND> windows = WindowEnumerator::Enumerate(WindowFilter::Filter);
346351

347352
if (!processAll)
@@ -353,27 +358,29 @@ void WindowArranger::processWindows(bool processAll)
353358

354359
for (HWND window : windows)
355360
{
356-
processWindow(window);
361+
processedAnyWindow |= processWindow(window);
357362
}
363+
364+
return processedAnyWindow;
358365
}
359366

360-
void WindowArranger::processWindow(HWND window)
367+
bool WindowArranger::processWindow(HWND window)
361368
{
362369
if (m_launchingStatus.IsWindowProcessed(window))
363370
{
364-
return;
371+
return false;
365372
}
366373

367374
RECT rect = WindowUtils::GetWindowRect(window);
368375
if (rect.right - rect.left <= 0 || rect.bottom - rect.top <= 0)
369376
{
370-
return;
377+
return false;
371378
}
372379

373380
std::wstring processPath = get_process_path(window);
374381
if (processPath.empty())
375382
{
376-
return;
383+
return false;
377384
}
378385

379386
DWORD pid{};
@@ -382,7 +389,7 @@ void WindowArranger::processWindow(HWND window)
382389
auto data = Utils::Apps::GetApp(processPath, pid, m_installedApps);
383390
if (!data.has_value())
384391
{
385-
return;
392+
return false;
386393
}
387394

388395
const auto& apps = m_launchingStatus.Get();
@@ -395,7 +402,7 @@ void WindowArranger::processWindow(HWND window)
395402
if (iter == apps.end())
396403
{
397404
Logger::info(L"Skip {}", processPath);
398-
return;
405+
return false;
399406
}
400407

401408
if (moveWindow(window, iter->first))
@@ -412,6 +419,7 @@ void WindowArranger::processWindow(HWND window)
412419
{
413420
sendUpdatedState(state.value());
414421
}
422+
return true;
415423
}
416424

417425
bool WindowArranger::moveWindow(HWND window, const WorkspacesData::WorkspacesProject::Application& app)

src/modules/Workspaces/WorkspacesWindowArranger/WindowArranger.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ class WindowArranger
3232
bool TryMoveWindow(const WorkspacesData::WorkspacesProject::Application& app, HWND windowToMove);
3333

3434
//void onWindowCreated(HWND window);
35-
void processWindows(bool processAll);
36-
void processWindow(HWND window);
35+
bool processWindows(bool processAll);
36+
bool processWindow(HWND window);
3737
bool moveWindow(HWND window, const WorkspacesData::WorkspacesProject::Application& app);
3838

3939
void receiveIpcMessage(const std::wstring& message);

0 commit comments

Comments
 (0)