X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Ftabcompleter.cpp;h=46d8a8df5af5b152a0cd706556abec8a863554eb;hp=40a4929411fd9632d133b1c9630b430c24951cb6;hb=45affd4fa815bb21d0b2e46ac80114bb9174f801;hpb=9d54503555534a2c554f09a33df6afa33d6308ec diff --git a/src/uisupport/tabcompleter.cpp b/src/uisupport/tabcompleter.cpp index 40a49294..46d8a8df 100644 --- a/src/uisupport/tabcompleter.cpp +++ b/src/uisupport/tabcompleter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -45,18 +45,19 @@ TabCompleter::TabCompleter(MultiLineEdit *_lineEdit) _enabled(false), _nickSuffix(": ") { - // use both an Action and generic eventFilter, to make the shortcut configurable - // yet still be able to reset() when required + // This Action just serves as a container for the custom shortcut and isn't actually handled; + // apparently, using tab as an Action shortcut in an input widget is unreliable on some platforms (e.g. OS/2) _lineEdit->installEventFilter(this); ActionCollection *coll = GraphicalUi::actionCollection("General"); - coll->addAction("TabCompletionKey", new Action(tr("Tab completion"), coll, + QAction *a = coll->addAction("TabCompletionKey", new Action(tr("Tab completion"), coll, this, SLOT(onTabCompletionKey()), QKeySequence(Qt::Key_Tab))); + a->setEnabled(false); // avoid catching the shortcut } void TabCompleter::onTabCompletionKey() { - complete(); + // do nothing; we use the event filter instead } @@ -108,6 +109,7 @@ void TabCompleter::buildCompletionList() case BufferInfo::QueryBuffer: if (regex.indexIn(_currentBufferName) > -1) _completionMap[_currentBufferName.toLower()] = _currentBufferName; + [[fallthrough]]; case BufferInfo::StatusBuffer: if (!_currentNetwork->myNick().isEmpty() && regex.indexIn(_currentNetwork->myNick()) > -1) _completionMap[_currentNetwork->myNick().toLower()] = _currentNetwork->myNick(); @@ -151,7 +153,7 @@ void TabCompleter::complete() _lastCompletionLength += _nickSuffix.length(); } else if (s.addSpaceMidSentence()) { - _lineEdit->insert(" "); + _lineEdit->addCompletionSpace(); _lastCompletionLength++; } @@ -179,9 +181,11 @@ bool TabCompleter::eventFilter(QObject *obj, QEvent *event) QKeyEvent *keyEvent = static_cast(event); - if (keyEvent->key() != GraphicalUi::actionCollection("General")->action("TabCompletionKey")->shortcut()) { + if (keyEvent->key() == GraphicalUi::actionCollection("General")->action("TabCompletionKey")->shortcut()[0]) + complete(); + else reset(); - } + return false; }