void DocumentBrowser::backward() { if (m_backwardStack.count() <= 1) { return; } m_forwardStack.push(createHistoryEntry()); m_backwardStack.pop(); emit requestUrl(m_backwardStack.top().url); emit backwardAvailable(m_backwardStack.count() > 1); emit forwardAvailable(true); }
void DocumentBrowser::forward() { if (m_forwardStack.isEmpty()) { return; } if (!m_backwardStack.isEmpty()) { m_backwardStack.top() = createHistoryEntry(); } m_backwardStack.push(m_forwardStack.pop()); emit requestUrl(m_backwardStack.top().url); emit backwardAvailable(true); emit forwardAvailable(m_forwardStack.count() > 0); }
void DocumentBrowser::scrollToAnchor(const QString &text) { const HistoryEntry &historyEntry = createHistoryEntry(); m_url.setFragment(text); if (text.isEmpty()) { m_htmlWidget->setScrollBarValue(Qt::Horizontal,0); m_htmlWidget->setScrollBarValue(Qt::Vertical,0); } else { m_htmlWidget->scrollToAnchor(text); } m_urlComboBox->blockSignals(true); int index = m_urlComboBox->findText(m_url.toString()); if (index == -1) { m_urlComboBox->addItem(m_url.toString()); index = m_urlComboBox->count()-1; } m_urlComboBox->setCurrentIndex(index); m_urlComboBox->blockSignals(false); emit documentLoaded(); if (!m_backwardStack.isEmpty() && m_url == m_backwardStack.top().url) { //restoreHistoryEntry(m_backwardStack.top()); return; } if (!m_backwardStack.isEmpty()) { m_backwardStack.top() = historyEntry; } HistoryEntry entry; entry.url = m_url; m_backwardStack.push(entry); emit backwardAvailable(m_backwardStack.count() > 1); if (!m_forwardStack.isEmpty() && m_url == m_forwardStack.top().url) { m_forwardStack.pop(); emit forwardAvailable(m_forwardStack.count() > 0); } else { m_forwardStack.clear(); emit forwardAvailable(false); } }
void KonqView::openUrl( const KUrl &url, const QString & locationBarURL, const QString & nameFilter, bool tempFile ) { kDebug() << "url=" << url << "locationBarURL=" << locationBarURL; setPartMimeType(); KParts::OpenUrlArguments args; if ( m_pPart ) args = m_pPart->arguments(); KParts::BrowserExtension *ext = browserExtension(); KParts::BrowserArguments browserArgs; if ( ext ) browserArgs = ext->browserArguments(); // Typing "Enter" again after the URL of an aborted view, triggers a reload. if ( m_bAborted && m_pPart && m_pPart->url() == url && !browserArgs.doPost()) { if ( !prepareReload( args, browserArgs, false /* not softReload */ ) ) return; m_pPart->setArguments( args ); } #ifdef DEBUG_HISTORY kDebug() << "m_bLockedLocation=" << m_bLockedLocation << "browserArgs.lockHistory()=" << browserArgs.lockHistory(); #endif if ( browserArgs.lockHistory() ) lockHistory(); if ( !m_bLockHistory ) { // Store this new URL in the history, removing any existing forward history. // We do this first so that everything is ready if a part calls completed(). createHistoryEntry(); } else m_bLockHistory = false; if ( m_pPart ) m_pPart->setProperty("nameFilter", nameFilter); if ( m_bDisableScrolling ) callExtensionMethod( "disableScrolling" ); // Set location-bar URL, except for error urls, where we know the browser component // will set back the url with the error anyway. if (url.protocol() != "error") setLocationBarURL(locationBarURL); setPageSecurity(KonqMainWindow::NotCrypted); if ( !args.reload() ) { // Save the POST data that is necessary to open this URL // (so that reload can re-post it) m_doPost = browserArgs.doPost(); m_postContentType = browserArgs.contentType(); m_postData = browserArgs.postData; // Save the referrer m_pageReferrer = args.metaData()["referrer"]; } if ( tempFile ) { // Store the path to the tempfile. Yes, we could store a bool only, // but this would be more dangerous. If anything goes wrong in the code, // we might end up deleting a real file. if ( url.isLocalFile() ) m_tempFile = url.toLocalFile(); else kWarning() << "Tempfile option is set, but URL is remote:" << url ; } aboutToOpenURL( url, args ); m_pPart->openUrl( url ); updateHistoryEntry(false /* don't save location bar URL yet */); // add pending history entry KonqHistoryManager::kself()->addPending( url, locationBarURL, QString()); #ifdef DEBUG_HISTORY kDebug() << "Current position:" << historyIndex(); #endif }