aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2015-08-23 06:09:05 +0200
committerGravatar Szymon Tomasz Stefanek2015-08-23 06:09:05 +0200
commite6b80853dba7e83091a663b8e96e072c9c1e7e7a (patch)
tree4763e1b633136dfe523b3435aa53488b3cc44d48 /src
parentFix #1379 (diff)
downloadKVIrc-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.cpp39
-rw-r--r--src/kvirc/ui/KviChannelWindow.cpp5
-rw-r--r--src/kvirc/ui/KviIrcView.cpp35
-rw-r--r--src/kvirc/ui/KviIrcView.h3
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();