diff options
Diffstat (limited to '')
| -rw-r--r-- | src/WindowActionRouter.cpp | 8 | ||||
| -rw-r--r-- | src/widgets/BrowserWindow.cpp | 1 | ||||
| -rw-r--r-- | src/widgets/BrowserWindow.hpp | 7 |
3 files changed, 13 insertions, 3 deletions
diff --git a/src/WindowActionRouter.cpp b/src/WindowActionRouter.cpp index 51fb1af..c04b330 100644 --- a/src/WindowActionRouter.cpp +++ b/src/WindowActionRouter.cpp @@ -63,9 +63,13 @@ void WindowActionRouter::initialize() { } void WindowActionRouter::add_window(BrowserWindow *window) { - window_map.insert({last_id, window}); - window->set_id(last_id); + auto win_id = last_id; last_id++; + + window_map.insert({win_id, window}); + window->set_id(win_id); + connect(window, &BrowserWindow::closed, this, + [this, win_id]() { window_map.erase(win_id); }); } const WindowMap &WindowActionRouter::windows() { return window_map; } diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp index 4eb0ad7..886572e 100644 --- a/src/widgets/BrowserWindow.cpp +++ b/src/widgets/BrowserWindow.cpp @@ -5,7 +5,6 @@ #include "Configuration.hpp" #include "LuaRuntime.hpp" -#include "WindowActionRouter.hpp" #include "WindowMediator.hpp" #include "keymap/KeymapEvaluator.hpp" #include "widgets/BrowserWindow.hpp" diff --git a/src/widgets/BrowserWindow.hpp b/src/widgets/BrowserWindow.hpp index 364aa12..cab7721 100644 --- a/src/widgets/BrowserWindow.hpp +++ b/src/widgets/BrowserWindow.hpp @@ -9,6 +9,8 @@ using WindowId = uint64_t; class BrowserWindow : public QMainWindow { + Q_OBJECT + public: BrowserWindow(const Configuration &configuration); @@ -18,6 +20,11 @@ public: bool on_window_key_event(QKeyEvent *event); + void closeEvent(QCloseEvent * /*event*/) override { emit closed(); } + +signals: + void closed(); + private: WindowMediator *input_mediator; const Configuration &configuration; |
