| 167 | } |
| 168 | |
| 169 | void AbstractNavigationWidget::update() |
| 170 | { |
| 171 | Q_D(AbstractNavigationWidget); |
| 172 | |
| 173 | setUpdatesEnabled(false); |
| 174 | Q_ASSERT(d->m_context); |
| 175 | |
| 176 | QString html; |
| 177 | { |
| 178 | DUChainReadLocker lock; |
| 179 | html = d->m_context->html(); |
| 180 | } |
| 181 | |
| 182 | if (!html.isEmpty()) { |
| 183 | int scrollPos = d->m_browser->verticalScrollBar()->value(); |
| 184 | |
| 185 | if (!(d->m_hints & EmbeddableWidget)) { |
| 186 | // TODO: Only show that the first time, or the first few times this context is shown? |
| 187 | html += QStringLiteral("<p><small>"); |
| 188 | if (d->m_context->linkCount() > 0) { |
| 189 | html += |
| 190 | i18n("(Hold <em>Alt</em> to show. Navigate via arrow keys, activate by pressing <em>Enter</em>)"); |
| 191 | } else { |
| 192 | html += i18n("(Hold <em>Alt</em> to show this tooltip)"); |
| 193 | } |
| 194 | html += QStringLiteral("</small></p>"); |
| 195 | } |
| 196 | |
| 197 | d->m_browser->setHtml(html); |
| 198 | |
| 199 | WidgetColorizer::convertDocumentToDarkTheme(d->m_browser->document()); |
| 200 | |
| 201 | d->m_currentText = html; |
| 202 | |
| 203 | d->m_idealTextSize = QSize(); |
| 204 | |
| 205 | QSize hint = sizeHint(); |
| 206 | if (hint.height() >= d->m_idealTextSize.height()) { |
| 207 | d->m_browser->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); |
| 208 | } else { |
| 209 | d->m_browser->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); |
| 210 | } |
| 211 | |
| 212 | d->m_browser->verticalScrollBar()->setValue(scrollPos); |
| 213 | d->m_browser->scrollToAnchor(QStringLiteral("currentPosition")); |
| 214 | d->m_browser->show(); |
| 215 | } else { |
| 216 | d->m_browser->hide(); |
| 217 | } |
| 218 | |
| 219 | if (d->m_currentWidget) { |
| 220 | layout()->removeWidget(d->m_currentWidget); |
| 221 | d->m_currentWidget->setParent(nullptr); |
| 222 | } |
| 223 | |
| 224 | d->m_currentWidget = d->m_context->widget(); |
| 225 | |
| 226 | d->m_browser->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); |
nothing calls this directly
no test coverage detected