Skip to content

Commit

Permalink
[FZE] Send close signal to Editor when the main app closes (#12510)
Browse files Browse the repository at this point in the history
  • Loading branch information
yuyoyuppe committed Jul 26, 2021
1 parent 6dfaf6a commit d2e04d4
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 5 deletions.
1 change: 1 addition & 0 deletions .github/actions/spell-check/expect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -664,6 +664,7 @@ Functiondiscoverykeys
fwlink
fwrite
fxcop
FZE
gabime
GAC
gacutil
Expand Down
4 changes: 4 additions & 0 deletions src/common/interop/interop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,10 @@ public
return gcnew String(CommonSharedConstants::RUN_EXIT_EVENT);
}

static String ^ FZEExitEvent() {
return gcnew String(CommonSharedConstants::FZE_EXIT_EVENT);
}

static String ^ ColorPickerSendSettingsTelemetryEvent() {
return gcnew String(CommonSharedConstants::COLOR_PICKER_SEND_SETTINGS_TELEMETRY_EVENT);
}
Expand Down
2 changes: 2 additions & 0 deletions src/common/interop/shared_constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ namespace CommonSharedConstants
const wchar_t RUN_SEND_SETTINGS_TELEMETRY_EVENT[] = L"Local\\PowerToysRunInvokeEvent-638ec522-0018-4b96-837d-6bd88e06f0d6";

const wchar_t RUN_EXIT_EVENT[] = L"Local\\PowerToysRunExitEvent-3e38e49d-a762-4ef1-88f2-fd4bc7481516";

const wchar_t FZE_EXIT_EVENT[] = L"Local\\PowerToys-FZE-ExitEvent-ca8c73de-a52c-4274-b691-46e9592d3b43";

const wchar_t COLOR_PICKER_SEND_SETTINGS_TELEMETRY_EVENT[] = L"Local\\ColorPickerSettingsTelemetryEvent-6c7071d8-4014-46ec-b687-913bd8a422f1";

Expand Down
30 changes: 25 additions & 5 deletions src/modules/fancyzones/FancyZonesModuleInterface/dllmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,12 +163,31 @@ class FancyZonesModuleInterface : public PowertoyModuleIface
m_hProcess = sei.hProcess;
}
}


void SendFZECloseEvent()
{
auto exitEvent = CreateEventW(nullptr, false, false, CommonSharedConstants::FZE_EXIT_EVENT);
if (!exitEvent)
{
Logger::warn(L"Failed to create exitEvent. {}", get_last_error_or_default(GetLastError()));
}
else
{
Logger::trace(L"Signaled exitEvent");
if (!SetEvent(exitEvent))
{
Logger::warn(L"Failed to signal exitEvent. {}", get_last_error_or_default(GetLastError()));
}

ResetEvent(exitEvent);
CloseHandle(exitEvent);
}
}

void Disable(bool const traceEvent)
{
m_enabled = false;
// Log telemetry

if (traceEvent)
{
Trace::FancyZones::EnableFancyZones(false);
Expand All @@ -178,14 +197,15 @@ class FancyZonesModuleInterface : public PowertoyModuleIface
{
ResetEvent(m_toggleEditorEvent);
}

if (m_hProcess)
{
TerminateProcess(m_hProcess, 0);
SendFZECloseEvent();
m_hProcess = nullptr;
}
}
}

std::wstring app_name;
//contains the non localized key of the powertoy
std::wstring app_key;
Expand Down
9 changes: 9 additions & 0 deletions src/modules/fancyzones/editor/FancyZonesEditor/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,15 @@ public App()
FancyZonesEditorIO = new FancyZonesEditorIO();
Overlay = new Overlay();
MainWindowSettings = new MainWindowSettingsModel();

new Thread(() =>
{
var eventHandle = new EventWaitHandle(false, EventResetMode.AutoReset, interop.Constants.FZEExitEvent());
if (eventHandle.WaitOne())
{
Environment.Exit(0);
}
}).Start();
}

private void OnStartup(object sender, StartupEventArgs e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@
<Resource Include="images\FancyZonesEditor.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\common\interop\PowerToysInterop.vcxproj" />
<ProjectReference Include="..\..\..\..\common\ManagedCommon\ManagedCommon.csproj" />
<ProjectReference Include="..\..\..\..\common\Microsoft.PowerToys.Common.UI\Microsoft.PowerToys.Common.UI.csproj" />
</ItemGroup>
Expand Down

0 comments on commit d2e04d4

Please sign in to comment.