From c67f96aa215ed9144c445643780b2419285769a3 Mon Sep 17 00:00:00 2001 From: Tobias Weimer Date: Fri, 19 Jun 2015 19:49:16 +0000 Subject: Winter Speak: - Fixed message window detection (fixes #943) git-svn-id: http://svn.miranda-ng.org/main/trunk@14271 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/WinterSpeak/src/SpeakAnnounce.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'plugins') diff --git a/plugins/WinterSpeak/src/SpeakAnnounce.cpp b/plugins/WinterSpeak/src/SpeakAnnounce.cpp index 4a7ca4de9b..d054bae1ff 100644 --- a/plugins/WinterSpeak/src/SpeakAnnounce.cpp +++ b/plugins/WinterSpeak/src/SpeakAnnounce.cpp @@ -145,7 +145,7 @@ void SpeakAnnounce::status(const std::wstring &sentence, MCONTACT user) bool SpeakAnnounce::readMessage(MCONTACT contact) { // Check if message window exists - if (m_db.getEventFlag(AnnounceDatabase::EventFlag_DialogOpen)) { + if (m_db.getEventFlag(AnnounceDatabase::EventFlag_DialogOpen) || m_db.getEventFlag(AnnounceDatabase::EventFlag_DialogFocused)) { // Do not notify if window is already open MessageWindowInputData mwid; mwid.cbSize = sizeof(MessageWindowInputData); @@ -154,7 +154,13 @@ bool SpeakAnnounce::readMessage(MCONTACT contact) MessageWindowData mwd; mwd.cbSize = sizeof(MessageWindowData); mwd.hContact = contact; - return ((CallService(MS_MSG_GETWINDOWDATA, (WPARAM) &mwid, (LPARAM) &mwd)) || ((mwd.hwndWindow != NULL) && (mwd.uState & MSG_WINDOW_STATE_EXISTS))); + //returns 0 on success and returns non-zero (1) on error or if no window data exists for that hcontact + if (CallService(MS_MSG_GETWINDOWDATA, (WPARAM) &mwid, (LPARAM) &mwd) == 0) { + if (m_db.getEventFlag(AnnounceDatabase::EventFlag_DialogOpen)) + return ((mwd.uState & MSG_WINDOW_STATE_EXISTS) != 0); + else if (m_db.getEventFlag(AnnounceDatabase::EventFlag_DialogOpen)) + return ((mwd.uState & MSG_WINDOW_STATE_FOCUS) != 0); + } } return true; } -- cgit v1.2.3