bool WebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type) { // ctrl open in new tab // ctrl-shift open in new tab and select // ctrl-alt open in new window if (type == QWebPage::NavigationTypeLinkClicked && (m_keyboardModifiers & Qt::ControlModifier || m_pressedButtons == Qt::MidButton)) { bool newWindow = (m_keyboardModifiers & Qt::AltModifier); WebView *webView; if (newWindow) { BrowserApplication::instance()->newMainWindow(); BrowserMainWindow *newMainWindow = BrowserApplication::instance()->mainWindow(); webView = newMainWindow->currentTab(); newMainWindow->raise(); newMainWindow->activateWindow(); webView->setFocus(); } else { bool selectNewTab = (m_keyboardModifiers & Qt::ShiftModifier); webView = mainWindow()->tabWidget()->makeNewTab(selectNewTab); } webView->loadUrl(request); m_keyboardModifiers = Qt::NoModifier; m_pressedButtons = Qt::NoButton; return false; } if (frame == mainFrame()) { m_loadingUrl = request.url(); emit loadingUrl(m_loadingUrl); } return QWebPage::acceptNavigationRequest(frame, request, type); }
/*! Any actions that can be delayed until the window is visible */ void BrowserApplication::postLaunch() { QString directory = QDesktopServices::storageLocation(QDesktopServices::DataLocation); if (directory.isEmpty()) directory = QDir::homePath() + QLatin1String("/.") + QCoreApplication::applicationName(); QWebSettings::setIconDatabasePath(directory); setWindowIcon(QIcon(QLatin1String(":128x128/arora.png"))); loadSettings(); // newMainWindow() needs to be called in main() for this to happen if (m_mainWindows.count() > 0) { QSettings settings; settings.beginGroup(QLatin1String("MainWindow")); int startup = settings.value(QLatin1String("startupBehavior")).toInt(); QStringList args = QCoreApplication::arguments(); if (args.count() > 1) { switch (startup) { case 2: { restoreLastSession(); WebView *webView = mainWindow()->tabWidget()->makeNewTab(true); webView->loadUrl(args.last()); break; } default: mainWindow()->loadPage(args.last()); break; } } else { switch (startup) { case 0: mainWindow()->slotHome(); break; case 1: break; case 2: restoreLastSession(); break; } } } BrowserApplication::historyManager(); }