diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/WindowActionRouter.cpp | 44 | ||||
| -rw-r--r-- | src/WindowActionRouter.hpp | 15 | ||||
| -rw-r--r-- | src/widgets/BrowserWindow.cpp | 2 | ||||
| -rw-r--r-- | src/widgets/WebViewStack.cpp | 32 |
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; } |
