mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-08-20 13:23:34 -07:00
Fix validation text doesn't update on mouse click selection
This commit is contained in:
parent
6ab35512da
commit
a9906e5d2a
2 changed files with 38 additions and 30 deletions
|
@ -162,6 +162,8 @@ Private::FileLineEdit::FileLineEdit(QWidget *parent)
|
|||
|
||||
m_completer->setModel(m_completerModel);
|
||||
setCompleter(m_completer);
|
||||
|
||||
connect(this, &QLineEdit::textChanged, this, &FileLineEdit::validateText);
|
||||
}
|
||||
|
||||
Private::FileLineEdit::~FileLineEdit()
|
||||
|
@ -215,12 +217,37 @@ void Private::FileLineEdit::keyPressEvent(QKeyEvent *e)
|
|||
m_completerModel->setRootPath(Path(text()).data());
|
||||
showCompletionPopup();
|
||||
}
|
||||
}
|
||||
|
||||
const auto *validator = qobject_cast<const FileSystemPathValidator *>(this->validator());
|
||||
if (validator)
|
||||
void Private::FileLineEdit::contextMenuEvent(QContextMenuEvent *event)
|
||||
{
|
||||
QMenu *menu = createStandardContextMenu();
|
||||
menu->setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
if (m_browseAction)
|
||||
{
|
||||
menu->addSeparator();
|
||||
menu->addAction(m_browseAction);
|
||||
}
|
||||
|
||||
menu->popup(event->globalPos());
|
||||
}
|
||||
|
||||
void Private::FileLineEdit::showCompletionPopup()
|
||||
{
|
||||
m_completer->setCompletionPrefix(text());
|
||||
m_completer->complete();
|
||||
}
|
||||
|
||||
void Private::FileLineEdit::validateText()
|
||||
{
|
||||
const auto *validator = qobject_cast<const FileSystemPathValidator *>(this->validator());
|
||||
if (!validator)
|
||||
return;
|
||||
|
||||
const FileSystemPathValidator::TestResult lastTestResult = validator->lastTestResult();
|
||||
const QValidator::State lastState = validator->lastValidationState();
|
||||
|
||||
if (lastTestResult == FileSystemPathValidator::TestResult::OK)
|
||||
{
|
||||
delete m_warningAction;
|
||||
|
@ -244,27 +271,6 @@ void Private::FileLineEdit::keyPressEvent(QKeyEvent *e)
|
|||
m_warningAction->setToolTip(warningText(lastTestResult));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Private::FileLineEdit::contextMenuEvent(QContextMenuEvent *event)
|
||||
{
|
||||
QMenu *menu = createStandardContextMenu();
|
||||
menu->setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
if (m_browseAction)
|
||||
{
|
||||
menu->addSeparator();
|
||||
menu->addAction(m_browseAction);
|
||||
}
|
||||
|
||||
menu->popup(event->globalPos());
|
||||
}
|
||||
|
||||
void Private::FileLineEdit::showCompletionPopup()
|
||||
{
|
||||
m_completer->setCompletionPrefix(text());
|
||||
m_completer->complete();
|
||||
}
|
||||
|
||||
QString Private::FileLineEdit::warningText(const FileSystemPathValidator::TestResult result)
|
||||
{
|
||||
|
|
|
@ -130,8 +130,10 @@ namespace Private
|
|||
void contextMenuEvent(QContextMenuEvent *event) override;
|
||||
|
||||
private:
|
||||
static QString warningText(FileSystemPathValidator::TestResult result);
|
||||
void showCompletionPopup();
|
||||
void validateText();
|
||||
|
||||
static QString warningText(FileSystemPathValidator::TestResult result);
|
||||
|
||||
QFileSystemModel *m_completerModel = nullptr;
|
||||
QCompleter *m_completer = nullptr;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue