forked from qt-creator/qt-creator
assign DEL as shortcut to 'suppress error'
Merge-request: 265 Reviewed-by: hjk <qtc-committer@nokia.com>
This commit is contained in:
@@ -429,6 +429,14 @@ MemcheckErrorView::MemcheckErrorView(QWidget *parent)
|
|||||||
m_copyAction->setShortcutContext(Qt::WidgetWithChildrenShortcut);
|
m_copyAction->setShortcutContext(Qt::WidgetWithChildrenShortcut);
|
||||||
connect(m_copyAction, SIGNAL(triggered()), itemDelegate(), SLOT(copy()));
|
connect(m_copyAction, SIGNAL(triggered()), itemDelegate(), SLOT(copy()));
|
||||||
addAction(m_copyAction);
|
addAction(m_copyAction);
|
||||||
|
|
||||||
|
m_suppressAction = new QAction(this);
|
||||||
|
m_suppressAction->setText(tr("Suppress Error"));
|
||||||
|
m_suppressAction->setIcon(QIcon(QLatin1String(":/qmldesigner/images/eye_crossed.png")));
|
||||||
|
m_suppressAction->setShortcut(QKeySequence(Qt::Key_Delete));
|
||||||
|
m_suppressAction->setShortcutContext(Qt::WidgetWithChildrenShortcut);
|
||||||
|
connect(m_suppressAction, SIGNAL(triggered()), this, SLOT(suppressError()));
|
||||||
|
addAction(m_suppressAction);
|
||||||
}
|
}
|
||||||
|
|
||||||
MemcheckErrorView::~MemcheckErrorView()
|
MemcheckErrorView::~MemcheckErrorView()
|
||||||
@@ -474,9 +482,9 @@ void MemcheckErrorView::settingsChanged(AnalyzerSettings *settings)
|
|||||||
void MemcheckErrorView::contextMenuEvent(QContextMenuEvent *e)
|
void MemcheckErrorView::contextMenuEvent(QContextMenuEvent *e)
|
||||||
{
|
{
|
||||||
const QModelIndexList indizes = selectionModel()->selectedRows();
|
const QModelIndexList indizes = selectionModel()->selectedRows();
|
||||||
if (indizes.isEmpty()) {
|
if (indizes.isEmpty())
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
QList<Error> errors;
|
QList<Error> errors;
|
||||||
foreach(const QModelIndex &index, indizes) {
|
foreach(const QModelIndex &index, indizes) {
|
||||||
@@ -488,16 +496,19 @@ void MemcheckErrorView::contextMenuEvent(QContextMenuEvent *e)
|
|||||||
QMenu menu;
|
QMenu menu;
|
||||||
menu.addAction(m_copyAction);
|
menu.addAction(m_copyAction);
|
||||||
menu.addSeparator();
|
menu.addSeparator();
|
||||||
QAction *suppress = menu.addAction(tr("Suppress Error(s)", "", errors.size()));
|
menu.addAction(m_suppressAction);
|
||||||
suppress->setIcon(QIcon(QLatin1String(":/qmldesigner/images/eye_crossed.png")));
|
m_suppressAction->setEnabled(!errors.isEmpty());
|
||||||
suppress->setEnabled(!errors.isEmpty());
|
menu.exec(e->globalPos());
|
||||||
|
}
|
||||||
|
|
||||||
if (QAction *executed = menu.exec(e->globalPos())) {
|
void MemcheckErrorView::suppressError()
|
||||||
if (executed == suppress) {
|
{
|
||||||
SuppressionDialog *dialog = new SuppressionDialog(this);
|
SuppressionDialog *dialog = new SuppressionDialog(this);
|
||||||
dialog->setModal(true);
|
if (dialog->shouldShow()) {
|
||||||
dialog->show();
|
dialog->setModal(true);
|
||||||
dialog->setAttribute(Qt::WA_DeleteOnClose, true);
|
dialog->show();
|
||||||
}
|
dialog->setAttribute(Qt::WA_DeleteOnClose, true);
|
||||||
|
} else {
|
||||||
|
delete dialog;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -111,12 +111,16 @@ signals:
|
|||||||
public slots:
|
public slots:
|
||||||
void settingsChanged(AnalyzerSettings *settings);
|
void settingsChanged(AnalyzerSettings *settings);
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void suppressError();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resizeEvent(QResizeEvent *e);
|
void resizeEvent(QResizeEvent *e);
|
||||||
void contextMenuEvent(QContextMenuEvent *e);
|
void contextMenuEvent(QContextMenuEvent *e);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QAction *m_copyAction;
|
QAction *m_copyAction;
|
||||||
|
QAction *m_suppressAction;
|
||||||
QString m_defaultSuppFile;
|
QString m_defaultSuppFile;
|
||||||
AnalyzerSettings *m_settings;
|
AnalyzerSettings *m_settings;
|
||||||
};
|
};
|
||||||
|
@@ -156,7 +156,12 @@ SuppressionDialog::SuppressionDialog(MemcheckErrorView *view, QWidget *parent, Q
|
|||||||
SLOT(validate()));
|
SLOT(validate()));
|
||||||
|
|
||||||
QString suppressions;
|
QString suppressions;
|
||||||
foreach(const QModelIndex &index, m_view->selectionModel()->selectedRows()) {
|
QModelIndexList indizes = m_view->selectionModel()->selectedRows();
|
||||||
|
if (indizes.isEmpty() && m_view->selectionModel()->currentIndex().isValid()) {
|
||||||
|
// can happen when using arrow keys to navigate and shortcut to trigger suppression
|
||||||
|
indizes << m_view->selectionModel()->currentIndex();
|
||||||
|
}
|
||||||
|
foreach(const QModelIndex &index, indizes) {
|
||||||
Error error = m_view->model()->data(index, ErrorListModel::ErrorRole).value<Error>();
|
Error error = m_view->model()->data(index, ErrorListModel::ErrorRole).value<Error>();
|
||||||
if (!error.suppression().isNull())
|
if (!error.suppression().isNull())
|
||||||
m_errors << error;
|
m_errors << error;
|
||||||
@@ -170,6 +175,11 @@ SuppressionDialog::SuppressionDialog(MemcheckErrorView *view, QWidget *parent, Q
|
|||||||
setWindowTitle(tr("Save Suppression"));
|
setWindowTitle(tr("Save Suppression"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SuppressionDialog::shouldShow() const
|
||||||
|
{
|
||||||
|
return !m_errors.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
void SuppressionDialog::accept()
|
void SuppressionDialog::accept()
|
||||||
{
|
{
|
||||||
const QString path = m_ui->fileChooser->path();
|
const QString path = m_ui->fileChooser->path();
|
||||||
|
@@ -65,6 +65,8 @@ public:
|
|||||||
virtual void accept();
|
virtual void accept();
|
||||||
virtual void reject();
|
virtual void reject();
|
||||||
|
|
||||||
|
bool shouldShow() const;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void validate();
|
void validate();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user