mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-04 05:20:30 +00:00
Ladybird: Trigger browser to quit when the main window is closed
This patch adds an event handler to the main window which allows it to respond to a user closing the window. This event is then passed on to the LibCore event loop, which allows the application quit itself. Previously the application would hang, only running in the background, until killed by an external force.
This commit is contained in:
parent
95e3e06a1e
commit
7bf3010185
Notes:
sideshowbarker
2024-07-17 07:43:44 +09:00
Author: https://github.com/ucosty Commit: https://github.com/SerenityOS/serenity/commit/7bf3010185 Pull-request: https://github.com/SerenityOS/serenity/pull/16583 Reviewed-by: https://github.com/ADKaster Reviewed-by: https://github.com/awesomekling ✅ Reviewed-by: https://github.com/linusg
3 changed files with 19 additions and 3 deletions
|
@ -1,8 +1,10 @@
|
|||
#include "BrowserWindow.h"
|
||||
#include "WebView.h"
|
||||
#include <LibCore/EventLoop.h>
|
||||
#include <QStatusBar>
|
||||
|
||||
BrowserWindow::BrowserWindow()
|
||||
BrowserWindow::BrowserWindow(Core::EventLoop& event_loop)
|
||||
: m_event_loop(event_loop)
|
||||
{
|
||||
m_toolbar = new QToolBar;
|
||||
m_location_edit = new QLineEdit;
|
||||
|
@ -39,3 +41,13 @@ void BrowserWindow::page_favicon_changed(QIcon icon)
|
|||
{
|
||||
setWindowIcon(icon);
|
||||
}
|
||||
|
||||
void BrowserWindow::closeEvent(QCloseEvent* event)
|
||||
{
|
||||
QWidget::closeEvent(event);
|
||||
|
||||
// FIXME: Ladybird only supports one window at the moment. When we support
|
||||
// multiple windows, we'll only want to fire off the quit event when
|
||||
// all of the browser windows have closed.
|
||||
m_event_loop.quit(0);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#include <LibCore/Forward.h>
|
||||
#include <QIcon>
|
||||
#include <QLineEdit>
|
||||
#include <QMainWindow>
|
||||
|
@ -10,10 +11,12 @@ class WebView;
|
|||
class BrowserWindow : public QMainWindow {
|
||||
Q_OBJECT
|
||||
public:
|
||||
BrowserWindow();
|
||||
explicit BrowserWindow(Core::EventLoop&);
|
||||
|
||||
WebView& view() { return *m_view; }
|
||||
|
||||
virtual void closeEvent(QCloseEvent*) override;
|
||||
|
||||
public slots:
|
||||
void location_edit_return_pressed();
|
||||
void page_title_changed(QString);
|
||||
|
@ -23,4 +26,5 @@ private:
|
|||
QToolBar* m_toolbar { nullptr };
|
||||
QLineEdit* m_location_edit { nullptr };
|
||||
WebView* m_view { nullptr };
|
||||
Core::EventLoop& m_event_loop;
|
||||
};
|
||||
|
|
|
@ -28,7 +28,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
Core::EventLoop event_loop;
|
||||
|
||||
QApplication app(arguments.argc, arguments.argv);
|
||||
BrowserWindow window;
|
||||
BrowserWindow window(event_loop);
|
||||
window.setWindowTitle("Ladybird");
|
||||
window.resize(800, 600);
|
||||
window.show();
|
||||
|
|
Loading…
Reference in a new issue