diff options
| author | 2010-10-16 19:55:11 +0000 | |
|---|---|---|
| committer | 2010-10-16 19:55:11 +0000 | |
| commit | d0d73fbe22f23f964dcfba21c97fc3d9124e76f1 (patch) | |
| tree | a91aa8e0fe85c3f06ac3354718c1f40ef65e7b76 | |
| parent | fix for #1001, plz sm1 test! (diff) | |
| download | KVIrc-d0d73fbe22f23f964dcfba21c97fc3d9124e76f1.tar.gz KVIrc-d0d73fbe22f23f964dcfba21c97fc3d9124e76f1.tar.bz2 KVIrc-d0d73fbe22f23f964dcfba21c97fc3d9124e76f1.zip | |
added OnInputBarPaste event (#995)
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5081 17fca916-40b9-46aa-a4ea-0a15b648b75c
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_eventtable.cpp | 29 | ||||
| -rw-r--r-- | src/kvirc/kvs/kvi_kvs_eventtable.h | 4 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_input.cpp | 2 | ||||
| -rw-r--r-- | src/kvirc/ui/kvi_input_editor.cpp | 37 |
4 files changed, 52 insertions, 20 deletions
diff --git a/src/kvirc/kvs/kvi_kvs_eventtable.cpp b/src/kvirc/kvs/kvi_kvs_eventtable.cpp index 319270a55..e3c6c039c 100644 --- a/src/kvirc/kvs/kvi_kvs_eventtable.cpp +++ b/src/kvirc/kvs/kvi_kvs_eventtable.cpp @@ -261,7 +261,7 @@ KviKvsEvent KviKvsEventManager::m_appEventTable[KVI_KVS_NUM_APP_EVENTS]= (if that option was specified).[br] $5 contains the original color/icon set of the message that depends on the type of the message itself.[br] - Since the CTCP ACTION messages generally have different format of output, + Since the CTCP ACTION messages generally have different format of output, for your convenience $6 contains 1 if the message was caused by a CTCP ACTION or 0 otherwise.[br] If you call [cmd]halt[/cmd] in this event the message output will be completely disabled @@ -3754,7 +3754,7 @@ KviKvsEvent KviKvsEventManager::m_appEventTable[KVI_KVS_NUM_APP_EVENTS]= "$0 = actual name\n" \ "$1 - visible name\n" \ "$2 - command name"), - + /* @doc: onwindowtitlerequest @type: @@ -3775,6 +3775,29 @@ KviKvsEvent KviKvsEventManager::m_appEventTable[KVI_KVS_NUM_APP_EVENTS]= */ EVENT("OnWindowTitleRequest", \ "$0 = window id\n" \ - "$1 = default window title") + "$1 = default window title"), + + /* + @doc: oninputbarpaste + @type: + event + @title: + OnInputBarPaste + @short: + Triggered when the user paste some text on the inputbar + @parameters: + none + @window: + Any window + @description: + This event is triggered when the user paste some text on the input bar.[br] + You can check the text, insert any other text and halt the orginal from being inserted in the input bar.[br] + Note that the text can contains binary data, end-of-line or other characters that could need a special treatment then parsed. + @seealso: + [cmd]window.insertInInputText[cmd] + */ + EVENT("OnInputBarPaste", \ + "$0 = window id\n" \ + "$1 = pasted text") }; diff --git a/src/kvirc/kvs/kvi_kvs_eventtable.h b/src/kvirc/kvs/kvi_kvs_eventtable.h index d0500fd64..75916f571 100644 --- a/src/kvirc/kvs/kvi_kvs_eventtable.h +++ b/src/kvirc/kvs/kvi_kvs_eventtable.h @@ -56,6 +56,7 @@ * \def KviEvent_OnIgnoredMessage Triggered when a message is ignored * \def KviEvent_OnServerNotice A server NOTICE have been issued * \def KviEvent_OnWindowTitleRequest A window title is needed +* \def KviEvent_OnInputBarPaste User pasted some text on the inputbar */ #define KviEvent_OnKVIrcStartup 0 #define KviEvent_OnKVIrcShutdown 1 @@ -81,6 +82,7 @@ #define KviEvent_OnIgnoredMessage 21 #define KviEvent_OnServerNotice 22 #define KviEvent_OnWindowTitleRequest 145 +#define KviEvent_OnInputBarPaste 146 // Connection /** @@ -364,6 +366,6 @@ #define KviEvent_OnQueryNickDefaultActionRequest 144 /** \def KVI_KVS_NUM_APP_EVENTS Defines the number of events */ -#define KVI_KVS_NUM_APP_EVENTS 146 +#define KVI_KVS_NUM_APP_EVENTS 147 #endif //_KVI_KVS_EVENTTABLE_H_ diff --git a/src/kvirc/ui/kvi_input.cpp b/src/kvirc/ui/kvi_input.cpp index ae97c26b0..44c907b5d 100644 --- a/src/kvirc/ui/kvi_input.cpp +++ b/src/kvirc/ui/kvi_input.cpp @@ -170,7 +170,7 @@ KviInput::KviInput(KviWindow * pPar, KviUserListView * pView) m_pLayout->addWidget(m_pHideToolsButton,0,2,2,1); m_pLayout->addWidget(m_pButtonContainer,0,1,2,1); m_pLayout->addWidget(m_pInputEditor,0,0,2,1); - + installShortcuts(); } diff --git a/src/kvirc/ui/kvi_input_editor.cpp b/src/kvirc/ui/kvi_input_editor.cpp index c503c819d..4510421bb 100644 --- a/src/kvirc/ui/kvi_input_editor.cpp +++ b/src/kvirc/ui/kvi_input_editor.cpp @@ -47,6 +47,7 @@ #include "kvi_userinput.h" #include "kvi_userlistview.h" #include "kvi_shortcuts.h" +#include "kvi_kvs_eventtriggers.h" #include <QClipboard> #include <QLabel> @@ -125,7 +126,7 @@ KviInputEditor::KviInputEditor(QWidget * pPar, KviWindow * pWnd, KviUserListView setContentsMargins(KVI_INPUT_MARGIN,KVI_INPUT_MARGIN,KVI_INPUT_MARGIN,KVI_INPUT_MARGIN); //set the font and font metrics applyOptions(); - + installShortcuts(); } @@ -235,7 +236,7 @@ QSize KviInputEditor::sizeHint() const void KviInputEditor::paintEvent(QPaintEvent *) { QPainter p(this); - + #ifdef COMPILE_PSEUDO_TRANSPARENCY if(KVI_OPTION_BOOL(KviOption_boolUseCompositingForTransparency) && g_pApp->supportsCompositing()) { @@ -252,7 +253,7 @@ void KviInputEditor::paintEvent(QPaintEvent *) } else { #endif p.fillRect(contentsRect(),KVI_OPTION_COLOR(KviOption_colorInputBackground)); - + QPixmap * pix = KVI_OPTION_PIXMAP(KviOption_pixmapLabelBackground).pixmap(); if(pix) KviPixmapUtils::drawPixmapWithPainter(&p,pix,KVI_OPTION_UINT(KviOption_uintTreeWindowListPixmapAlign),contentsRect(),contentsRect().width(),contentsRect().height()); @@ -266,11 +267,11 @@ void KviInputEditor::paintEvent(QPaintEvent *) option.rect = rect(); option.lineWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth, &option, this); option.midLineWidth = 0; - + option.state |= QStyle::State_Sunken; if(isReadOnly()) option.state |= QStyle::State_ReadOnly; - + //option.state &= ~(QStyle::State_HasFocus | QStyle::State_Active | QStyle::State_MouseOver); // kill any state that will cause an "active" frame to be painted option.features = QStyleOptionFrameV2::None; @@ -282,7 +283,7 @@ void KviInputEditor::paintEvent(QPaintEvent *) r.setY(r.y() + KVI_INPUT_MARGIN + KVI_INPUT_PADDING); r.setRight(r.right() - KVI_INPUT_MARGIN - KVI_INPUT_PADDING); r.setBottom(r.bottom() - KVI_INPUT_MARGIN - KVI_INPUT_PADDING); - + p.setClipRect(r); p.translate(r.topLeft()); @@ -991,6 +992,9 @@ void KviInputEditor::pasteClipboardWithConfirmation() if(!pClip) return; QString szText = pClip->text(QClipboard::Clipboard); + if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnInputBarPaste,m_pKviWindow,m_pKviWindow->id(),szText)) + return; + if(szText.contains(QChar('\n')) > 0) { if(m_pInputParent->inherits("KviInput")) @@ -1006,6 +1010,9 @@ void KviInputEditor::pasteSelectionWithConfirmation() if(!pClip) return; QString szText = pClip->text(pClip->supportsSelection() ? QClipboard::Selection : QClipboard::Clipboard); + if(KVS_TRIGGER_EVENT_2_HALTED(KviEvent_OnInputBarPaste,m_pKviWindow,m_pKviWindow->id(),szText)) + return; + if(szText.contains(QChar('\n')) > 0) { if(m_pInputParent->inherits("KviInput")) @@ -1271,7 +1278,7 @@ void KviInputEditor::inputMethodEvent(QInputMethodEvent * e) // repaint m_bUpdatesEnabled = true; - + repaintWithCursorOn(); } @@ -1330,7 +1337,7 @@ void KviInputEditor::installShortcuts() void KviInputEditor::keyPressEvent(QKeyEvent * e) { - + // disable the keyPress handling when IM is in composition. if(m_bIMComposing) { @@ -1683,10 +1690,10 @@ void KviInputEditor::standardNickCompletion(bool bAddMask,QString & szWord,bool m_bLastCompletionFinished=0; // REPAINT CALLED FROM OUTSIDE! } // else no match at all - + return; } - + if(!m_bLastCompletionFinished) { // Old session @@ -1711,10 +1718,10 @@ void KviInputEditor::standardNickCompletion(bool bAddMask,QString & szWord,bool m_bLastCompletionFinished=1; m_szLastCompletedNick = ""; } - + return; } - + // Old session finished // re-extract //word = m_szTextBuffer.left(m_iCursorPosition); @@ -1855,7 +1862,7 @@ int KviInputEditor::xPositionFromCharIndex(int iChIdx) if(m_szTextBuffer.isEmpty()) return iCurXPos; - + while(iCurChar < iChIdx) { QChar c = m_szTextBuffer.at(iCurChar); @@ -2311,7 +2318,7 @@ void KviInputEditor::homeInternalSelection() // There is selection m_iSelectionEnd = m_iSelectionBegin - 1; } - + m_iSelectionBegin = 0; home(); } @@ -2427,7 +2434,7 @@ void KviInputEditor::deleteHit() removeSelected(); return; } - + if(m_iCursorPosition < (int)m_szTextBuffer.length()) { m_szTextBuffer.remove(m_iCursorPosition,1); |
