diff --git a/plugins/gtkgui/roster_window.py b/plugins/gtkgui/roster_window.py
index afde1916bb9e40b982a97de80a8c60ff9b265876..66c463fb47b7be0705bec3d9c23524f6bb7e66e0 100644
--- a/plugins/gtkgui/roster_window.py
+++ b/plugins/gtkgui/roster_window.py
@@ -924,6 +924,13 @@ class roster_window:
 		if self.plugin.systray_visible:
 			self.window.hide()
 		else:
+			accounts = self.plugin.accounts.keys()
+			message = self.get_status_message('offline')
+			if message == -1:
+				message = ''
+			for acct in accounts:
+				if self.plugin.connected[acct]:
+					self.send_status(acct, 'offline', message)
 			self.quit_gtkgui_plugin()
 		return 1
 
@@ -946,6 +953,13 @@ class roster_window:
 		gtk.main_quit()
 
 	def on_quit_menuitem_activate(self, widget):
+		accounts = self.plugin.accounts.keys()
+		message = self.get_status_message('offline')
+		if message == -1:
+			message = ''
+		for acct in accounts:
+			if self.plugin.connected[acct]:
+				self.send_status(acct, 'offline', message)
 		self.quit_gtkgui_plugin()
 
 	def on_roster_treeview_row_activated(self, widget, path, col=0):