diff options
-rw-r--r-- | plugins/Toaster/src/services.cpp | 11 | ||||
-rw-r--r-- | plugins/Toaster/src/toast_event_handler.cpp | 4 |
2 files changed, 14 insertions, 1 deletions
diff --git a/plugins/Toaster/src/services.cpp b/plugins/Toaster/src/services.cpp index d930426906..3f701b86f9 100644 --- a/plugins/Toaster/src/services.cpp +++ b/plugins/Toaster/src/services.cpp @@ -261,7 +261,16 @@ static INT_PTR ShowMessage(WPARAM wParam, LPARAM lParam) static INT_PTR HideToast(WPARAM, LPARAM lParam)
{
- static_cast<ToastNotification*>(reinterpret_cast<ToastEventHandler*>(lParam)->GetToastNotification())->Hide();
+ extern LIST<ToastEventHandler> lstHandlers;
+ ToastEventHandler* handler = reinterpret_cast<ToastEventHandler*>(lParam);
+ if (lstHandlers.getIndex(handler) != -1)
+ {
+ ToastNotification* notification = static_cast<ToastNotification*>(handler->GetToastNotification());
+ if (lstNotifications.getIndex(notification) != -1)
+ {
+ notification->Hide();
+ }
+ }
return 0;
}
void __stdcall HideAllToasts(void*)
diff --git a/plugins/Toaster/src/toast_event_handler.cpp b/plugins/Toaster/src/toast_event_handler.cpp index 6248cf9eaa..33a3c3e1c3 100644 --- a/plugins/Toaster/src/toast_event_handler.cpp +++ b/plugins/Toaster/src/toast_event_handler.cpp @@ -3,13 +3,17 @@ using namespace ABI::Windows::UI::Notifications;
using namespace Microsoft::WRL;
+LIST<ToastEventHandler> lstHandlers(2, PtrKeySortT);
+
ToastEventHandler::ToastEventHandler(_In_ ToastHandlerData *pData) : _ref(0), _thd(pData)
{
+ lstHandlers.insert(this);
CallPopupProc(UM_INITPOPUP);
}
ToastEventHandler::~ToastEventHandler()
{
+ lstHandlers.remove(this);
CallPopupProc(UM_FREEPLUGINDATA);
}
|