+ g_return_if_fail (TNY_IS_HEADER(header));
+
+ priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
+ uid = modest_tny_folder_get_header_unique_id (header);
+
+ if (!has_uid (priv->preregistered_uids, uid)) {
+ MODEST_DEBUG_BLOCK(g_debug ("trying to unregister non-existing uid %s", uid););
+ priv->preregistered_uids = append_uid (priv->preregistered_uids, uid);
+ } else
+ MODEST_DEBUG_BLOCK(g_debug ("unregistering uid %s", uid););
+
+ if (has_uid (priv->preregistered_uids, uid)) {
+ priv->preregistered_uids = remove_uid (priv->preregistered_uids, uid);
+ if (has_uid (priv->preregistered_uids, uid))
+ g_debug ("BUG: uid %s NOT removed", uid);
+ else
+ MODEST_DEBUG_BLOCK(g_debug ("uid %s removed", uid););
+ }
+
+ g_free (uid);
+}
+
+
+#define MODEST_WINDOW_HELP_ID_PARAM "help-id"
+
+void
+modest_window_mgr_register_help_id (ModestWindowMgr *self, GtkWindow *win, const gchar* help_id)
+{
+ /* we don't need 'self', but for API consistency... */
+ g_return_if_fail (self && MODEST_IS_WINDOW_MGR(self));
+
+ g_return_if_fail (win && GTK_IS_WINDOW(win));
+ g_return_if_fail (help_id);
+
+ g_object_set_data_full (G_OBJECT(win), MODEST_WINDOW_HELP_ID_PARAM,
+ g_strdup(help_id), g_free);
+}
+
+
+const gchar*
+modest_window_mgr_get_help_id (ModestWindowMgr *self, GtkWindow *win)
+{
+ /* we don't need 'self', but for API consistency... */
+ g_return_val_if_fail (self && MODEST_IS_WINDOW_MGR (self), NULL);
+ g_return_val_if_fail (win, NULL);
+
+ return g_object_get_data (G_OBJECT(win), MODEST_WINDOW_HELP_ID_PARAM);
+}
+
+gboolean
+modest_window_mgr_close_all_windows (ModestWindowMgr *self)
+{
+ return MODEST_WINDOW_MGR_GET_CLASS (self)->close_all_windows (self);
+}
+
+static gboolean
+modest_window_mgr_close_all_windows_default (ModestWindowMgr *self)
+{
+ return TRUE;
+}
+
+
+gboolean
+modest_window_mgr_find_registered_header (ModestWindowMgr *self, TnyHeader *header,
+ ModestWindow **win)
+{
+ return MODEST_WINDOW_MGR_GET_CLASS (self)->find_registered_header (self, header, win);
+}
+
+static gboolean
+modest_window_mgr_find_registered_header_default (ModestWindowMgr *self, TnyHeader *header,
+ ModestWindow **win)
+{
+ ModestWindowMgrPrivate *priv = NULL;
+ gchar* uid = NULL;
+ gboolean has_header = FALSE;