1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

fix(autocomplete): don't auto-complete own nick

In the process also remove the dependency of the auto completer on Core.
This commit is contained in:
sudden6 2018-10-30 22:52:38 +01:00
parent 1ebcac4460
commit f188409b8c
No known key found for this signature in database
GPG Key ID: 279509B499E032B9
3 changed files with 13 additions and 9 deletions

View File

@ -183,3 +183,8 @@ void Group::setSelfName(const QString& name)
{
selfName = name;
}
QString Group::getSelfName() const
{
return selfName;
}

View File

@ -55,6 +55,7 @@ public:
const ToxPk resolvePeerId(int peerId) const;
QString resolveToxId(const ToxPk& id) const;
void setSelfName(const QString& name);
QString getSelfName() const;
signals:
void titleChangedByUser(uint32_t groupId, const QString& title);

View File

@ -25,7 +25,6 @@
#include <QKeyEvent>
#include <QRegExp>
#include "src/core/core.h"
#include "src/model/group.h"
#include "src/widget/tool/chattextedit.h"
@ -72,7 +71,11 @@ void TabCompleter::buildCompletionList()
QRegExp regex(QString("^[-_\\[\\]{}|`^.\\\\]*").append(QRegExp::escape(tabAbbrev)),
Qt::CaseInsensitive);
for (auto name : group->getPeerList()) {
const QString ownNick = group->getSelfName();
for (const auto& name : group->getPeerList()) {
if (name == ownNick) {
continue; // don't auto complete own name
}
if (regex.indexIn(name) > -1) {
SortableString lower = SortableString(name.toLower());
completionMap[lower] = name;
@ -96,8 +99,9 @@ void TabCompleter::complete()
auto cur = msgEdit->textCursor();
cur.setPosition(cur.selectionEnd());
msgEdit->setTextCursor(cur);
for (int i = 0; i < lastCompletionLength; ++i)
for (int i = 0; i < lastCompletionLength; ++i) {
msgEdit->textCursor().deletePreviousChar();
}
// insert completion
msgEdit->insertPlainText(*nextCompletion);
@ -127,12 +131,6 @@ void TabCompleter::reset()
// this determines the sort order
bool TabCompleter::SortableString::operator<(const SortableString& other) const
{
QString name = Core::getInstance()->getUsername();
if (this->contents == name)
return false;
else if (other.contents == name)
return true;
/* QDateTime thisTime = thisUser->lastChannelActivity(_currentBufferId);
QDateTime thatTime = thatUser->lastChannelActivity(_currentBufferId);