diff options
Diffstat (limited to 'plugins/Toaster/src')
| -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);
  }
  | 
