From: Manuel Nickschas Date: Tue, 25 Aug 2009 22:15:23 +0000 (+0200) Subject: Accept Ctrl+F while the inputline is focused X-Git-Tag: 0.5-rc1~7 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=f116598348bc1439ffb5df2e52e2e63ce5765bd2 Accept Ctrl+F while the inputline is focused Fixes #772. --- diff --git a/src/qtui/inputwidget.cpp b/src/qtui/inputwidget.cpp index ce9189ed..11e3ec35 100644 --- a/src/qtui/inputwidget.cpp +++ b/src/qtui/inputwidget.cpp @@ -49,6 +49,7 @@ InputWidget::InputWidget(QWidget *parent) ui.ownNick->setSizeAdjustPolicy(QComboBox::AdjustToContents); ui.ownNick->installEventFilter(new MouseWheelFilter(this)); ui.inputEdit->installEventFilter(new JumpKeyHandler(this)); + ui.inputEdit->installEventFilter(this); ui.inputEdit->setMinHeight(1); ui.inputEdit->setMaxHeight(5); @@ -114,32 +115,31 @@ bool InputWidget::eventFilter(QObject *watched, QEvent *event) { if(event->type() != QEvent::KeyPress) return false; + QKeyEvent *keyEvent = static_cast(event); + // keys from BufferView should be sent to (and focus) the input line BufferView *view = qobject_cast(watched); if(view) { - QKeyEvent *keyEvent = static_cast(event); 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(); QCoreApplication::sendEvent(inputLine(), keyEvent); return true; - } else - return false; + } } - } - return false; -} - -void InputWidget::keyPressEvent(QKeyEvent * event) { - if(event->matches(QKeySequence::Find)) { - QAction *act = GraphicalUi::actionCollection()->action("ToggleSearchBar"); - if(act) { - act->toggle(); - return; + return false; + } else if(watched == ui.inputEdit) { + if(keyEvent->matches(QKeySequence::Find)) { + QAction *act = GraphicalUi::actionCollection()->action("ToggleSearchBar"); + if(act) { + act->toggle(); + return true; + } } + return false; } - AbstractItemView::keyPressEvent(event); + return false; } void InputWidget::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { @@ -285,7 +285,7 @@ void InputWidget::updateNickSelector() const { if(!me->userModes().isEmpty()) nicks[nickIdx] += QString(" (+%1)").arg(me->userModes()); } - + ui.ownNick->addItems(nicks); if(me && me->isAway()) diff --git a/src/qtui/inputwidget.h b/src/qtui/inputwidget.h index aeb63f8a..7ba90464 100644 --- a/src/qtui/inputwidget.h +++ b/src/qtui/inputwidget.h @@ -44,7 +44,6 @@ public: protected: virtual bool eventFilter(QObject *watched, QEvent *event); - virtual void keyPressEvent(QKeyEvent * event); protected slots: virtual void currentChanged(const QModelIndex ¤t, const QModelIndex &previous);