mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-24 12:46:35 +01:00
Fixed issue when history & url haven't been updated sometimes.
- workarounded QtWebKit bug: it didn't emit urlChanged signal closes #358
This commit is contained in:
parent
a554d48e45
commit
1744eb759e
@ -217,11 +217,12 @@ void LocationBar::showUrl(const QUrl &url)
|
||||
stringUrl = "";
|
||||
}
|
||||
|
||||
if (url.toEncoded() != text()) {
|
||||
setText(stringUrl);
|
||||
if (stringUrl == text()) {
|
||||
return;
|
||||
}
|
||||
|
||||
p_QupZilla->statusBarMessage()->clearMessage();
|
||||
setText(stringUrl);
|
||||
|
||||
hideGoButton();
|
||||
m_bookmarkIcon->checkBookmark(url);
|
||||
}
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "pluginproxy.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QTimer>
|
||||
#include <QDesktopServices>
|
||||
#include <QNetworkRequest>
|
||||
#include <QWebHistory>
|
||||
@ -53,7 +54,6 @@ WebView::WebView(QWidget* parent)
|
||||
connect(this, SIGNAL(loadStarted()), this, SLOT(slotLoadStarted()));
|
||||
connect(this, SIGNAL(loadProgress(int)), this, SLOT(slotLoadProgress(int)));
|
||||
connect(this, SIGNAL(loadFinished(bool)), this, SLOT(slotLoadFinished()));
|
||||
|
||||
connect(this, SIGNAL(iconChanged()), this, SLOT(slotIconChanged()));
|
||||
|
||||
// Zoom levels same as in firefox
|
||||
@ -98,7 +98,7 @@ QString WebView::title() const
|
||||
|
||||
QUrl WebView::url() const
|
||||
{
|
||||
QUrl returnUrl = QWebView::url();
|
||||
QUrl returnUrl = page()->mainFrame()->baseUrl();
|
||||
|
||||
if (returnUrl.isEmpty()) {
|
||||
returnUrl = m_aboutToLoadUrl;
|
||||
@ -112,6 +112,8 @@ void WebView::setPage(QWebPage* page)
|
||||
QWebView::setPage(page);
|
||||
|
||||
setZoom(WebViewSettings::defaultZoom);
|
||||
|
||||
connect(page, SIGNAL(saveFrameStateRequested(QWebFrame*,QWebHistoryItem*)), this, SLOT(frameStateChanged()));
|
||||
}
|
||||
|
||||
void WebView::load(const QUrl &url)
|
||||
@ -310,6 +312,17 @@ void WebView::slotLoadFinished()
|
||||
m_lastUrl = url();
|
||||
}
|
||||
|
||||
void WebView::frameStateChanged()
|
||||
{
|
||||
// QWebFrame::baseUrl() is not updated yet, so we are invoking 0 second timer
|
||||
QTimer::singleShot(0, this, SLOT(emitChangedUrl()));
|
||||
}
|
||||
|
||||
void WebView::emitChangedUrl()
|
||||
{
|
||||
emit urlChanged(url());
|
||||
}
|
||||
|
||||
void WebView::slotIconChanged()
|
||||
{
|
||||
m_siteIcon = icon();
|
||||
@ -437,7 +450,7 @@ void WebView::openUrlInBackgroundTab()
|
||||
|
||||
void WebView::loadClickedFrame()
|
||||
{
|
||||
QUrl frameUrl = m_clickedFrame->url();
|
||||
QUrl frameUrl = m_clickedFrame->baseUrl();
|
||||
if (frameUrl.isEmpty()) {
|
||||
frameUrl = m_clickedFrame->requestedUrl();
|
||||
}
|
||||
@ -447,7 +460,7 @@ void WebView::loadClickedFrame()
|
||||
|
||||
void WebView::loadClickedFrameInNewTab()
|
||||
{
|
||||
QUrl frameUrl = m_clickedFrame->url();
|
||||
QUrl frameUrl = m_clickedFrame->baseUrl();
|
||||
if (frameUrl.isEmpty()) {
|
||||
frameUrl = m_clickedFrame->requestedUrl();
|
||||
}
|
||||
@ -457,7 +470,7 @@ void WebView::loadClickedFrameInNewTab()
|
||||
|
||||
void WebView::reloadClickedFrame()
|
||||
{
|
||||
QUrl frameUrl = m_clickedFrame->url();
|
||||
QUrl frameUrl = m_clickedFrame->baseUrl();
|
||||
if (frameUrl.isEmpty()) {
|
||||
frameUrl = m_clickedFrame->requestedUrl();
|
||||
}
|
||||
|
@ -53,7 +53,6 @@ public:
|
||||
signals:
|
||||
void viewportResized(QSize);
|
||||
void showNotification(QWidget*);
|
||||
void iconChanged();
|
||||
|
||||
public slots:
|
||||
void zoomIn();
|
||||
@ -134,6 +133,8 @@ protected:
|
||||
private slots:
|
||||
void pauseMedia();
|
||||
void muteMedia();
|
||||
void frameStateChanged();
|
||||
void emitChangedUrl();
|
||||
|
||||
private:
|
||||
QList<int> m_zoomLevels;
|
||||
|
Loading…
Reference in New Issue
Block a user