return widget;
}
+void
+banner_finish (gpointer data, GObject *object)
+{
+ g_message ("BANNER FINISH");
+ ModestWindowMgr *mgr = (ModestWindowMgr *) data;
+ modest_window_mgr_unregister_banner (mgr);
+ g_object_unref (mgr);
+}
+
void
modest_platform_information_banner (GtkWidget *parent,
const gchar *icon_name,
const gchar *text)
{
- hildon_banner_show_information (parent, icon_name, text);
+ GtkWidget *banner;
+ ModestWindowMgr *mgr;
+
+ mgr = modest_runtime_get_window_mgr ();
+ banner = hildon_banner_show_information (parent, icon_name, text);
+
+ modest_window_mgr_register_banner (mgr);
+ g_object_ref (mgr);
+ g_object_weak_ref ((GObject *) banner, banner_finish, mgr);
}
void
typedef struct _ModestWindowMgrPrivate ModestWindowMgrPrivate;
struct _ModestWindowMgrPrivate {
GList *window_list;
+ guint banner_counter;
ModestWindow *main_window;
priv = MODEST_WINDOW_MGR_GET_PRIVATE(obj);
priv->window_list = NULL;
+ priv->banner_counter = 0;
priv->main_window = NULL;
priv->fullscreen_mode = FALSE;
gtk_widget_destroy (win->data);
/* If there are no more windows registered emit the signal */
- if (priv->window_list == NULL)
+ if (priv->window_list == NULL && priv->banner_counter == 0)
g_signal_emit (self, signals[WINDOW_LIST_EMPTY_SIGNAL], 0);
}
if (priv->window_list)
num_windows = g_list_length (priv->window_list);
- return num_windows;
+ return num_windows + priv->banner_counter;
}
GtkWidget *
return result;
}
+void
+modest_window_mgr_register_banner (ModestWindowMgr *self)
+{
+ ModestWindowMgrPrivate *priv;
+
+ g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
+ priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
+
+ priv->banner_counter++;
+ g_message ("REGISTER BANNER -> %d", priv->banner_counter);
+
+}
+
+void
+modest_window_mgr_unregister_banner (ModestWindowMgr *self)
+{
+ ModestWindowMgrPrivate *priv;
+
+ g_return_if_fail (MODEST_IS_WINDOW_MGR (self));
+ priv = MODEST_WINDOW_MGR_GET_PRIVATE (self);
+
+ priv->banner_counter--;
+ g_message ("UNREGISTER BANNER -> %d", priv->banner_counter);
+ if (priv->window_list == NULL && priv->banner_counter == 0) {
+ g_signal_emit (self, signals[WINDOW_LIST_EMPTY_SIGNAL], 0);
+ g_message ("WINDOW LIST EMPTY");
+ }
+
+}
void modest_window_mgr_unregister_window (ModestWindowMgr *self,
ModestWindow *window);
+/**
+ * modest_window_mgr_register_banner:
+ * @self: a #ModestWindowMgr
+ *
+ * Increase the count of pending banners in the window manager
+ */
+void modest_window_mgr_register_banner (ModestWindowMgr *self);
+/**
+ * modest_window_mgr_unregister_banner:
+ * @self: a #ModestWindowMgr
+ *
+ * Decrease the count of pending banners in the window manager
+ */
+void modest_window_mgr_unregister_banner (ModestWindowMgr *self);
/**
* modest_window_mgr_set_fullscreen_mode:
* modest_window_mgr_num_windows:
* @self: a #ModestWindowMgr
*
- * Gets the number of already registered windows
+ * Gets the number of already registered windows, and pending banners
*
- * Returns: the number of already registered windows
+ * Returns: the number of already registered windows, and pending banners
**/
gint modest_window_mgr_num_windows (ModestWindowMgr *self);