diff --git a/kdevplatform/documentation/documentationview.cpp b/kdevplatform/documentation/documentationview.cpp --- a/kdevplatform/documentation/documentationview.cpp +++ b/kdevplatform/documentation/documentationview.cpp @@ -87,6 +87,7 @@ addAction(mForward); mHomeAction = new QAction(QIcon::fromTheme(QStringLiteral("go-home")), i18n("Home"), this); + mHomeAction->setEnabled(false); connect(mHomeAction, &QAction::triggered, this, &DocumentationView::showHome); addAction(mHomeAction); @@ -96,6 +97,7 @@ addAction(providersAction); mIdentifiers = new QLineEdit(this); + mIdentifiers->setEnabled(false); mIdentifiers->setClearButtonEnabled(true); mIdentifiers->setPlaceholderText(i18n("Search...")); mIdentifiers->setCompleter(new QCompleter(mIdentifiers)); @@ -117,6 +119,7 @@ mFind = new QAction(QIcon::fromTheme(QStringLiteral("edit-find")), i18n("Find in Text..."), this); mFind->setToolTip(i18n("Find in text of current documentation page.")); + mFind->setEnabled(false); connect(mFind, &QAction::triggered, mFindDoc, &DocumentationFindWidget::startSearch); addAction(mFind); @@ -136,7 +139,10 @@ } connect(mProvidersModel, &ProvidersModel::providersChanged, this, &DocumentationView::emptyHistory); - if (mProvidersModel->rowCount() > 0) { + const bool hasProviders = (mProviders->count() > 0); + mHomeAction->setEnabled(hasProviders); + mIdentifiers->setEnabled(hasProviders); + if (hasProviders) { changedProvider(0); } } @@ -238,18 +244,27 @@ mCurrent = mHistory.end(); mBack->setEnabled(false); mForward->setEnabled(false); - if (mProviders->count() > 0) { + const bool hasProviders = (mProviders->count() > 0); + mHomeAction->setEnabled(hasProviders); + mIdentifiers->setEnabled(hasProviders); + if (hasProviders) { mProviders->setCurrentIndex(0); changedProvider(0); + } else { + updateView(); } } void DocumentationView::updateView() { - mProviders->setCurrentIndex(mProvidersModel->rowForProvider((*mCurrent)->provider())); - mIdentifiers->completer()->setModel((*mCurrent)->provider()->indexModel()); - mIdentifiers->setText((*mCurrent)->name()); - mIdentifiers->completer()->setCompletionPrefix((*mCurrent)->name()); + if (mCurrent != mHistory.end()) { + mProviders->setCurrentIndex(mProvidersModel->rowForProvider((*mCurrent)->provider())); + mIdentifiers->completer()->setModel((*mCurrent)->provider()->indexModel()); + mIdentifiers->setText((*mCurrent)->name()); + mIdentifiers->completer()->setCompletionPrefix((*mCurrent)->name()); + } else { + mIdentifiers->clear(); + } QLayoutItem* lastview = layout()->takeAt(0); Q_ASSERT(lastview); @@ -261,9 +276,15 @@ delete lastview; mFindDoc->setEnabled(false); - QWidget* w = (*mCurrent)->documentationWidget(mFindDoc, this); - Q_ASSERT(w); - QWidget::setTabOrder(mIdentifiers, w); + QWidget* w; + if (mCurrent != mHistory.end()) { + w = (*mCurrent)->documentationWidget(mFindDoc, this); + Q_ASSERT(w); + QWidget::setTabOrder(mIdentifiers, w); + } else { + // placeholder widget at location of doc view + w = new QWidget(this); + } mFind->setEnabled(mFindDoc->isEnabled()); if (!mFindDoc->isEnabled()) { diff --git a/kdevplatform/shell/documentationcontroller.cpp b/kdevplatform/shell/documentationcontroller.cpp --- a/kdevplatform/shell/documentationcontroller.cpp +++ b/kdevplatform/shell/documentationcontroller.cpp @@ -128,7 +128,7 @@ void DocumentationController::initialize() { - if(!documentationProviders().isEmpty() && !(Core::self()->setupFlags() & Core::NoUi)) { + if (!(Core::self()->setupFlags() & Core::NoUi)) { Core::self()->uiController()->addToolView(i18n("Documentation"), m_factory); } }