diff options
| author | 2015-08-23 06:09:05 +0200 | |
|---|---|---|
| committer | 2015-08-23 06:09:05 +0200 | |
| commit | e6b80853dba7e83091a663b8e96e072c9c1e7e7a (patch) | |
| tree | 4763e1b633136dfe523b3435aa53488b3cc44d48 /src | |
| parent | Fix #1379 (diff) | |
| download | KVIrc-e6b80853dba7e83091a663b8e96e072c9c1e7e7a.tar.gz KVIrc-e6b80853dba7e83091a663b8e96e072c9c1e7e7a.tar.bz2 KVIrc-e6b80853dba7e83091a663b8e96e072c9c1e7e7a.zip | |
Fix target pane for echoprivmg. Fixes #1422
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvirc/kvs/KviKvsCoreSimpleCommands_af.cpp | 39 | ||||
| -rw-r--r-- | src/kvirc/ui/KviChannelWindow.cpp | 5 | ||||
| -rw-r--r-- | src/kvirc/ui/KviIrcView.cpp | 35 | ||||
| -rw-r--r-- | src/kvirc/ui/KviIrcView.h | 3 |
4 files changed, 59 insertions, 23 deletions
diff --git a/src/kvirc/kvs/KviKvsCoreSimpleCommands_af.cpp b/src/kvirc/kvs/KviKvsCoreSimpleCommands_af.cpp index dd0f30571..6fee9311a 100644 --- a/src/kvirc/kvs/KviKvsCoreSimpleCommands_af.cpp +++ b/src/kvirc/kvs/KviKvsCoreSimpleCommands_af.cpp @@ -1209,7 +1209,7 @@ namespace KviKvsCoreSimpleCommands but the command parameters are evaluated in the current window.[br] If the 'i' switch is given, it uses the specified icon scheme (icon and colors), otherwise it uses - the default one (0).[br] + the default one.[br] If the -n switch is present then the highlighting rules are not applied.[br] If the -x switch is present then the message will never cause @@ -1245,19 +1245,11 @@ namespace KviKvsCoreSimpleCommands int type = KVI_OUT_NONE; KviWindow * pWnd = KVSCSC_pWindow; KviConsoleWindow * pConsole = pWnd->console(); - if(!pConsole)pConsole = g_pApp->activeConsole(); + if(!pConsole) + pConsole = g_pApp->activeConsole(); KviKvsVariant * v; - if( (v = KVSCSC_pSwitches->find('i',"color-set")) ) - { - kvs_int_t msgType; - if(v->asInteger(msgType)) - { - if(msgType < 0)msgType = -msgType; - type = (int)(msgType % KVI_NUM_MSGTYPE_OPTIONS); - } else KVSCSC_pContext->warning(__tr2qs_ctx("Invalid color-set specification, using default","kvs")); - } if( (v = KVSCSC_pSwitches->find('w',"window")) ) { @@ -1271,6 +1263,31 @@ namespace KviKvsCoreSimpleCommands } } + if( (v = KVSCSC_pSwitches->find('i',"color-set")) ) + { + kvs_int_t msgType; + if(v->asInteger(msgType)) + { + if(msgType < 0)msgType = -msgType; + type = (int)(msgType % KVI_NUM_MSGTYPE_OPTIONS); + } else KVSCSC_pContext->warning(__tr2qs_ctx("Invalid color-set specification, using default","kvs")); + } else { + bool bIsMe = pWnd->connection() && KviQString::equalCI(pWnd->connection()->currentNickName(),szNick); + + switch(pWnd->type()) + { + case KviWindow::Channel: + type = bIsMe ? KVI_OUT_OWNPRIVMSG : KVI_OUT_CHANPRIVMSG; + break; + case KviWindow::Query: + type = bIsMe ? KVI_OUT_OWNPRIVMSG : KVI_OUT_QUERYPRIVMSG; + break; + default: + // keep KVI_OUT_NONE + break; + } + } + QString szPrefix,szSuffix; bool bPrefix = false; bool bSuffix = false; diff --git a/src/kvirc/ui/KviChannelWindow.cpp b/src/kvirc/ui/KviChannelWindow.cpp index d61da8eda..28eea7b83 100644 --- a/src/kvirc/ui/KviChannelWindow.cpp +++ b/src/kvirc/ui/KviChannelWindow.cpp @@ -1971,7 +1971,10 @@ void KviChannelWindow::outputMessage(int iMsgType, const QString & szMsg, const if(!pC) return; - internalOutput(m_pMessageView ? m_pMessageView : m_pIrcView,iMsgType,(const kvi_wchar_t *)pC,0,datetime); + if(m_pMessageView && m_pIrcView->messageShouldGoToMessageView(iMsgType)) + internalOutput(m_pMessageView,iMsgType,(const kvi_wchar_t *)pC,0,datetime); + else + internalOutput(m_pIrcView,iMsgType,(const kvi_wchar_t *)pC,0,datetime); } void KviChannelWindow::checkChannelSync() diff --git a/src/kvirc/ui/KviIrcView.cpp b/src/kvirc/ui/KviIrcView.cpp index 50353d4fc..57414c15d 100644 --- a/src/kvirc/ui/KviIrcView.cpp +++ b/src/kvirc/ui/KviIrcView.cpp @@ -752,14 +752,9 @@ void KviIrcView::removeHeadLine(bool bRepaint) repaint(); } -void KviIrcView::splitMessagesTo(KviIrcView *v) +bool KviIrcView::messageShouldGoToMessageView(int iMsgType) { - v->emptyBuffer(false); - - KviIrcViewLine * l = m_pFirstLine; - KviIrcViewLine * tmp; - while(l) - switch(l->iMsgType) + switch(iMsgType) { case KVI_OUT_CHANPRIVMSG: case KVI_OUT_CHANPRIVMSGCRYPTED: @@ -769,6 +764,25 @@ void KviIrcView::splitMessagesTo(KviIrcView *v) case KVI_OUT_OWNPRIVMSG: case KVI_OUT_OWNPRIVMSGCRYPTED: case KVI_OUT_HIGHLIGHT: + return true; + break; + default: + // fall down + break; + } + + return false; +} + +void KviIrcView::splitMessagesTo(KviIrcView *v) +{ + v->emptyBuffer(false); + + KviIrcViewLine * l = m_pFirstLine; + KviIrcViewLine * tmp; + while(l) + { + if(messageShouldGoToMessageView(l->iMsgType)) { m_iNumLines--; v->m_iNumLines++; @@ -790,12 +804,11 @@ void KviIrcView::splitMessagesTo(KviIrcView *v) tmp = l->pNext; l->pNext = 0; l = tmp; - } - break; - default: + } else { l = l->pNext; - break; + } } + v->m_pCurLine = v->m_pLastLine; m_pCurLine = m_pLastLine; diff --git a/src/kvirc/ui/KviIrcView.h b/src/kvirc/ui/KviIrcView.h index 05e8b624c..2245028e8 100644 --- a/src/kvirc/ui/KviIrcView.h +++ b/src/kvirc/ui/KviIrcView.h @@ -186,6 +186,9 @@ public: void joinMessagesFrom(KviIrcView * v); void appendMessagesFrom(KviIrcView * v); + // Return true if the specified message type should be "split" to the user message specific view. + bool messageShouldGoToMessageView(int iMsgType); + void prevLine(); void nextLine(); void nextPage(); |
