X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Finputline.cpp;h=eaf1212fedf5a89d7110303de35b038ac3f64098;hp=745a3e332ee57d0d30a6627c9f1eb0feacf9aab4;hb=c21696b07427a43b305dfbfddef73fcf274dfddf;hpb=dc9de5af386f61e6dc5537d04ccc8aceb8126b21 diff --git a/src/uisupport/inputline.cpp b/src/uisupport/inputline.cpp index 745a3e33..eaf1212f 100644 --- a/src/uisupport/inputline.cpp +++ b/src/uisupport/inputline.cpp @@ -19,14 +19,28 @@ ***************************************************************************/ #include "bufferview.h" + #include "inputline.h" #include "tabcompleter.h" InputLine::InputLine(QWidget *parent) - : QLineEdit(parent), + : +#ifdef HAVE_KDE + KTextEdit(parent), +#else + QLineEdit(parent), +#endif idx(0), tabCompleter(new TabCompleter(this)) { +#ifdef HAVE_KDE +//This is done to make the KTextEdit look like a lineedit + setMaximumHeight(document()->size().toSize().height()); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setAcceptRichText(false); + connect(this, SIGNAL(textChanged()), this, SLOT(on_textChanged())); +#endif + connect(this, SIGNAL(returnPressed()), this, SLOT(on_returnPressed())); connect(this, SIGNAL(textChanged(QString)), this, SLOT(on_textChanged(QString))); } @@ -42,7 +56,7 @@ bool InputLine::eventFilter(QObject *watched, QEvent *event) { BufferView *view = qobject_cast(watched); if(view) { QKeyEvent *keyEvent = static_cast(event); - if(keyEvent->text().length() == 1) { // normal key press + if(keyEvent->text().length() == 1 && !(keyEvent->modifiers() & (Qt::ControlModifier ^ Qt::AltModifier)) ) { // normal key press QChar c = keyEvent->text().at(0); if(c.isLetterOrNumber() || c.isSpace() || c.isPunct() || c.isSymbol()) { setFocus(); @@ -90,8 +104,18 @@ void InputLine::keyPressEvent(QKeyEvent * event) { case Qt::Key_Select: // for Qtopia emit returnPressed(); +#ifdef HAVE_KDE +//Since this is a ktextedit, we don't have this signal "natively" + case Qt::Key_Return: + emit returnPressed(); +#endif + default: +#ifdef HAVE_KDE + KTextEdit::keyPressEvent(event); +#else QLineEdit::keyPressEvent(event); +#endif } } @@ -140,14 +164,41 @@ void InputLine::on_textChanged(QString newText) { if(lineSep.isEmpty()) return; - if(newText.contains(lineSep)) { + QStringList lines = newText.split(lineSep); + clear(); + + if(lines.count() >= 4) { + QString msg = tr("Do you really want to paste %1 lines?").arg(lines.count()); + msg += "

"; + for(int i = 0; i < 3; i++) { + msg += lines[i].left(40); + if(lines[i].count() > 40) + msg += "..."; + msg += "
"; + } + msg += "...

"; + QMessageBox question(QMessageBox::NoIcon, tr("Paste Protection"), msg, QMessageBox::Yes|QMessageBox::No); + question.setDefaultButton(QMessageBox::No); +#ifdef Q_WS_MAC + question.setWindowFlags(question.windowFlags() | Qt::Sheet); +#endif + if(question.exec() == QMessageBox::No) + return; + } + + foreach(QString line, lines) { clear(); - QString line = newText.section(lineSep, 0, 0); - QString remainder = newText.section(lineSep, 1); insert(line); emit returnPressed(); - insert(remainder); } +// if(newText.contains(lineSep)) { +// clear(); +// QString line = newText.section(lineSep, 0, 0); +// QString remainder = newText.section(lineSep, 1); +// insert(line); +// emit returnPressed(); +// insert(remainder); +// } } void InputLine::resetLine() {