diff options
Diffstat (limited to 'src/mir_app')
-rw-r--r-- | src/mir_app/src/chat.h | 1 | ||||
-rw-r--r-- | src/mir_app/src/chat_manager.cpp | 14 | ||||
-rw-r--r-- | src/mir_app/src/chat_svc.cpp | 3 | ||||
-rw-r--r-- | src/mir_app/src/chat_tools.cpp | 1 | ||||
-rw-r--r-- | src/mir_app/src/mir_app.def | 1 | ||||
-rw-r--r-- | src/mir_app/src/mir_app64.def | 1 | ||||
-rw-r--r-- | src/mir_app/src/srmm_base.cpp | 5 |
7 files changed, 26 insertions, 0 deletions
diff --git a/src/mir_app/src/chat.h b/src/mir_app/src/chat.h index 3d158e5beb..37aac65bb0 100644 --- a/src/mir_app/src/chat.h +++ b/src/mir_app/src/chat.h @@ -73,6 +73,7 @@ BOOL SM_SetContactStatus(const wchar_t *pszID, const char *pszModule, c BOOL SM_SetOffline(const char *pszModule, SESSION_INFO *si);
BOOL SM_SetStatus(const char *pszModule, SESSION_INFO *si, int wStatus);
BOOL SM_TakeStatus(const wchar_t *pszID, const char *pszModule, const wchar_t *pszUID, const wchar_t *pszStatus);
+BOOL SM_UserTyping(GCEVENT* gce);
SESSION_INFO* SM_FindSession(const wchar_t *pszID, const char *pszModule);
SESSION_INFO* SM_FindSessionByIndex(const char *pszModule, int iItem);
diff --git a/src/mir_app/src/chat_manager.cpp b/src/mir_app/src/chat_manager.cpp index f2bb050eb9..a815e2732b 100644 --- a/src/mir_app/src/chat_manager.cpp +++ b/src/mir_app/src/chat_manager.cpp @@ -424,6 +424,20 @@ BOOL SM_SetStatus(const char *pszModule, SESSION_INFO *si, int wStatus) return TRUE;
}
+BOOL SM_UserTyping(GCEVENT *gce)
+{
+ SESSION_INFO *si = SM_FindSession(gce->pszID.w, gce->pszModule);
+ if (si == nullptr || si->pDlg == nullptr)
+ return FALSE;
+
+ USERINFO* ui = UM_FindUser(si, gce->pszUID.w);
+ if (ui == nullptr)
+ return FALSE;
+
+ si->pDlg->setTyping(10, ui);
+ return TRUE;
+}
+
BOOL SM_ChangeNick(const wchar_t *pszID, const char *pszModule, GCEVENT *gce)
{
if (!pszModule)
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index c831ea9c7e..b28b31d15a 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -493,6 +493,9 @@ static INT_PTR CALLBACK sttEventStub(void *_param) bIsHighlighted = g_chatApi.IsHighlighted(nullptr, &gce);
break;
+ case GC_EVENT_TYPING:
+ return SM_UserTyping(&gce);
+
case GC_EVENT_JOIN:
AddUser(&gce);
bIsHighlighted = g_chatApi.IsHighlighted(nullptr, &gce);
diff --git a/src/mir_app/src/chat_tools.cpp b/src/mir_app/src/chat_tools.cpp index f334a128b5..fbad9e5bc6 100644 --- a/src/mir_app/src/chat_tools.cpp +++ b/src/mir_app/src/chat_tools.cpp @@ -637,6 +637,7 @@ BOOL IsEventSupported(int eventType) case GC_EVENT_NOTICE:
case GC_EVENT_MESSAGE:
case GC_EVENT_TOPIC:
+ case GC_EVENT_TYPING:
case GC_EVENT_INFORMATION:
case GC_EVENT_ACTION:
case GC_EVENT_ADDSTATUS:
diff --git a/src/mir_app/src/mir_app.def b/src/mir_app/src/mir_app.def index cdb53fd277..46b27c22b8 100644 --- a/src/mir_app/src/mir_app.def +++ b/src/mir_app/src/mir_app.def @@ -787,3 +787,4 @@ _Netlib_SslPending@4 @874 NONAME _Netlib_SslRead@16 @875 NONAME
_Netlib_SslShutdown@4 @876 NONAME
_Netlib_SslWrite@12 @877 NONAME
+?AllowTyping@CSrmmBaseDialog@@IBE_NXZ @878 NONAME
diff --git a/src/mir_app/src/mir_app64.def b/src/mir_app/src/mir_app64.def index ec9a92f9bb..e78b512abf 100644 --- a/src/mir_app/src/mir_app64.def +++ b/src/mir_app/src/mir_app64.def @@ -787,3 +787,4 @@ Netlib_SslPending @874 NONAME Netlib_SslRead @875 NONAME
Netlib_SslShutdown @876 NONAME
Netlib_SslWrite @877 NONAME
+?AllowTyping@CSrmmBaseDialog@@IEBA_NXZ @878 NONAME
diff --git a/src/mir_app/src/srmm_base.cpp b/src/mir_app/src/srmm_base.cpp index 4557c7bbb9..02f0b0b29b 100644 --- a/src/mir_app/src/srmm_base.cpp +++ b/src/mir_app/src/srmm_base.cpp @@ -555,6 +555,11 @@ void CSrmmBaseDialog::AddLog() m_pLog->Clear(); } +bool CSrmmBaseDialog::AllowTyping() const +{ + return isChat() ? m_si->iType != GCW_SERVER : true; +} + void CSrmmBaseDialog::ClearLog() { m_pLog->Clear(); |