aboutsummaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/BrowserApp.cpp10
-rw-r--r--src/widgets/BrowserApp.hpp2
-rw-r--r--src/widgets/BrowserWindow.cpp11
-rw-r--r--src/widgets/BrowserWindow.hpp3
-rw-r--r--src/widgets/WebViewStack.cpp4
-rw-r--r--src/widgets/WebViewStack.hpp1
6 files changed, 20 insertions, 11 deletions
diff --git a/src/widgets/BrowserApp.cpp b/src/widgets/BrowserApp.cpp
index d65a122..2ab47c2 100644
--- a/src/widgets/BrowserApp.cpp
+++ b/src/widgets/BrowserApp.cpp
@@ -11,17 +11,21 @@ BrowserApp::BrowserApp() {
lua.start_event_loop();
// Router init
- WindowActionRouter::instance().initialize();
+ auto &window_action_router = WindowActionRouter::instance();
+ window_action_router.initialize();
// Global event filter
qApp->installEventFilter(this);
// NOTE: TMP
lua.load_file("./config.lua");
+
+ connect(&window_action_router, &WindowActionRouter::new_window_requested,
+ this, [this](const QUrl &url) { create_window(url.toString()); });
};
-BrowserWindow *BrowserApp::create_window() {
- auto *window = new BrowserWindow((const Configuration &)configuration);
+BrowserWindow *BrowserApp::create_window(const QString &url) {
+ auto *window = new BrowserWindow((const Configuration &)configuration, url);
window->setWindowTitle("null-browser");
WindowActionRouter::instance().add_window(window);
window->show();
diff --git a/src/widgets/BrowserApp.hpp b/src/widgets/BrowserApp.hpp
index f124a71..b20d710 100644
--- a/src/widgets/BrowserApp.hpp
+++ b/src/widgets/BrowserApp.hpp
@@ -8,7 +8,7 @@ class BrowserApp : public QObject {
public:
BrowserApp();
- BrowserWindow *create_window();
+ BrowserWindow *create_window(const QString &url = "");
protected:
bool eventFilter(QObject *target, QEvent *event) override;
diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp
index e38f234..701167f 100644
--- a/src/widgets/BrowserWindow.cpp
+++ b/src/widgets/BrowserWindow.cpp
@@ -10,7 +10,8 @@
#include "widgets/BrowserWindow.hpp"
#include "widgets/WebViewStack.hpp"
-BrowserWindow::BrowserWindow(const Configuration &configuration)
+BrowserWindow::BrowserWindow(const Configuration &configuration,
+ const QString &start_url)
: configuration(configuration) {
setCentralWidget(new QWidget());
@@ -51,9 +52,11 @@ BrowserWindow::BrowserWindow(const Configuration &configuration)
// TODO: remove
auto &lua = LuaRuntime::instance();
- lua.queue_task([this]() {
- emit win_mediator->url_opened("https://github.com/phenax/null-browser",
- OpenType::OpenUrl, 0);
+ lua.queue_task([this, start_url]() {
+ auto def_url = start_url.isEmpty()
+ ? "https://github.com/phenax/null-browser"
+ : start_url;
+ emit win_mediator->url_opened(def_url, OpenType::OpenUrlInTab, 0);
emit win_mediator->url_opened("https://ediblemonad.dev",
OpenType::OpenUrlInBgTab, 0);
emit win_mediator->url_opened("https://github.com/trending",
diff --git a/src/widgets/BrowserWindow.hpp b/src/widgets/BrowserWindow.hpp
index 4865ec9..db3c181 100644
--- a/src/widgets/BrowserWindow.hpp
+++ b/src/widgets/BrowserWindow.hpp
@@ -12,7 +12,8 @@ class BrowserWindow : public QMainWindow {
Q_OBJECT
public:
- BrowserWindow(const Configuration &configuration);
+ BrowserWindow(const Configuration &configuration,
+ const QString &start_url = "");
DEFINE_GETTER(mediator, win_mediator)
DEFINE_GETTER(get_id, win_id)
diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp
index 6de170a..10aa6b8 100644
--- a/src/widgets/WebViewStack.cpp
+++ b/src/widgets/WebViewStack.cpp
@@ -69,6 +69,7 @@ QList<WebViewData> WebViewStack::get_webview_list() {
void WebViewStack::on_new_webview_request(
const QWebEngineNewWindowRequest &request) {
+ qDebug() << request.destination();
switch (request.destination()) {
case QWebEngineNewWindowRequest::InNewTab:
create_new_webview(request.requestedUrl(), true);
@@ -78,8 +79,7 @@ void WebViewStack::on_new_webview_request(
break;
case QWebEngineNewWindowRequest::InNewWindow:
case QWebEngineNewWindowRequest::InNewDialog:
- // TODO: Impl
- create_new_webview(request.requestedUrl(), true);
+ emit new_window_requested(request.requestedUrl());
break;
}
}
diff --git a/src/widgets/WebViewStack.hpp b/src/widgets/WebViewStack.hpp
index 0f0d923..67d443f 100644
--- a/src/widgets/WebViewStack.hpp
+++ b/src/widgets/WebViewStack.hpp
@@ -47,6 +47,7 @@ public:
signals:
void current_webview_changed(int index);
+ void new_window_requested(const QUrl &url);
protected:
void set_current_url(const QUrl &url);