aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/WindowActionRouter.cpp44
-rw-r--r--src/WindowActionRouter.hpp15
-rw-r--r--src/widgets/BrowserWindow.cpp2
-rw-r--r--src/widgets/WebViewStack.cpp32
4 files changed, 47 insertions, 46 deletions
diff --git a/src/WindowActionRouter.cpp b/src/WindowActionRouter.cpp
index 8c80290..c1051ad 100644
--- a/src/WindowActionRouter.cpp
+++ b/src/WindowActionRouter.cpp
@@ -12,21 +12,18 @@
void WindowActionRouter::initialize() {
auto &runtime = LuaRuntime::instance();
- connect(&runtime, &LuaRuntime::keymap_added, this,
- &WindowActionRouter::add_keymap);
+ connect(&runtime, &LuaRuntime::keymap_added, this, &WindowActionRouter::add_keymap);
connect(&runtime, &LuaRuntime::history_back_requested, this,
[this](WebViewId webview_id, qsizetype history_index) {
WITH_WEBVIEW_WINDOW(webview_id, window, {
- emit window->mediator()->history_back_requested(webview_id,
- history_index);
+ emit window->mediator()->history_back_requested(webview_id, history_index);
});
});
connect(&runtime, &LuaRuntime::history_forward_requested, this,
[this](WebViewId webview_id, qsizetype history_index) {
WITH_WEBVIEW_WINDOW(webview_id, window, {
- emit window->mediator()->history_forward_requested(webview_id,
- history_index);
+ emit window->mediator()->history_forward_requested(webview_id, history_index);
});
});
connect(&runtime, &LuaRuntime::url_opened, this,
@@ -35,18 +32,14 @@ void WindowActionRouter::initialize() {
emit window->mediator()->url_opened(url, open_type, webview_id);
});
});
- connect(&runtime, &LuaRuntime::webview_closed, this,
- [this](WebViewId webview_id) {
- WITH_WEBVIEW_WINDOW(webview_id, window, {
- emit window->mediator()->webview_closed(webview_id);
- });
- });
- connect(&runtime, &LuaRuntime::webview_selected, this,
- [this](WebViewId webview_id) {
- WITH_WEBVIEW_WINDOW(webview_id, window, {
- emit window->mediator()->webview_selected(webview_id);
- });
- });
+ connect(&runtime, &LuaRuntime::webview_closed, this, [this](WebViewId webview_id) {
+ WITH_WEBVIEW_WINDOW(webview_id, window,
+ { emit window->mediator()->webview_closed(webview_id); });
+ });
+ connect(&runtime, &LuaRuntime::webview_selected, this, [this](WebViewId webview_id) {
+ WITH_WEBVIEW_WINDOW(webview_id, window,
+ { emit window->mediator()->webview_selected(webview_id); });
+ });
}
void WindowActionRouter::add_window(BrowserWindow *window) {
@@ -55,16 +48,14 @@ void WindowActionRouter::add_window(BrowserWindow *window) {
window_map.insert({win_id, window});
window->set_id(win_id);
- connect(window, &BrowserWindow::closed, this,
- [this, win_id]() { window_map.erase(win_id); });
+ connect(window, &BrowserWindow::closed, this, [this, win_id]() { window_map.erase(win_id); });
connect(window->mediator(), &WindowMediator::new_window_requested, this,
&WindowActionRouter::new_window_requested);
}
const WindowMap &WindowActionRouter::windows() { return window_map; }
-void WindowActionRouter::add_keymap(const QString &mode_string,
- const QString &keyseq,
+void WindowActionRouter::add_keymap(const QString &mode_string, const QString &keyseq,
std::function<void()> action) {
auto &keymap_evaluator = KeymapEvaluator::instance();
const KeyMode mode = keymap_evaluator.mode_from_string(mode_string);
@@ -74,8 +65,7 @@ void WindowActionRouter::add_keymap(const QString &mode_string,
WebViewId WindowActionRouter::fetch_current_tab_id(WindowId win_id) {
for (auto &pair : window_map) {
auto *win = pair.second;
- auto is_current_window =
- win_id == win->get_id() || (win_id == 0 && win->isActiveWindow());
+ auto is_current_window = win_id == win->get_id() || (win_id == 0 && win->isActiveWindow());
if (is_current_window) {
return win->mediator()->current_webview_id();
}
@@ -83,12 +73,10 @@ WebViewId WindowActionRouter::fetch_current_tab_id(WindowId win_id) {
return 0;
}
-QList<WebViewData>
-WindowActionRouter::fetch_webview_data_list(WindowId win_id) {
+QList<WebViewData> WindowActionRouter::fetch_webview_data_list(WindowId win_id) {
for (auto &pair : window_map) {
auto *win = pair.second;
- auto is_current_window =
- win_id == win->get_id() || (win_id == 0 && win->isActiveWindow());
+ auto is_current_window = win_id == win->get_id() || (win_id == 0 && win->isActiveWindow());
if (is_current_window) {
return win->mediator()->get_webview_list();
}
diff --git a/src/WindowActionRouter.hpp b/src/WindowActionRouter.hpp
index b72734c..c72aaaf 100644
--- a/src/WindowActionRouter.hpp
+++ b/src/WindowActionRouter.hpp
@@ -9,12 +9,12 @@
#include "widgets/BrowserWindow.hpp"
#include "widgets/WebViewStack.hpp"
-#define WITH_WEBVIEW_WINDOW(WEBVIEW_ID, IDENT, BLOCK) \
- for (auto &win_match : window_map) { \
- auto *IDENT = win_match.second; \
- if (IDENT->mediator()->has_webview(WEBVIEW_ID)) { \
- BLOCK; \
- } \
+#define WITH_WEBVIEW_WINDOW(WEBVIEW_ID, IDENT, BLOCK) \
+ for (auto &win_match : window_map) { \
+ auto *IDENT = win_match.second; \
+ if (IDENT->mediator()->has_webview(WEBVIEW_ID)) { \
+ BLOCK; \
+ } \
}
class WindowActionRouter : public QWidget {
@@ -40,8 +40,7 @@ public:
protected:
WindowActionRouter() = default;
- void add_keymap(const QString &mode_string, const QString &keyseq,
- std::function<void()> action);
+ void add_keymap(const QString &mode_string, const QString &keyseq, std::function<void()> action);
signals:
void new_window_requested(const QUrl &url);
diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp
index 2867379..aad551d 100644
--- a/src/widgets/BrowserWindow.cpp
+++ b/src/widgets/BrowserWindow.cpp
@@ -26,7 +26,7 @@ BrowserWindow::BrowserWindow(const Configuration &configuration, const QStringLi
// Open webviews for given urls
if (urls.isEmpty()) {
- webview_stack->open_url(configuration.new_tab_url.toString(), OpenType::OpenUrlInTab);
+ webview_stack->open_url(configuration.new_tab_url.toString());
} else {
for (const auto &url : urls) {
webview_stack->open_url(url, OpenType::OpenUrlInTab);
diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp
index f5e9765..ae95ea6 100644
--- a/src/widgets/WebViewStack.cpp
+++ b/src/widgets/WebViewStack.cpp
@@ -35,7 +35,7 @@ void WebViewStack::open_url(const QUrl &url, OpenType open_type, WebViewId webvi
create_new_webview(url, false);
break;
case OpenType::OpenUrlInWindow:
- create_new_webview(url, true);
+ emit new_window_requested(url);
break;
}
}
@@ -68,20 +68,23 @@ WebView *WebViewStack::create_new_webview(const QUrl &url, bool focus) {
QList<WebViewData> WebViewStack::get_webview_list() {
QList<WebViewData> urls;
- for (auto &view : webview_list)
- urls.append(
- WebViewData{.id = view->get_id(), .url = view->url().toString(), .title = view->title()});
+ for (auto &view : webview_list) {
+ urls.append(WebViewData{
+ .id = view->get_id(),
+ .url = view->url().toString(),
+ .title = view->title(),
+ });
+ }
return urls;
}
void WebViewStack::on_new_webview_request(const QWebEngineNewWindowRequest &request) {
- qDebug() << request.destination();
switch (request.destination()) {
case QWebEngineNewWindowRequest::InNewTab:
- create_new_webview(request.requestedUrl(), true);
+ open_url(request.requestedUrl(), OpenType::OpenUrlInTab);
break;
case QWebEngineNewWindowRequest::InNewBackgroundTab:
- create_new_webview(request.requestedUrl(), false);
+ open_url(request.requestedUrl(), OpenType::OpenUrlInBgTab);
break;
case QWebEngineNewWindowRequest::InNewWindow:
case QWebEngineNewWindowRequest::InNewDialog:
@@ -202,13 +205,18 @@ QUrl WebViewStack::current_url() {
auto *webview = current_webview();
if (webview == nullptr) {
qDebug() << "No current webview";
- return QUrl{};
+ return configuration->new_tab_url;
}
return webview->url();
}
void WebViewStack::set_current_url(const QUrl &url) {
+ if (count() == 0) {
+ create_new_webview(url, true);
+ return;
+ }
+
auto *webview = current_webview();
if (webview == nullptr) {
qDebug() << "No current webview";
@@ -217,10 +225,16 @@ void WebViewStack::set_current_url(const QUrl &url) {
webview->setUrl(url);
}
+
void WebViewStack::set_webview_url(const QUrl &url, WebViewId webview_id) {
+ if (webview_id == 0) {
+ set_current_url(url);
+ return;
+ }
+
auto *webview = get_webview(webview_id);
if (webview == nullptr) {
- qDebug() << "No current webview";
+ qDebug() << "Webview does not exist";
return;
}