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);
connect(m_copyAction, SIGNAL(triggered()), itemDelegate(), SLOT(copy()));
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()
@@ -474,9 +482,9 @@ void MemcheckErrorView::settingsChanged(AnalyzerSettings *settings)
void MemcheckErrorView::contextMenuEvent(QContextMenuEvent *e)
{
const QModelIndexList indizes = selectionModel()->selectedRows();
if (indizes.isEmpty()) {
if (indizes.isEmpty())
return;
}
QList<Error> errors;
foreach(const QModelIndex &index, indizes) {
@@ -488,16 +496,19 @@ void MemcheckErrorView::contextMenuEvent(QContextMenuEvent *e)
QMenu menu;
menu.addAction(m_copyAction);
menu.addSeparator();
QAction *suppress = menu.addAction(tr("Suppress Error(s)", "", errors.size()));
suppress->setIcon(QIcon(QLatin1String(":/qmldesigner/images/eye_crossed.png")));
suppress->setEnabled(!errors.isEmpty());
menu.addAction(m_suppressAction);
m_suppressAction->setEnabled(!errors.isEmpty());
menu.exec(e->globalPos());
}
if (QAction *executed = menu.exec(e->globalPos())) {
if (executed == suppress) {
SuppressionDialog *dialog = new SuppressionDialog(this);
dialog->setModal(true);
dialog->show();
dialog->setAttribute(Qt::WA_DeleteOnClose, true);
}
void MemcheckErrorView::suppressError()
{
SuppressionDialog *dialog = new SuppressionDialog(this);
if (dialog->shouldShow()) {
dialog->setModal(true);
dialog->show();
dialog->setAttribute(Qt::WA_DeleteOnClose, true);
} else {
delete dialog;
}
}

View File

@@ -111,12 +111,16 @@ signals:
public slots:
void settingsChanged(AnalyzerSettings *settings);
private slots:
void suppressError();
protected:
void resizeEvent(QResizeEvent *e);
void contextMenuEvent(QContextMenuEvent *e);
private:
QAction *m_copyAction;
QAction *m_suppressAction;
QString m_defaultSuppFile;
AnalyzerSettings *m_settings;
};

View File

@@ -156,7 +156,12 @@ SuppressionDialog::SuppressionDialog(MemcheckErrorView *view, QWidget *parent, Q
SLOT(validate()));
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>();
if (!error.suppression().isNull())
m_errors << error;
@@ -170,6 +175,11 @@ SuppressionDialog::SuppressionDialog(MemcheckErrorView *view, QWidget *parent, Q
setWindowTitle(tr("Save Suppression"));
}
bool SuppressionDialog::shouldShow() const
{
return !m_errors.isEmpty();
}
void SuppressionDialog::accept()
{
const QString path = m_ui->fileChooser->path();

View File

@@ -65,6 +65,8 @@ public:
virtual void accept();
virtual void reject();
bool shouldShow() const;
private slots:
void validate();