void
-modest_window_mgr_register_header (ModestWindowMgr *self, TnyHeader *header)
+modest_window_mgr_register_header (ModestWindowMgr *self, TnyHeader *header, const gchar *alt_uid)
{
ModestWindowMgrPrivate *priv;
gchar* uid;
priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
uid = modest_tny_folder_get_header_unique_id (header);
-
+ if (uid == NULL)
+ uid = g_strdup (alt_uid);
+
if (!has_uid (priv->preregistered_uids, uid)) {
g_debug ("registering new uid %s", uid);
priv->preregistered_uids = append_uid (priv->preregistered_uids, uid);
} else
g_debug ("already had uid %s", uid);
-
+
g_free (uid);
}
priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
uid = modest_tny_folder_get_header_unique_id (header);
-
+
if (!has_uid (priv->preregistered_uids, uid)) {
g_debug ("trying to unregister non-existing uid %s", uid);
priv->preregistered_uids = append_uid (priv->preregistered_uids, uid);
} else
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))
else
g_debug ("uid %s removed", uid);
}
-
+
g_free (uid);
}
return 1;
}
-
void
modest_window_mgr_close_all_windows (ModestWindowMgr *self)
{
ModestWindowMgrPrivate *priv = NULL;
GList *wins = NULL;
gboolean ret_value = FALSE;
-
+
g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
if (win)
*win = NULL;
-
+
has_header = has_uid (priv->preregistered_uids, uid);
-
+
item = g_list_find_custom (priv->window_list, uid, (GCompareFunc) compare_msguids);
if (item) {
has_window = TRUE;
}
}
}
-
g_free (uid);
+
return has_header || has_window;
}
if (MODEST_IS_MSG_VIEW_WINDOW(window)) {
const gchar *uid = modest_msg_view_window_get_message_uid
(MODEST_MSG_VIEW_WINDOW (window));
-
+
if (!has_uid (priv->preregistered_uids, uid))
g_debug ("weird: no uid for window (%s)", uid);
g_debug ("registering window for %s", uid ? uid : "<none>");
-
+
priv->preregistered_uids =
remove_uid (priv->preregistered_uids,
modest_msg_view_window_get_message_uid
(MODEST_MSG_VIEW_WINDOW (window)));
-
} else if (MODEST_IS_MSG_EDIT_WINDOW(window)) {
const gchar *uid = modest_msg_edit_window_get_message_uid
(MODEST_MSG_EDIT_WINDOW (window));