X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Finputline.cpp;h=c04a3f251a8fdb750916280680313b719b60e3b6;hp=53bcdcacd2c5c156456eb0d69a3c155635eb5108;hb=af569a42f6635f6abfcedeb45b730ee64d53e0b8;hpb=d3f2be9223dc34e5bc52095de4ec59f734f5c820 diff --git a/src/uisupport/inputline.cpp b/src/uisupport/inputline.cpp index 53bcdcac..c04a3f25 100644 --- a/src/uisupport/inputline.cpp +++ b/src/uisupport/inputline.cpp @@ -19,15 +19,31 @@ ***************************************************************************/ #include "bufferview.h" - +#include "graphicalui.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()); + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setAcceptRichText(false); + setLineWrapMode(NoWrap); + enableFindReplace(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))); } @@ -35,6 +51,13 @@ InputLine::InputLine(QWidget *parent) InputLine::~InputLine() { } +void InputLine::setCustomFont(const QFont &font) { + setFont(font); +#ifdef HAVE_KDE + setMaximumHeight(document()->size().toSize().height()); +#endif +} + bool InputLine::eventFilter(QObject *watched, QEvent *event) { if(event->type() != QEvent::KeyPress) return false; @@ -43,7 +66,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(); @@ -57,6 +80,18 @@ bool InputLine::eventFilter(QObject *watched, QEvent *event) { } void InputLine::keyPressEvent(QKeyEvent * event) { + +#ifdef HAVE_KDE + if(event->matches(QKeySequence::Find)) { + QAction *act = GraphicalUi::actionCollection()->action("ToggleSearchBar"); + if(act) { + act->toggle(); + event->accept(); + return; + } + } +#endif + switch(event->key()) { case Qt::Key_Up: event->accept(); @@ -90,9 +125,30 @@ void InputLine::keyPressEvent(QKeyEvent * event) { case Qt::Key_Select: // for Qtopia emit returnPressed(); + break; + +#ifdef HAVE_KDE +//Since this is a ktextedit, we don't have this signal "natively" + case Qt::Key_Return: + event->accept(); + if(!text().isEmpty()) + emit returnPressed(); + break; + + case Qt::Key_Enter: + event->accept(); + if(!text().isEmpty()) + emit returnPressed(); + break; + +#endif default: +#ifdef HAVE_KDE + KTextEdit::keyPressEvent(event); +#else QLineEdit::keyPressEvent(event); +#endif } } @@ -144,7 +200,7 @@ void InputLine::on_textChanged(QString newText) { QStringList lines = newText.split(lineSep); clear(); - if(lines.count() > 4) { + 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++) { @@ -156,15 +212,19 @@ void InputLine::on_textChanged(QString newText) { 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(); - insert(line); - emit returnPressed(); + if(!line.isEmpty()) { + clear(); + insert(line); + emit returnPressed(); + } } // if(newText.contains(lineSep)) { // clear();