diff options
Diffstat (limited to 'src/plugins/projectexplorer/taskwindow.cpp')
-rw-r--r-- | src/plugins/projectexplorer/taskwindow.cpp | 32 |
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); |