aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/WindowActionRouter.cpp8
-rw-r--r--src/widgets/BrowserWindow.cpp1
-rw-r--r--src/widgets/BrowserWindow.hpp7
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;