diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-08-17 14:25:45 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-08-17 14:25:45 +0530 |
| commit | 98f3281256e6ff435c67d83c6895fff5841b70be (patch) | |
| tree | 6b05a448b8d049de130ac7dbe24baef0e7a1fc81 /src/WindowActionRouter.cpp | |
| parent | b16d38df05cd80aac209f42bfcb47971c62227e6 (diff) | |
| download | null-browser-98f3281256e6ff435c67d83c6895fff5841b70be.tar.gz null-browser-98f3281256e6ff435c67d83c6895fff5841b70be.zip | |
Use view for filtering window actions + window action router spec
Diffstat (limited to 'src/WindowActionRouter.cpp')
| -rw-r--r-- | src/WindowActionRouter.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/WindowActionRouter.cpp b/src/WindowActionRouter.cpp index 7971024..8231fa0 100644 --- a/src/WindowActionRouter.cpp +++ b/src/WindowActionRouter.cpp @@ -160,8 +160,6 @@ void WindowActionRouter::add_window(BrowserWindow *window) { &WindowActionRouter::new_window_requested); } -const WindowMap &WindowActionRouter::windows() { return window_map; } - void WindowActionRouter::add_keymap(const QString &mode_string, const QString &keyseq, std::function<void()> action) { auto &keymap_evaluator = KeymapEvaluator::instance(); @@ -199,20 +197,31 @@ std::optional<WebViewId> WindowActionRouter::fetch_get_decoration_view_id(Decora } std::vector<BrowserWindow *> -WindowActionRouter::get_relevant_windows(std::optional<WindowId> win_id) { +WindowActionRouter::get_relevant_windows(std::optional<WindowId> win_id, + std::optional<WebViewId> view_id) { const std::lock_guard<std::mutex> lock(window_map_mutex); std::vector<BrowserWindow *> windows; if (!win_id.has_value()) { - for (auto &win_pair : window_map) - windows.push_back(win_pair.second); - } else if (win_id.value() == 0) { for (auto &win_pair : window_map) { - if (win_pair.second->isActiveWindow()) + // TODO: If view is 0, use active window + if (!view_id.has_value() || win_pair.second->has_webview(view_id.value())) { windows.push_back(win_pair.second); + } + } + } else if (win_id.value() == 0) { + for (auto &win_pair : window_map) { + if (win_pair.second->isActiveWindow()) { + if (!view_id.has_value() || win_pair.second->has_webview(view_id.value())) { + windows.push_back(win_pair.second); + } + } } } else if (win_id.value() > 0 && window_map.contains(win_id.value())) { - windows.push_back(window_map.at(win_id.value())); + auto *win = window_map.at(win_id.value()); + if (!view_id.has_value() || win->has_webview(view_id.value())) { + windows.push_back(win); + } } return windows; |
