diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-03-30 19:16:07 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-03-30 19:16:37 +0530 |
| commit | 4f945367ebc8e34263acbfca0416e3f75653924e (patch) | |
| tree | aff34361a2b2160aea284df9b619193917bcbc88 /src/widgets | |
| parent | e690963fb6c0240171236fc2d669f95ee26b6798 (diff) | |
| download | null-browser-4f945367ebc8e34263acbfca0416e3f75653924e.tar.gz null-browser-4f945367ebc8e34263acbfca0416e3f75653924e.zip | |
Update window title on tab change + refactoring
Diffstat (limited to '')
| -rw-r--r-- | src/widgets/BrowserApp.cpp | 14 | ||||
| -rw-r--r-- | src/widgets/BrowserWindow.cpp | 48 | ||||
| -rw-r--r-- | src/widgets/BrowserWindow.hpp | 6 | ||||
| -rw-r--r-- | src/widgets/WebViewStack.cpp | 6 | ||||
| -rw-r--r-- | src/widgets/WebViewStack.hpp | 3 |
5 files changed, 49 insertions, 28 deletions
diff --git a/src/widgets/BrowserApp.cpp b/src/widgets/BrowserApp.cpp index 13d855b..f2d541d 100644 --- a/src/widgets/BrowserApp.cpp +++ b/src/widgets/BrowserApp.cpp @@ -7,24 +7,24 @@ #include "widgets/BrowserWindow.hpp" BrowserApp::BrowserApp() { - auto *lua = LuaRuntime::instance(); - lua->start_event_loop(); + auto &lua = LuaRuntime::instance(); + lua.start_event_loop(); // Router init - auto *router = WindowActionRouter::instance(); - router->initialize(); + auto &router = WindowActionRouter::instance(); + router.initialize(); // Global event filter qApp->installEventFilter(this); // NOTE: TMP - LuaRuntime::instance()->load_file("./config.lua"); + lua.load_file("./config.lua"); }; BrowserWindow *BrowserApp::create_window() { auto *win = new BrowserWindow((const Configuration &)configuration); - WindowActionRouter::instance()->add_window(win); win->setWindowTitle("null-browser"); + WindowActionRouter::instance().add_window(win); win->show(); return win; } @@ -33,7 +33,7 @@ bool BrowserApp::eventFilter(QObject *target, QEvent *event) { if (event->type() != QEvent::KeyPress) return false; - for (const auto &match : WindowActionRouter::instance()->windows()) { + for (const auto &match : WindowActionRouter::instance().windows()) { auto *win = match.second; if (auto *target_widget = dynamic_cast<QWidget *>(target); diff --git a/src/widgets/BrowserWindow.cpp b/src/widgets/BrowserWindow.cpp index 886572e..e38f234 100644 --- a/src/widgets/BrowserWindow.cpp +++ b/src/widgets/BrowserWindow.cpp @@ -26,35 +26,47 @@ BrowserWindow::BrowserWindow(const Configuration &configuration) new WebViewStack(&configuration, new QWebEngineProfile("null-browser")); layout->addWidget(web_view_stack); - auto *keymap_evaluator = KeymapEvaluator::instance(); + auto &keymap_evaluator = KeymapEvaluator::instance(); // TODO: remove - keymap_evaluator->add_keymap(KeyMode::Normal, "i", [keymap_evaluator]() { - keymap_evaluator->set_current_mode(KeyMode::Insert); + keymap_evaluator.add_keymap(KeyMode::Normal, "i", [&keymap_evaluator]() { + keymap_evaluator.set_current_mode(KeyMode::Insert); }); - keymap_evaluator->add_keymap(KeyMode::Insert, "<esc>", [keymap_evaluator]() { - keymap_evaluator->set_current_mode(KeyMode::Normal); + keymap_evaluator.add_keymap(KeyMode::Insert, "<esc>", [&keymap_evaluator]() { + keymap_evaluator.set_current_mode(KeyMode::Normal); }); - keymap_evaluator->add_keymap(KeyMode::Normal, "<c-t>a", - []() { qDebug() << "Stuff"; }); + keymap_evaluator.add_keymap(KeyMode::Normal, "<c-t>a", + []() { qDebug() << "Stuff"; }); - input_mediator = new WindowMediator(web_view_stack); + win_mediator = new WindowMediator(web_view_stack); - auto *lua = LuaRuntime::instance(); - lua->queue_task([this]() { - emit input_mediator->url_opened("https://github.com/phenax/null-browser", - OpenType::OpenUrl, 0); - emit input_mediator->url_opened("https://ediblemonad.dev", - OpenType::OpenUrlInBgTab, 0); - emit input_mediator->url_opened("https://github.com/trending", - OpenType::OpenUrlInBgTab, 0); + connect(web_view_stack, &WebViewStack::current_webview_changed, this, + [this](int index) { + auto webviews = win_mediator->get_webview_list(); + if (index >= 0 && index < webviews.count()) { + const auto &webview = webviews.at(index); + setWindowTitle(webview.title); + } + }); + + // TODO: remove + auto &lua = LuaRuntime::instance(); + lua.queue_task([this]() { + emit win_mediator->url_opened("https://github.com/phenax/null-browser", + OpenType::OpenUrl, 0); + emit win_mediator->url_opened("https://ediblemonad.dev", + OpenType::OpenUrlInBgTab, 0); + emit win_mediator->url_opened("https://github.com/trending", + OpenType::OpenUrlInBgTab, 0); }); } +void BrowserWindow::closeEvent(QCloseEvent * /*event*/) { emit closed(); } + bool BrowserWindow::on_window_key_event(QKeyEvent *event) { - auto *keymap_evaluator = KeymapEvaluator::instance(); + auto &keymap_evaluator = KeymapEvaluator::instance(); const bool should_skip = - keymap_evaluator->evaluate(event->modifiers(), (Qt::Key)event->key()); + keymap_evaluator.evaluate(event->modifiers(), (Qt::Key)event->key()); return should_skip; } diff --git a/src/widgets/BrowserWindow.hpp b/src/widgets/BrowserWindow.hpp index cab7721..9aeeda3 100644 --- a/src/widgets/BrowserWindow.hpp +++ b/src/widgets/BrowserWindow.hpp @@ -14,19 +14,19 @@ class BrowserWindow : public QMainWindow { public: BrowserWindow(const Configuration &configuration); - DEFINE_GETTER(mediator, input_mediator) + DEFINE_GETTER(mediator, win_mediator) DEFINE_GETTER(get_id, win_id) DEFINE_SETTER(set_id, win_id) bool on_window_key_event(QKeyEvent *event); - void closeEvent(QCloseEvent * /*event*/) override { emit closed(); } + void closeEvent(QCloseEvent * /*event*/) override; signals: void closed(); private: - WindowMediator *input_mediator; + WindowMediator *win_mediator; const Configuration &configuration; WindowId win_id = -1; diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp index f01b75c..6de170a 100644 --- a/src/widgets/WebViewStack.cpp +++ b/src/widgets/WebViewStack.cpp @@ -17,6 +17,9 @@ WebViewStack::WebViewStack(const Configuration *configuration, layout->setContentsMargins(0, 0, 0, 0); layout->setStackingMode(QStackedLayout::StackOne); + connect(layout, &QStackedLayout::currentChanged, this, + &WebViewStack::current_webview_changed); + create_new_webview(configuration->new_tab_url, true); } @@ -50,6 +53,8 @@ WebView *WebViewStack::create_new_webview(const QUrl &url, bool focus) { if (focus) focus_webview(webview->get_id()); + emit current_webview_changed(layout->currentIndex()); + return webview; } @@ -116,6 +121,7 @@ void WebViewStack::close(WebViewId webview_id) { // TODO: Close window on empty if (webview_list.isEmpty()) { + // window()->close(); create_new_webview(configuration->new_tab_url, true); } } diff --git a/src/widgets/WebViewStack.hpp b/src/widgets/WebViewStack.hpp index 40c2184..0f0d923 100644 --- a/src/widgets/WebViewStack.hpp +++ b/src/widgets/WebViewStack.hpp @@ -45,6 +45,9 @@ public: /// @deprecated TODO: Remove uint32_t current_webview_index(); +signals: + void current_webview_changed(int index); + protected: void set_current_url(const QUrl &url); WebView *create_new_webview(const QUrl &url, bool focus = false); |
