mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 12:48:10 +00:00
Notification: Prevent showing a closed window
If a notification was closed, the connection will now be dead. To prevent inconsistencies between when a user closes a notification and when an application closes an applicated, check if the notification has been closed before allowing any action.
This commit is contained in:
parent
0fd1e6f062
commit
147a2c4ca2
2 changed files with 18 additions and 1 deletions
|
@ -40,12 +40,17 @@ public:
|
|||
send_sync<Messages::NotificationServer::Greet>();
|
||||
}
|
||||
|
||||
virtual void die() override { m_connected = false; }
|
||||
|
||||
bool is_connected() const { return m_connected; }
|
||||
|
||||
private:
|
||||
NotificationServerConnection()
|
||||
: IPC::ServerConnection<NotificationClientEndpoint, NotificationServerEndpoint>(*this, "/tmp/portal/notify")
|
||||
{
|
||||
}
|
||||
virtual void handle(const Messages::NotificationClient::Dummy&) override { }
|
||||
bool m_connected { true };
|
||||
};
|
||||
|
||||
Notification::Notification()
|
||||
|
@ -60,15 +65,26 @@ Notification::~Notification()
|
|||
void Notification::show()
|
||||
{
|
||||
VERIFY(!m_showing);
|
||||
VERIFY(!m_disposed);
|
||||
if (!m_connection->is_connected()) {
|
||||
// This would imply that the NotificationServer crashed before we could send it any data.
|
||||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
auto icon = m_icon ? m_icon->to_shareable_bitmap() : Gfx::ShareableBitmap();
|
||||
m_connection->send_sync<Messages::NotificationServer::ShowNotification>(m_text, m_title, icon);
|
||||
m_showing = true;
|
||||
}
|
||||
|
||||
void Notification::close()
|
||||
{
|
||||
VERIFY(m_showing);
|
||||
m_connection->send_sync<Messages::NotificationServer::CloseNotification>();
|
||||
if (m_connection->is_connected()) {
|
||||
m_connection->send_sync<Messages::NotificationServer::CloseNotification>();
|
||||
}
|
||||
|
||||
m_showing = false;
|
||||
m_disposed = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue