diff --git a/src/plugins/help/centralwidget.cpp b/src/plugins/help/centralwidget.cpp index 72574102f91d8719099b146de13bdd92814cc724..d13ef01b19fababb9263cf6045db06e5a0f1dad2 100644 --- a/src/plugins/help/centralwidget.cpp +++ b/src/plugins/help/centralwidget.cpp @@ -520,6 +520,10 @@ void CentralWidget::showTabBarContextMenu(const QPoint &point) close_pages->setEnabled(false); } + const QString &url = viewer->source().toString(); + if (url.isEmpty() || url == QLatin1String("about:blank")) + newBookmark->setEnabled(false); + QAction *picked_action = menu.exec(tabBar->mapToGlobal(point)); if (!picked_action) return; @@ -547,19 +551,19 @@ void CentralWidget::showTabBarContextMenu(const QPoint &point) } if (picked_action == newBookmark) - emit addNewBookmark(viewer->documentTitle(), viewer->source().toString()); + emit addNewBookmark(viewer->documentTitle(), url); } -// if we have a current help viewer then this is the 'focus proxy', otherwise -// it's the tab widget itself -// this is needed, so an embedding program can just set the focus to the central widget -// and it does TheRightThing +// If we have a current help viewer then this is the 'focus proxy', otherwise +// it's the tab widget itself. This is needed, so an embedding program can just +// set the focus to the central widget and it does TheRightThing(TM) void CentralWidget::focusInEvent(QFocusEvent * /* event */) { + QObject *receiver = tabWidget; if (currentHelpViewer()) - QTimer::singleShot(1, currentHelpViewer(), SLOT(setFocus())); - else - QTimer::singleShot(1, tabWidget, SLOT(setFocus())); + receiver = currentHelpViewer(); + + QTimer::singleShot(1, receiver, SLOT(setFocus())); } bool CentralWidget::eventFilter(QObject *object, QEvent *e) diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index f5287afbd6f2cbad6244f1ad40244895732185c1..726d3d47d12bcfeeddac5b1f910a35ae0f02beb3 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -743,12 +743,13 @@ void HelpPlugin::filterDocumentation(const QString &customFilter) void HelpPlugin::addBookmark() { - addNewBookmark(m_centralWidget->currentTitle(), m_centralWidget->currentSource().toString()); + addNewBookmark(m_centralWidget->currentTitle(), + m_centralWidget->currentSource().toString()); } void HelpPlugin::addNewBookmark(const QString &title, const QString &url) { - if (url.isEmpty()) + if (url.isEmpty() || url == QLatin1String("about:blank")) return; m_bookmarkManager->showBookmarkDialog(m_centralWidget, title, url); @@ -765,9 +766,8 @@ void HelpPlugin::openHelpPage(const QString& url) if (m_helpEngine->findFile(url).isValid()) m_centralWidget->setSource(url); else { - QString page = url.mid(url.lastIndexOf('/')+1); - qDebug() << url << page << url.lastIndexOf('/'); - QDesktopServices::openUrl(QLatin1String("http://doc.trolltech.com/latest/")+page); + QDesktopServices::openUrl(QLatin1String("http://doc.trolltech.com/latest/") + + url.mid(url.lastIndexOf('/') + 1)); } }