summary refs log tree commit diff
path: root/src/timeline/InputBar.cpp
diff options
context:
space:
mode:
authorLoren Burkholder <computersemiexpert@outlook.com>2023-03-07 19:10:42 -0500
committerLoren Burkholder <computersemiexpert@outlook.com>2023-03-07 19:17:26 -0500
commitb266185ce83c81f0c120a9083867817a354107c2 (patch)
treef7728d76073f810a0951d40d8f50f30beceeace9 /src/timeline/InputBar.cpp
parentmake lint (diff)
downloadnheko-b266185ce83c81f0c120a9083867817a354107c2.tar.xz
Handle incomplete commands better
Diffstat (limited to 'src/timeline/InputBar.cpp')
-rw-r--r--src/timeline/InputBar.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp

index fb61ce0d..b27128e0 100644 --- a/src/timeline/InputBar.cpp +++ b/src/timeline/InputBar.cpp
@@ -252,7 +252,7 @@ InputBar::updateTextContentProperties(const QString &t) } // check for invalid commands - auto commandName = getCommandAndArgs().first; + auto commandName = getCommandAndArgs(t).first; static const QSet<QString> validCommands{QStringLiteral("me"), QStringLiteral("react"), QStringLiteral("join"), @@ -284,14 +284,18 @@ InputBar::updateTextContentProperties(const QString &t) QStringLiteral("goto"), QStringLiteral("converttodm"), QStringLiteral("converttoroom")}; - bool hasInvalidCommand = - !commandName.isNull() && '/' + commandName != text() && !validCommands.contains(commandName); + bool hasInvalidCommand = !commandName.isNull() && !validCommands.contains(commandName); + bool hasIncompleteCommand = hasInvalidCommand && '/' + commandName == t; bool signalsChanged{false}; if (containsInvalidCommand_ != hasInvalidCommand) { containsInvalidCommand_ = hasInvalidCommand; signalsChanged = true; } + if (containsIncompleteCommand_ != hasIncompleteCommand) { + containsIncompleteCommand_ = hasIncompleteCommand; + signalsChanged = true; + } if (currentCommand_ != commandName) { currentCommand_ = commandName; signalsChanged = true; @@ -299,6 +303,7 @@ InputBar::updateTextContentProperties(const QString &t) if (signalsChanged) { emit currentCommandChanged(); emit containsInvalidCommandChanged(); + emit containsIncompleteCommandChanged(); } } @@ -392,9 +397,11 @@ InputBar::send() auto wasEdit = !room->edit().isEmpty(); - if (auto [commandName, args] = getCommandAndArgs(); commandName.isEmpty()) - message(text()); - else if (!command(commandName, args)) + auto [commandName, args] = getCommandAndArgs(); + updateTextContentProperties(text()); + if (containsIncompleteCommand_) + return; + if (commandName.isEmpty() || !command(commandName, args)) message(text()); if (!wasEdit) { @@ -758,9 +765,8 @@ InputBar::video(const QString &filename, } QPair<QString, QString> -InputBar::getCommandAndArgs() const +InputBar::getCommandAndArgs(const QString &currentText) const { - const auto currentText = text(); if (!currentText.startsWith('/')) return {{}, currentText};