diff --git a/include/znc/Chan.h b/include/znc/Chan.h index 11a50e32..8ba777f0 100644 --- a/include/znc/Chan.h +++ b/include/znc/Chan.h @@ -111,7 +111,7 @@ public: void SetTopicOwner(const CString& s) { m_sTopicOwner = s; } void SetTopicDate(unsigned long u) { m_ulTopicDate = u; } void SetDefaultModes(const CString& s) { m_sDefaultModes = s; } - void SetKeepBuffer(bool b) { m_bKeepBuffer = b; } + void SetKeepBuffer(bool b); void SetDetached(bool b = true) { m_bDetached = b; } void SetInConfig(bool b) { m_bInConfig = b; } void SetCreationDate(unsigned long u) { m_ulCreationDate = u; } diff --git a/src/Chan.cpp b/src/Chan.cpp index b507cb2e..c03967c0 100644 --- a/src/Chan.cpp +++ b/src/Chan.cpp @@ -219,6 +219,14 @@ void CChan::SetModes(const CString& sModes) { ModeChange(sModes); } +void CChan::SetKeepBuffer(bool b) { + m_bKeepBuffer = b; + + if (!m_bKeepBuffer && !IsDetached() && m_pNetwork->IsUserOnline()) { + ClearBuffer(); + } +} + void CChan::OnWho(const CString& sNick, const CString& sIdent, const CString& sHost) { CNick* pNick = FindNick(sNick);