Help: Fix highlighting of search terms.

It was using the wrong search help engine to get the search terms.
Instead let the search widget itself figure out the search terms, and
pass it directly on to the help widget when activating links.

Change-Id: Ib72220eafca69e92894fe7584b1e4dfd9a42cc7e
Task-number: QTCREATORBUG-13239
Reviewed-by: Robert Loehning <robert.loehning@digia.com>
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
This commit is contained in:
Eike Ziller
2014-10-31 14:20:03 +01:00
parent d6a7287fb4
commit cd5e00034d
7 changed files with 51 additions and 48 deletions

View File

@@ -137,7 +137,7 @@ void SearchWidget::showEvent(QShowEvent *event)
connect(queryWidget, SIGNAL(search()), this, SLOT(search()));
connect(resultWidget, &QHelpSearchResultWidget::requestShowLink, this,
[this](const QUrl &url) {
emit linkActivated(url, false/*newPage*/);
emit linkActivated(url, currentSearchTerms(), false/*newPage*/);
});
connect(searchEngine, SIGNAL(searchingStarted()), this,
@@ -232,7 +232,7 @@ bool SearchWidget::eventFilter(QObject *o, QEvent *e)
bool controlPressed = me->modifiers() & Qt::ControlModifier;
if ((me->button() == Qt::LeftButton && controlPressed)
|| (me->button() == Qt::MidButton)) {
emit linkActivated(link, true/*newPage*/);
emit linkActivated(link, currentSearchTerms(), true/*newPage*/);
}
}
}
@@ -269,20 +269,43 @@ void SearchWidget::contextMenuEvent(QContextMenuEvent *contextMenuEvent)
QAction *usedAction = menu.exec(mapToGlobal(contextMenuEvent->pos()));
if (usedAction == openLink)
emit linkActivated(link, false/*newPage*/);
emit linkActivated(link, currentSearchTerms(), false/*newPage*/);
else if (usedAction == openLinkInNewTab)
emit linkActivated(link, true/*newPage*/);
emit linkActivated(link, currentSearchTerms(), true/*newPage*/);
else if (usedAction == copyAnchorAction)
QApplication::clipboard()->setText(link.toString());
}
QStringList SearchWidget::currentSearchTerms() const
{
QList<QHelpSearchQuery> queryList = searchEngine->query();
QStringList terms;
foreach (const QHelpSearchQuery &query, queryList) {
switch (query.fieldName) {
case QHelpSearchQuery::ALL:
case QHelpSearchQuery::PHRASE:
case QHelpSearchQuery::DEFAULT:
case QHelpSearchQuery::ATLEAST: {
foreach (QString term, query.wordList)
terms.append(term.remove(QLatin1Char('"')));
}
break;
default:
break;
}
}
return terms;
}
// #pragma mark -- SearchSideBarItem
SearchSideBarItem::SearchSideBarItem()
: SideBarItem(new SearchWidget, QLatin1String(Constants::HELP_SEARCH))
{
widget()->setWindowTitle(tr(Constants::SB_SEARCH));
connect(widget(), SIGNAL(linkActivated(QUrl,bool)), this, SIGNAL(linkActivated(QUrl,bool)));
connect(widget(), SIGNAL(linkActivated(QUrl,QStringList,bool)),
this, SIGNAL(linkActivated(QUrl,QStringList,bool)));
}
QList<QToolButton *> SearchSideBarItem::createToolBarWidgets()