Browse Source

Fix validation text doesn't update on mouse click selection

adaptive-webui-19844
Chocobo1 2 years ago
parent
commit
a9906e5d2a
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 52
      src/gui/fspathedit_p.cpp
  2. 4
      src/gui/fspathedit_p.h

52
src/gui/fspathedit_p.cpp

@ -162,6 +162,8 @@ Private::FileLineEdit::FileLineEdit(QWidget *parent)
m_completer->setModel(m_completerModel); m_completer->setModel(m_completerModel);
setCompleter(m_completer); setCompleter(m_completer);
connect(this, &QLineEdit::textChanged, this, &FileLineEdit::validateText);
} }
Private::FileLineEdit::~FileLineEdit() Private::FileLineEdit::~FileLineEdit()
@ -215,12 +217,37 @@ void Private::FileLineEdit::keyPressEvent(QKeyEvent *e)
m_completerModel->setRootPath(Path(text()).data()); m_completerModel->setRootPath(Path(text()).data());
showCompletionPopup(); showCompletionPopup();
} }
}
const auto *validator = qobject_cast<const FileSystemPathValidator *>(this->validator()); void Private::FileLineEdit::contextMenuEvent(QContextMenuEvent *event)
if (validator) {
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 FileSystemPathValidator::TestResult lastTestResult = validator->lastTestResult();
const QValidator::State lastState = validator->lastValidationState(); const QValidator::State lastState = validator->lastValidationState();
if (lastTestResult == FileSystemPathValidator::TestResult::OK) if (lastTestResult == FileSystemPathValidator::TestResult::OK)
{ {
delete m_warningAction; delete m_warningAction;
@ -243,27 +270,6 @@ void Private::FileLineEdit::keyPressEvent(QKeyEvent *e)
m_warningAction->setIcon(style()->standardIcon(QStyle::SP_MessageBoxInformation)); m_warningAction->setIcon(style()->standardIcon(QStyle::SP_MessageBoxInformation));
m_warningAction->setToolTip(warningText(lastTestResult)); 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) QString Private::FileLineEdit::warningText(const FileSystemPathValidator::TestResult result)

4
src/gui/fspathedit_p.h

@ -130,8 +130,10 @@ namespace Private
void contextMenuEvent(QContextMenuEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override;
private: private:
static QString warningText(FileSystemPathValidator::TestResult result);
void showCompletionPopup(); void showCompletionPopup();
void validateText();
static QString warningText(FileSystemPathValidator::TestResult result);
QFileSystemModel *m_completerModel = nullptr; QFileSystemModel *m_completerModel = nullptr;
QCompleter *m_completer = nullptr; QCompleter *m_completer = nullptr;

Loading…
Cancel
Save