summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainwindow.cpp3
-rw-r--r--src/rekonq_defines.h9
-rw-r--r--src/webview.cpp71
-rw-r--r--src/webview.h4
4 files changed, 55 insertions, 32 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 7553a424..e0fdf255 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -1630,6 +1630,9 @@ void MainWindow::loadCheckedUrl(const KUrl& url, const Rekonq::OpenType& type, Q
case Rekonq::NewFocusedTab:
tab = mainView()->newWebTab(true);
break;
+ case Rekonq::NewBackGroundTab:
+ tab = mainView()->newWebTab(false);
+ break;
case Rekonq::NewWindow:
rApp->loadUrl(url, type);
return;
diff --git a/src/rekonq_defines.h b/src/rekonq_defines.h
index 0a60e658..e01fa964 100644
--- a/src/rekonq_defines.h
+++ b/src/rekonq_defines.h
@@ -84,10 +84,11 @@ enum Notify
*/
enum OpenType
{
- CurrentTab, ///< open url in current tab
- NewTab, ///< open url according to users settings
- NewFocusedTab, ///< open url in new tab and focus it
- NewWindow ///< open url in new window
+ CurrentTab, ///< open url in current tab
+ NewTab, ///< open url according to users settings
+ NewFocusedTab, ///< open url in new tab and focus it
+ NewBackGroundTab, ///< open url in new background tab
+ NewWindow ///< open url in new window
};
/**
diff --git a/src/webview.cpp b/src/webview.cpp
index 65295294..b592335c 100644
--- a/src/webview.cpp
+++ b/src/webview.cpp
@@ -81,15 +81,8 @@ WebView::WebView(QWidget* parent)
, m_accessKeysPressed(false)
, m_accessKeysActive(false)
{
- // download system
- connect(this, SIGNAL(linkShiftClicked(KUrl)), page(), SLOT(downloadUrl(KUrl)));
-
- // middle click || ctrl + click signal
- connect(this, SIGNAL(linkMiddleOrCtrlClicked(KUrl)), this, SLOT(loadUrlInNewTab(KUrl)));
-
// loadUrl signal
- connect(this, SIGNAL(loadUrl(KUrl, Rekonq::OpenType)),
- rApp, SLOT(loadUrl(KUrl, Rekonq::OpenType)));
+ connect(this, SIGNAL(loadUrl(KUrl, Rekonq::OpenType)), rApp, SLOT(loadUrl(KUrl, Rekonq::OpenType)));
// Auto scroll timer
connect(m_autoScrollTimer, SIGNAL(timeout()), this, SLOT(scrollFrameChanged()));
@@ -475,6 +468,7 @@ void WebView::mousePressEvent(QMouseEvent *event)
default:
break;
};
+
KWebView::mousePressEvent(event);
}
@@ -906,24 +900,6 @@ void WebView::inspect()
}
-void WebView::loadUrlInNewTab(const KUrl &u)
-{
- QNetworkRequest req(u);
- req.setRawHeader(QByteArray("Referer"), url().toEncoded());
-
- WebTab *w = 0;
- if (ReKonfig::openLinksInNewWindow())
- {
- w = rApp->newMainWindow()->mainView()->currentWebTab();
- }
- else
- {
- w = rApp->mainWindow()->mainView()->newWebTab(!ReKonfig::openNewTabsInBackground());
- }
- w->view()->load(req);
-}
-
-
void WebView::scrollFrameChanged()
{
// do the scrolling
@@ -1234,3 +1210,46 @@ void WebView::blockImage()
QString imageUrl = action->data().toString();
rApp->adblockManager()->addCustomRule(imageUrl);
}
+
+
+void WebView::mouseReleaseEvent(QMouseEvent *event)
+{
+ QWebHitTestResult hitTest = page()->mainFrame()->hitTestContent(event->pos());
+ const QUrl url = hitTest.linkUrl();
+
+ if (!url.isEmpty())
+ {
+ if (event->button() & Qt::MidButton)
+ {
+ if (event->modifiers() & Qt::ShiftModifier)
+ {
+ if (ReKonfig::openNewTabsInBackground())
+ emit loadUrl(url, Rekonq::NewFocusedTab);
+ else
+ emit loadUrl(url, Rekonq::NewBackGroundTab);
+ event->accept();
+ return;
+ }
+
+ emit loadUrl(url, Rekonq::NewTab);
+ event->accept();
+ return;
+ }
+
+ if ((event->button() & Qt::LeftButton) && (event->modifiers() & Qt::ControlModifier))
+ {
+ emit loadUrl(url, Rekonq::NewTab);
+ event->accept();
+ return;
+ }
+
+ if ((event->button() & Qt::LeftButton) && (event->modifiers() & Qt::ShiftModifier))
+ {
+ page()->downloadUrl(url);
+ event->accept();
+ return;
+ }
+ }
+
+ QWebView::mouseReleaseEvent(event);
+}
diff --git a/src/webview.h b/src/webview.h
index f789e354..bfc46135 100644
--- a/src/webview.h
+++ b/src/webview.h
@@ -69,8 +69,9 @@ public:
protected:
void contextMenuEvent(QContextMenuEvent *event);
- void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
+ void mousePressEvent(QMouseEvent *event);
+ void mouseReleaseEvent(QMouseEvent *event);
void keyPressEvent(QKeyEvent *event);
void keyReleaseEvent(QKeyEvent *event);
@@ -88,7 +89,6 @@ private Q_SLOTS:
void printFrame();
- void loadUrlInNewTab(const KUrl &);
void openLinkInNewWindow();
void openLinkInNewTab();
void bookmarkLink();