summaryrefslogtreecommitdiff
path: root/protocols
diff options
context:
space:
mode:
authorSergey Bolhovskoy <elzorfox@ya.ru>2014-10-10 07:01:31 +0000
committerSergey Bolhovskoy <elzorfox@ya.ru>2014-10-10 07:01:31 +0000
commit3e604c7a2542790b5a3f22f2ddd714af520190be (patch)
treeb70dd13151b4d3be3ffc6b1f4652ab1a521ebdba /protocols
parent16b6caa0a8b5e80c75a93b67db1ae5812a81fc80 (diff)
VKontakte: reworked mark as read process
git-svn-id: http://svn.miranda-ng.org/main/trunk@10752 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols')
-rw-r--r--protocols/VKontakte/res/resource.rc44
-rw-r--r--protocols/VKontakte/src/resource.h9
-rw-r--r--protocols/VKontakte/src/vk_options.cpp36
-rw-r--r--protocols/VKontakte/src/vk_proto.cpp8
-rw-r--r--protocols/VKontakte/src/vk_proto.h60
-rw-r--r--protocols/VKontakte/src/vk_thread.cpp14
6 files changed, 96 insertions, 75 deletions
diff --git a/protocols/VKontakte/res/resource.rc b/protocols/VKontakte/res/resource.rc
index 8012848cef..923580ded8 100644
--- a/protocols/VKontakte/res/resource.rc
+++ b/protocols/VKontakte/res/resource.rc
@@ -46,6 +46,15 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
/////////////////////////////////////////////////////////////////////////////
//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_KEYS ICON "key.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
// Dialog
//
@@ -61,7 +70,7 @@ BEGIN
CONTROL "Open VKontakte site",IDC_URL,"Hyperlink",WS_TABSTOP,0,49,174,12
END
-IDD_OPT_MAIN DIALOGEX 0, 0, 304, 244
+IDD_OPT_MAIN DIALOGEX 0, 0, 304, 255
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 0, 0, 0x1
@@ -75,25 +84,28 @@ BEGIN
GROUPBOX "Local settings",IDC_STATIC,4,62,293,27
LTEXT "Contact list group:",IDC_STATIC,12,74,146,8
EDITTEXT IDC_GROUPNAME,167,72,121,12,ES_AUTOHSCROLL
- GROUPBOX "Advanced",IDC_STATIC,4,90,293,103
+ GROUPBOX "Advanced",IDC_STATIC,4,90,293,80
CONTROL "Server-side delivery confirmation",IDC_DELIVERY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,101,278,10
CONTROL "Hide chats on startup",IDC_HIDECHATS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,112,278,10
CONTROL "Automatically wipe local contacts missing in your friend list",IDC_AUTOCLEAN,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,123,278,10
CONTROL "Always notify as unread for all incoming message",IDC_MESASUREAD,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,134,278,10
- CONTROL "Mark read on reply",IDC_MARKREADONREPLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,145,278,10
- CONTROL "Mark read on typing",IDC_MARKREADONTYPING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,22,156,267,10
CONTROL "Automatically sync last messages",IDC_SYNCHISTOTYONONLINE,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,167,278,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,145,278,10
CONTROL "Use local time for received messages",IDC_USE_LOCAL_TIME,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,178,278,10
- GROUPBOX "When I ban user...",IDC_STATIC,4,195,293,37
- CONTROL "Report abuse",IDC_REPORT_ABUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,206,129,10
- CONTROL "Clear server history",IDC_CLEAR_SERVER_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,217,129,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,156,278,10
+ GROUPBOX "When I ban user...",IDC_STATIC,4,171,293,37
+ CONTROL "Report abuse",IDC_REPORT_ABUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,182,129,10
+ CONTROL "Clear server history",IDC_CLEAR_SERVER_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,193,129,10
CONTROL "Remove from friend list",IDC_REMOVE_FROM_FRENDLIST,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,155,206,129,10
- CONTROL "Remove from contact list",IDC_REMOVE_FROM_CLIST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,155,217,129,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,155,182,129,10
+ CONTROL "Remove from contact list",IDC_REMOVE_FROM_CLIST,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,155,193,129,10
+ GROUPBOX "Mark message as read...",IDC_STATIC_MARK_AS_READ,4,209,293,33,WS_GROUP
+ CONTROL "on read",IDC_ONREAD,"Button",BS_AUTORADIOBUTTON,12,219,129,10
+ CONTROL "on receive",IDC_ONRECEIVE,"Button",BS_AUTORADIOBUTTON,12,231,129,10
+ CONTROL "on reply",IDC_ONREPLY,"Button",BS_AUTORADIOBUTTON,155,218,129,10
+ CONTROL "on typing",IDC_ONTYPING,"Button",BS_AUTORADIOBUTTON,155,231,129,10
END
IDD_CAPTCHAFORM DIALOGEX 0, 0, 258, 224
@@ -139,15 +151,6 @@ END
/////////////////////////////////////////////////////////////////////////////
//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_KEYS ICON "key.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
// DESIGNINFO
//
@@ -165,6 +168,7 @@ BEGIN
LEFTMARGIN, 4
RIGHTMARGIN, 297
TOPMARGIN, 7
+ BOTTOMMARGIN, 247
END
IDD_INVITE, DIALOG
diff --git a/protocols/VKontakte/src/resource.h b/protocols/VKontakte/src/resource.h
index 9227d9f0f6..ac52b3e97f 100644
--- a/protocols/VKontakte/src/resource.h
+++ b/protocols/VKontakte/src/resource.h
@@ -41,6 +41,13 @@
#define IDC_CLEAR_SERVER_HISTORY 1031
#define IDC_REMOVE_FROM_FRENDLIST 1032
#define IDC_REMOVE_FROM_CLIST 1033
+#define IDC_ONREAD 1039
+#define IDC_ONRECEIVE 1040
+#define IDC_REPLY 1041
+#define IDC_ONREPLY 1041
+#define IDC_TYPING 1042
+#define IDC_ONTYPING 1042
+#define IDC_STATIC_MARK_AS_READ 1043
// Next default values for new objects
//
@@ -49,7 +56,7 @@
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 117
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1030
+#define _APS_NEXT_CONTROL_VALUE 1044
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/protocols/VKontakte/src/vk_options.cpp b/protocols/VKontakte/src/vk_options.cpp
index 6df6285e7f..b4d1dbfd45 100644
--- a/protocols/VKontakte/src/vk_options.cpp
+++ b/protocols/VKontakte/src/vk_options.cpp
@@ -122,15 +122,17 @@ INT_PTR CALLBACK CVkProto::OptionsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
CheckDlgButton(hwndDlg, IDC_HIDECHATS, ppro->m_bHideChats);
CheckDlgButton(hwndDlg, IDC_AUTOCLEAN, ppro->getByte("AutoClean", 0));
CheckDlgButton(hwndDlg, IDC_MESASUREAD, ppro->m_bMesAsUnread);
- CheckDlgButton(hwndDlg, IDC_MARKREADONREPLY, ppro->m_bMarkReadOnReply);
- EnableWindow(GetDlgItem(hwndDlg, IDC_MARKREADONTYPING), ppro->m_bMarkReadOnReply);
- CheckDlgButton(hwndDlg, IDC_MARKREADONTYPING, ppro->m_bMarkReadOnTyping);
CheckDlgButton(hwndDlg, IDC_SYNCHISTOTYONONLINE, ppro->m_bAutoSyncHistory);
CheckDlgButton(hwndDlg, IDC_USE_LOCAL_TIME, ppro->m_bUseLocalTime);
CheckDlgButton(hwndDlg, IDC_REPORT_ABUSE, ppro->m_bReportAbuse);
CheckDlgButton(hwndDlg, IDC_CLEAR_SERVER_HISTORY, ppro->m_bClearServerHistory);
CheckDlgButton(hwndDlg, IDC_REMOVE_FROM_FRENDLIST, ppro->m_bRemoveFromFrendlist);
CheckDlgButton(hwndDlg, IDC_REMOVE_FROM_CLIST, ppro->m_bRemoveFromClist);
+
+ CheckDlgButton(hwndDlg, IDC_ONREAD, (ppro->m_iMarkMessageReadOn == markOnRead));
+ CheckDlgButton(hwndDlg, IDC_ONRECEIVE, (ppro->m_iMarkMessageReadOn == markOnReceive));
+ CheckDlgButton(hwndDlg, IDC_ONREPLY, (ppro->m_iMarkMessageReadOn == markOnReply));
+ CheckDlgButton(hwndDlg, IDC_ONTYPING, (ppro->m_iMarkMessageReadOn == markOnTyping));
return TRUE;
case WM_COMMAND:
@@ -150,22 +152,19 @@ INT_PTR CALLBACK CVkProto::OptionsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
case IDC_HIDECHATS:
case IDC_AUTOCLEAN:
case IDC_MESASUREAD:
- case IDC_MARKREADONTYPING:
case IDC_SYNCHISTOTYONONLINE:
case IDC_USE_LOCAL_TIME:
case IDC_REPORT_ABUSE:
case IDC_CLEAR_SERVER_HISTORY:
case IDC_REMOVE_FROM_FRENDLIST:
case IDC_REMOVE_FROM_CLIST:
+ case IDC_ONREAD:
+ case IDC_ONRECEIVE:
+ case IDC_ONREPLY:
+ case IDC_ONTYPING:
if (HIWORD(wParam) == BN_CLICKED && (HWND)lParam == GetFocus())
SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
- case IDC_MARKREADONREPLY:
- if (HIWORD(wParam) == BN_CLICKED && (HWND)lParam == GetFocus()){
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- EnableWindow(GetDlgItem(hwndDlg, IDC_MARKREADONTYPING), (IsDlgButtonChecked(hwndDlg, IDC_MARKREADONREPLY) == BST_CHECKED));
- }
- break;
}
break;
@@ -197,12 +196,6 @@ INT_PTR CALLBACK CVkProto::OptionsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
ppro->m_bMesAsUnread = IsDlgButtonChecked(hwndDlg, IDC_MESASUREAD) == BST_CHECKED;
ppro->setByte("MesAsUnread", ppro->m_bMesAsUnread);
- ppro->m_bMarkReadOnReply = IsDlgButtonChecked(hwndDlg, IDC_MARKREADONREPLY) == BST_CHECKED;
- ppro->setByte("MarkReadOnReply", ppro->m_bMarkReadOnReply);
-
- ppro->m_bMarkReadOnTyping = (IsDlgButtonChecked(hwndDlg, IDC_MARKREADONREPLY) == BST_CHECKED) && (IsDlgButtonChecked(hwndDlg, IDC_MARKREADONTYPING) == BST_CHECKED);
- ppro->setByte("MarkReadOnTyping", ppro->m_bMarkReadOnTyping);
-
ppro->m_bAutoSyncHistory = IsDlgButtonChecked(hwndDlg, IDC_SYNCHISTOTYONONLINE) == BST_CHECKED;
ppro->setByte("AutoSyncHistory", ppro->m_bAutoSyncHistory);
@@ -220,7 +213,16 @@ INT_PTR CALLBACK CVkProto::OptionsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, L
ppro->m_bRemoveFromClist = IsDlgButtonChecked(hwndDlg, IDC_REMOVE_FROM_CLIST) == BST_CHECKED;
ppro->setByte("RemoveFromClistOnBanUser", ppro->m_bRemoveFromClist);
-
+
+ if (IsDlgButtonChecked(hwndDlg, IDC_ONREAD) == BST_CHECKED)
+ ppro->m_iMarkMessageReadOn = markOnRead;
+ if (IsDlgButtonChecked(hwndDlg, IDC_ONRECEIVE) == BST_CHECKED)
+ ppro->m_iMarkMessageReadOn = markOnReceive;
+ if (IsDlgButtonChecked(hwndDlg, IDC_ONREPLY) == BST_CHECKED)
+ ppro->m_iMarkMessageReadOn = markOnReply;
+ if (IsDlgButtonChecked(hwndDlg, IDC_ONTYPING) == BST_CHECKED)
+ ppro->m_iMarkMessageReadOn = markOnTyping;
+ ppro->setByte("MarkMessageReadOn", ppro->m_iMarkMessageReadOn);
}
break;
diff --git a/protocols/VKontakte/src/vk_proto.cpp b/protocols/VKontakte/src/vk_proto.cpp
index e9941a417c..1dfcddc7cc 100644
--- a/protocols/VKontakte/src/vk_proto.cpp
+++ b/protocols/VKontakte/src/vk_proto.cpp
@@ -65,8 +65,6 @@ CVkProto::CVkProto(const char *szModuleName, const TCHAR *ptszUserName) :
m_bServerDelivery = getBool("ServerDelivery", true);
m_bHideChats = getBool("HideChats", true);
m_bMesAsUnread = getBool("MesAsUnread", false);
- m_bMarkReadOnReply = getBool("MarkReadOnReply", false);
- m_bMarkReadOnTyping = getBool("MarkReadOnTyping", false) && m_bMarkReadOnReply;
m_bAutoSyncHistory = getBool("AutoSyncHistory", true);
m_bUseLocalTime = getBool("LocalTime", false);
m_bReportAbuse = getBool("ReportAbuseOnBanUser", false);
@@ -74,6 +72,7 @@ CVkProto::CVkProto(const char *szModuleName, const TCHAR *ptszUserName) :
m_bRemoveFromFrendlist = getBool("RemoveFromFrendlistOnBanUser", false);
m_bRemoveFromClist = getBool("RemoveFromClistOnBanUser", false);
m_bPopUpSyncHistory = getBool("PopUpSyncHistory", false);
+ m_iMarkMessageReadOn = getByte("MarkMessageReadOn", 0);
// Set all contacts offline -- in case we crashed
SetAllContactStatuses(ID_STATUS_OFFLINE);
@@ -105,6 +104,7 @@ int CVkProto::OnModulesLoaded(WPARAM wParam, LPARAM lParam)
HookProtoEvent(ME_GC_EVENT, &CVkProto::OnChatEvent);
HookProtoEvent(ME_GC_BUILDMENU, &CVkProto::OnGcMenuHook);
HookProtoEvent(ME_MSG_WINDOWEVENT, &CVkProto::OnProcessSrmmEvent);
+ HookProtoEvent(ME_DB_EVENT_MARKED_READ, &CVkProto::OnDbEventRead);
InitPopups();
InitMenus();
@@ -368,7 +368,7 @@ void CVkProto::OnSendMessage(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq)
m_sendIds.insert((HANDLE)mid);
if (mid>getDword(param->hContact, "lastmsgid", 0))
setDword(param->hContact, "lastmsgid", mid);
- if (m_bMarkReadOnReply)
+ if (m_iMarkMessageReadOn >= markOnReply)
MarkMessagesRead(param->hContact);
iResult = ACKRESULT_SUCCESS;
}
@@ -532,7 +532,7 @@ int CVkProto::UserIsTyping(MCONTACT hContact, int type)
if ((userID == -1)||(!IsOnline()))
return 1;
- if (m_bMarkReadOnTyping)
+ if (m_iMarkMessageReadOn == markOnTyping)
MarkMessagesRead(hContact);
Push(new AsyncHttpRequest(this, REQUEST_GET, "/method/messages.setActivity.json", true, &CVkProto::OnReceiveSmth)
diff --git a/protocols/VKontakte/src/vk_proto.h b/protocols/VKontakte/src/vk_proto.h
index 0964b2a7e3..1c5453b463 100644
--- a/protocols/VKontakte/src/vk_proto.h
+++ b/protocols/VKontakte/src/vk_proto.h
@@ -161,8 +161,8 @@ struct TFakeAckParams
struct CVkProto : public PROTO<CVkProto>
{
- CVkProto(const char*, const TCHAR*);
- ~CVkProto();
+ CVkProto(const char*, const TCHAR*);
+ ~CVkProto();
//====================================================================================
// PROTO_INTERFACE
@@ -245,13 +245,14 @@ struct CVkProto : public PROTO<CVkProto>
void InitPopups(void);
void MsgPopup(MCONTACT hContact, const TCHAR *szMsg, const TCHAR *szTitle, bool err = false);
-
+
//==== Hooks ====+====================================================================
-
+
int __cdecl OnProcessSrmmEvent(WPARAM, LPARAM);
-
+ int __cdecl OnDbEventRead(WPARAM, LPARAM);
+
//==== Search ========================================================================
-
+
void __cdecl SearchBasicThread(void* id);
void __cdecl SearchByMailThread(void* email);
void __cdecl SearchThread(void* p);
@@ -259,7 +260,7 @@ struct CVkProto : public PROTO<CVkProto>
void OnSearchByMail(NETLIBHTTPREQUEST *, AsyncHttpRequest *);
//==== Files Upload ==================================================================
-
+
void __cdecl SendFileThread(void *p);
void SendFileFiled(CVkFileUploadParam *fup, TCHAR* reason = NULL);
void OnReciveUploadServer(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
@@ -268,7 +269,7 @@ struct CVkProto : public PROTO<CVkProto>
//==== Misc ==========================================================================
TCHAR* GetUserStoredPassword(void);
-
+
void RetrieveStatusMsg(const CMString &StatusMsg);
void RetrieveStatusMusic(const CMString &StatusMsg);
@@ -291,11 +292,11 @@ struct CVkProto : public PROTO<CVkProto>
CMString GetAttachmentDescr(JSONNODE*);
void OnSendMessage(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
-
+
void OnReceiveHistoryMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq);
void GetHistoryDlg(MCONTACT hContact, int iLastMsg);
void GetHistoryDlgMessages(MCONTACT hContact, int iOffset, int iMaxCount, int lastcount);
-
+
void RetrievePollingInfo();
void OnReceivePollingInfo(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
void __cdecl PollingThread(void*);
@@ -314,7 +315,7 @@ struct CVkProto : public PROTO<CVkProto>
void OnCreateNewChat(NETLIBHTTPREQUEST*, AsyncHttpRequest*);
__forceinline bool IsOnline() const { return m_bOnline; }
-
+
__forceinline LPCTSTR getGroup() const { return m_defaultGroup; }
__forceinline void setGroup(LPCTSTR grp) { m_defaultGroup = mir_tstrdup(grp); }
@@ -355,9 +356,9 @@ private:
struct Cookie
{
Cookie(const CMStringA& name, const CMStringA& value, const CMStringA& domain) :
- m_name(name),
- m_value(value),
- m_domain(domain)
+ m_name(name),
+ m_value(value),
+ m_domain(domain)
{}
CMStringA m_name, m_value, m_domain;
@@ -396,21 +397,22 @@ private:
void __cdecl SendMsgAck(void *param);
bool m_prevError,
- m_bOnline,
- m_bHideChats,
- m_bMesAsUnread,
- m_bMarkReadOnReply,
- m_bMarkReadOnTyping,
- m_bAutoSyncHistory,
- m_bUseLocalTime,
- m_bReportAbuse,
- m_bClearServerHistory,
- m_bRemoveFromFrendlist,
- m_bRemoveFromClist,
- m_bPopUpSyncHistory;
-
- LONG m_myUserId;
- ptrT m_defaultGroup;
+ m_bOnline,
+ m_bHideChats,
+ m_bMesAsUnread,
+ m_bAutoSyncHistory,
+ m_bUseLocalTime,
+ m_bReportAbuse,
+ m_bClearServerHistory,
+ m_bRemoveFromFrendlist,
+ m_bRemoveFromClist,
+ m_bPopUpSyncHistory;
+
+ enum MarkMsgReadOn{ markOnRead, markOnReceive, markOnReply, markOnTyping };
+ int m_iMarkMessageReadOn;
+
+ LONG m_myUserId;
+ ptrT m_defaultGroup;
ptrA
m_pollingServer,
diff --git a/protocols/VKontakte/src/vk_thread.cpp b/protocols/VKontakte/src/vk_thread.cpp
index 1205137f90..232703f7ad 100644
--- a/protocols/VKontakte/src/vk_thread.cpp
+++ b/protocols/VKontakte/src/vk_thread.cpp
@@ -482,6 +482,12 @@ void CVkProto::OnReceiveFriends(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq
}
/////////////////////////////////////////////////////////////////////////////////////////
+int CVkProto::OnDbEventRead(WPARAM hContact, LPARAM)
+{
+ if (m_iMarkMessageReadOn == markOnRead)
+ MarkMessagesRead(hContact);
+ return 0;
+}
void CVkProto::MarkMessagesRead(const CMStringA &mids)
{
@@ -557,7 +563,7 @@ void CVkProto::OnReceiveMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe
MCONTACT hContact = FindUser(uid, true);
char szMid[40];
_itoa(mid, szMid, 10);
- if (!m_bMarkReadOnReply){
+ if (m_iMarkMessageReadOn == markOnReceive){
if (!mids.IsEmpty())
mids.AppendChar(',');
mids.Append(szMid);
@@ -589,7 +595,7 @@ void CVkProto::OnReceiveMessages(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pRe
}
}
- if (!m_bMarkReadOnReply)
+ if (m_iMarkMessageReadOn == markOnReceive)
MarkMessagesRead(mids);
}
@@ -639,7 +645,7 @@ void CVkProto::OnReceiveDlgs(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq)
else
GetHistoryDlg(hContact, mid);
- if (!m_bMarkReadOnReply&&numUnread)
+ if (m_iMarkMessageReadOn==markOnReceive&&numUnread)
MarkMessagesRead(hContact);
}
else if (numUnread) {
@@ -649,7 +655,7 @@ void CVkProto::OnReceiveDlgs(NETLIBHTTPREQUEST *reply, AsyncHttpRequest *pReq)
setDword(hContact, "new_lastmsgid", mid);
GetHistoryDlgMessages(hContact, 0, numUnread, -1);
- if (!m_bMarkReadOnReply)
+ if (m_iMarkMessageReadOn == markOnReceive)
MarkMessagesRead(hContact);
}
}