summaryrefslogtreecommitdiff
path: root/plugins/WinterSpeak/src/SpeakAnnounce.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/WinterSpeak/src/SpeakAnnounce.cpp')
-rw-r--r--plugins/WinterSpeak/src/SpeakAnnounce.cpp10
1 files changed, 8 insertions, 2 deletions
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;
}