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) @@ -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) @@ -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;
@ -243,27 +270,6 @@ void Private::FileLineEdit::keyPressEvent(QKeyEvent *e) @@ -243,27 +270,6 @@ void Private::FileLineEdit::keyPressEvent(QKeyEvent *e)
m_warningAction->setIcon(style()->standardIcon(QStyle::SP_MessageBoxInformation));
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)

4
src/gui/fspathedit_p.h

@ -130,8 +130,10 @@ namespace Private @@ -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…
Cancel
Save