From 2ffe15ca52c33e454d7bf0e632fc39752710733f Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Thu, 7 Jun 2012 00:10:34 +0200 Subject: Letting SHIFT + MidClick reverse open new tab settings BUG: 299024 --- src/mainwindow.cpp | 3 +++ src/rekonq_defines.h | 9 ++++--- src/webview.cpp | 71 +++++++++++++++++++++++++++++++++------------------- src/webview.h | 4 +-- 4 files changed, 55 insertions(+), 32 deletions(-) (limited to 'src') 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(); -- cgit v1.2.1