GList *iter = priv->window_list;
/* unregister pending windows */
while (iter) {
- modest_window_mgr_unregister_window (MODEST_WINDOW_MGR (obj),
- MODEST_WINDOW (iter->data));
+ ModestWindow *window = (ModestWindow *) iter->data;
iter = g_list_next (iter);
+ modest_window_mgr_unregister_window (MODEST_WINDOW_MGR (obj), window);
}
g_list_free (priv->window_list);
priv->window_list = NULL;
GSList *cursor = list, *start = list;
if (!uid)
- return FALSE;
+ return list;
while (cursor) {
GSList *next = g_slist_next (cursor);
return key;
}
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
static void
on_window_is_topmost (GObject *gobject,
GParamSpec *arg1,
/* Listen to window state changes. Unfortunately
window-state-event does not properly work for the Maemo
version, so we need to use is-topmost and the ifdef */
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
priv->window_state_uids =
modest_signal_mgr_connect (priv->window_state_uids,
G_OBJECT (window),
if (g_list_length (priv->window_list) > 1) {
/* Present the window if it's not visible now */
- if (!gtk_window_has_toplevel_focus (GTK_WINDOW (window)))
+ if (!gtk_window_has_toplevel_focus (GTK_WINDOW (window))) {
gtk_window_present (GTK_WINDOW (window));
+ priv->current_top = window;
+ }
/* Create the confirmation dialog MSG-NOT308 */
dialog_response = modest_platform_run_confirmation_dialog (
GTK_WINDOW (window), _("emev_nc_close_windows"));
}
/* Unregister window */
modest_window_mgr_unregister_window (self, window);
- no_propagate = FALSE;
+ no_propagate = TRUE;
}
return no_propagate;
priv->window_list = g_list_remove_link (priv->window_list, win);
tmp = g_hash_table_lookup (priv->destroy_handlers, window);
handler_id = *tmp;
+
g_hash_table_remove (priv->destroy_handlers, window);
/* cancel open and receive operations */
/* Disconnect the "window-state-event" handler, we won't need it anymore */
if (priv->window_state_uids) {
-#ifdef MODEST_PLATFORM_MAEMO
+#ifndef MODEST_TOOLKIT_GTK
priv->window_state_uids =
modest_signal_mgr_disconnect (priv->window_state_uids,
G_OBJECT (window),
modest_window_disconnect_signals (window);
/* Destroy the window */
+ g_object_unref (win->data);
gtk_widget_destroy (win->data);
+ g_list_free (win);
/* If there are no more windows registered emit the signal */
if (modest_window_mgr_num_windows (self) == 0)
if (topmost) {
gdk_threads_enter ();
gtk_window_present (topmost);
+ /* It seems that the window looses modality if some
+ other is shown on top of it after set_transient_for
+ and set_parent */
+ gtk_window_set_modal (topmost, TRUE);
gdk_threads_leave ();
}