assign DEL as shortcut to 'suppress error'

Merge-request: 265
Reviewed-by: hjk <qtc-committer@nokia.com>
This commit is contained in:
Milian Wolff
2011-03-04 16:00:04 +01:00
committed by hjk
parent dc5f9f7de4
commit d2fcbda7fc
4 changed files with 40 additions and 13 deletions

View File

@@ -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);
if (dialog->shouldShow()) {
dialog->setModal(true); dialog->setModal(true);
dialog->show(); dialog->show();
dialog->setAttribute(Qt::WA_DeleteOnClose, true); dialog->setAttribute(Qt::WA_DeleteOnClose, true);
} } else {
delete dialog;
} }
} }

View File

@@ -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;
}; };

View File

@@ -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();

View File

@@ -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();