aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/taskwindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/taskwindow.cpp')
-rw-r--r--src/plugins/projectexplorer/taskwindow.cpp32
1 files changed, 23 insertions, 9 deletions
diff --git a/src/plugins/projectexplorer/taskwindow.cpp b/src/plugins/projectexplorer/taskwindow.cpp
index 7d8010aa27..7a98d0fd33 100644
--- a/src/plugins/projectexplorer/taskwindow.cpp
+++ b/src/plugins/projectexplorer/taskwindow.cpp
@@ -38,6 +38,7 @@
#include <coreplugin/icontext.h>
#include <utils/algorithm.h>
+#include <utils/fileinprojectfinder.h>
#include <utils/qtcassert.h>
#include <utils/itemviews.h>
#include <utils/utilsicons.h>
@@ -236,7 +237,6 @@ static QToolButton *createFilterButton(const QIcon &icon, const QString &toolTip
button->setToolTip(toolTip);
button->setCheckable(true);
button->setChecked(true);
- button->setAutoRaise(true);
button->setEnabled(true);
QObject::connect(button, &QToolButton::toggled, receiver, lambda);
return button;
@@ -282,7 +282,6 @@ TaskWindow::TaskWindow() : d(std::make_unique<TaskWindowPrivate>())
d->m_categoriesButton->setIcon(Utils::Icons::FILTER.icon());
d->m_categoriesButton->setToolTip(tr("Filter by categories"));
d->m_categoriesButton->setProperty("noArrow", true);
- d->m_categoriesButton->setAutoRaise(true);
d->m_categoriesButton->setPopupMode(QToolButton::InstantPopup);
d->m_categoriesMenu = new QMenu(d->m_categoriesButton);
@@ -290,6 +289,9 @@ TaskWindow::TaskWindow() : d(std::make_unique<TaskWindowPrivate>())
d->m_categoriesButton->setMenu(d->m_categoriesMenu);
+ setupFilterUi("IssuesPane.Filter");
+ setFilteringEnabled(true);
+
TaskHub *hub = TaskHub::instance();
connect(hub, &TaskHub::categoryAdded, this, &TaskWindow::addCategory);
connect(hub, &TaskHub::taskAdded, this, &TaskWindow::addTask);
@@ -356,7 +358,7 @@ void TaskWindow::delayedInitialization()
QList<QWidget*> TaskWindow::toolBarWidgets() const
{
- return {d->m_filterWarningsButton, d->m_categoriesButton};
+ return {d->m_filterWarningsButton, d->m_categoriesButton, filterWidget()};
}
QWidget *TaskWindow::outputWidget(QWidget *)
@@ -416,7 +418,6 @@ void TaskWindow::loadSettings()
if (value.isValid()) {
bool includeWarnings = value.toBool();
d->m_filter->setFilterIncludesWarnings(includeWarnings);
- d->m_filter->setFilterIncludesUnknowns(includeWarnings);
d->m_filterWarningsButton->setDown(d->m_filter->filterIncludesWarnings());
}
}
@@ -454,7 +455,7 @@ void TaskWindow::addTask(const Task &task)
void TaskWindow::removeTask(const Task &task)
{
- d->m_model->removeTask(task);
+ d->m_model->removeTask(task.taskId);
emit tasksChanged();
navigateStateChanged();
@@ -498,6 +499,15 @@ void TaskWindow::triggerDefaultHandler(const QModelIndex &index)
if (task.isNull())
return;
+ if (!task.file.isEmpty() && !task.file.toFileInfo().isAbsolute()
+ && !task.fileCandidates.empty()) {
+ const Utils::FilePath userChoice = Utils::chooseFileFromList(task.fileCandidates);
+ if (!userChoice.isEmpty()) {
+ task.file = userChoice;
+ updatedTaskFileName(task.taskId, task.file.toString());
+ }
+ }
+
if (d->m_defaultHandler->canHandle(task)) {
d->m_defaultHandler->handle(task);
} else {
@@ -526,7 +536,6 @@ void TaskWindow::actionTriggered()
void TaskWindow::setShowWarnings(bool show)
{
d->m_filter->setFilterIncludesWarnings(show);
- d->m_filter->setFilterIncludesUnknowns(show); // "Unknowns" are often associated with warnings
}
void TaskWindow::updateCategoriesMenu()
@@ -658,6 +667,11 @@ void TaskWindow::goToPrev()
triggerDefaultHandler(currentIndex);
}
+void TaskWindow::updateFilter()
+{
+ d->m_filter->updateFilterProperties(filterText(), filterCaseSensitivity(), filterUsesRegexp());
+}
+
bool TaskWindow::canNavigate() const
{
return true;
@@ -786,7 +800,7 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
QString bottom = index.data(TaskModel::Description).toString().split(QLatin1Char('\n')).first();
painter->setClipRect(positions.textArea());
painter->drawText(positions.textAreaLeft(), positions.top() + fm.ascent(), bottom);
- if (fm.width(bottom) > positions.textAreaWidth()) {
+ if (fm.horizontalAdvance(bottom) > positions.textAreaWidth()) {
// draw a gradient to mask the text
int gradientStart = positions.textAreaRight() - ELLIPSIS_GRADIENT_WIDTH + 1;
QLinearGradient lg(gradientStart, 0, gradientStart + ELLIPSIS_GRADIENT_WIDTH, 0);
@@ -840,7 +854,7 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const int pos = file.lastIndexOf(QLatin1Char('/'));
if (pos != -1)
file = file.mid(pos +1);
- const int realFileWidth = fm.width(file);
+ const int realFileWidth = fm.horizontalAdvance(file);
painter->setClipRect(positions.fileArea());
painter->drawText(qMin(positions.fileAreaLeft(), positions.fileAreaRight() - realFileWidth),
positions.top() + fm.ascent(), file);
@@ -877,7 +891,7 @@ void TaskDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
}
painter->setClipRect(positions.lineArea());
- const int realLineWidth = fm.width(lineText);
+ const int realLineWidth = fm.horizontalAdvance(lineText);
painter->drawText(positions.lineAreaRight() - realLineWidth, positions.top() + fm.ascent(), lineText);
painter->setClipRect(opt.rect);