2008-11-25 Alberto Garcia <agarcia@igalia.com>
authorAlberto Garcia <agarcia@igalia.com>
Tue, 25 Nov 2008 14:30:46 +0000 (14:30 +0000)
committerAlberto Garcia <agarcia@igalia.com>
Tue, 25 Nov 2008 14:30:46 +0000 (14:30 +0000)
* src/hildon-stackable-window-private.h
* src/hildon-stackable-window.c (hildon_stackable_window_show)
(hildon_stackable_window_hide, hildon_stackable_window_init):
Remove all window stack management.

* src/hildon-program-private.h
* src/hildon-program.h
* src/hildon-program.c (hildon_program_init)
(hildon_program_pop_window_stack)
(hildon_program_peek_window_stack)
(hildon_program_go_to_root_window):
Remove all window stack management and mark functions as
deprecated.

ChangeLog
src/hildon-program-private.h
src/hildon-program.c
src/hildon-program.h
src/hildon-stackable-window-private.h
src/hildon-stackable-window.c

index 246a53e..c7b3157 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
 2008-11-25  Alberto Garcia  <agarcia@igalia.com>
 
+       * src/hildon-stackable-window-private.h
+       * src/hildon-stackable-window.c (hildon_stackable_window_show)
+       (hildon_stackable_window_hide, hildon_stackable_window_init):
+       Remove all window stack management.
+
+       * src/hildon-program-private.h
+       * src/hildon-program.h
+       * src/hildon-program.c (hildon_program_init)
+       (hildon_program_pop_window_stack)
+       (hildon_program_peek_window_stack)
+       (hildon_program_go_to_root_window):
+       Remove all window stack management and mark functions as
+       deprecated.
+
+2008-11-25  Alberto Garcia  <agarcia@igalia.com>
+
        * src/hildon-app-menu.c (hildon_app_menu_realize):
        Use the XA_ATOM type for the _NET_WM_WINDOW_TYPE property.
 
index d0174a0..ae8666c 100644 (file)
@@ -46,18 +46,9 @@ struct                                          _HildonProgramPrivate
     GtkWidget *common_menu;
     GtkWidget *common_toolbar;
     GSList *windows;
-    GSList *window_stack;
     Window window_group;
 };
 
-void G_GNUC_INTERNAL
-_hildon_program_add_to_stack                    (HildonProgram         *self,
-                                                 HildonStackableWindow *win);
-
-gboolean G_GNUC_INTERNAL
-_hildon_program_remove_from_stack               (HildonProgram         *self,
-                                                 HildonStackableWindow *win);
-
 G_END_DECLS
 
 #endif                                          /* __HILDON_PROGRAM_PRIVATE_H__ */
index ab1ee67..ca930c8 100644 (file)
  * can be set to hibernate by the Hildon task navigator, in situations of
  * low memory.
  *
- * The #HildonProgram also contains a stack of
- * #HildonStackableWindow. Such windows will be automatically added to
- * the stack when shown, and removed when destroyed. The developer can
- * use the stack with hildon_program_pop_window_stack(),
- * hildon_program_peek_window_stack() and hildon_program_go_to_root_window().
- *
  * <example>
  * <programlisting>
  * HildonProgram *program;
@@ -82,6 +76,8 @@
  * </example>
  */
 
+#undef                                          HILDON_DISABLE_DEPRECATED
+
 #ifdef                                          HAVE_CONFIG_H
 #include                                        <config.h>
 #endif
@@ -91,7 +87,6 @@
 #include                                        "hildon-program.h"
 #include                                        "hildon-program-private.h"
 #include                                        "hildon-window-private.h"
-#include                                        "hildon-stackable-window-private.h"
 
 static void
 hildon_program_init                             (HildonProgram *self);
@@ -157,7 +152,6 @@ hildon_program_init                             (HildonProgram *self)
     priv->window_group = GDK_WINDOW_XID (gdk_display_get_default_group (gdk_display_get_default()));
     priv->common_toolbar = NULL;
     priv->windows = NULL;
-    priv->window_stack = NULL;
 }
 
 static void
@@ -271,105 +265,28 @@ hildon_program_get_property                     (GObject *object,
  * hildon_program_pop_window_stack:
  * @self: A #HildonProgram
  *
- * The #HildonProgram object maintains a list of stackable
- * windows. Each time a #HildonStackableWindow is shown, it is
- * automatically added to the top of the stack. Windows are removed
- * from the stack when they are hidden or destroyed.
+ * Deprecated: See #HildonWindowStack
  *
- * This function is equivalent to calling gtk_widget_hide() on the
- * window on top of the stack. The window is hidden and removed from
- * the stack, but not destroyed.
- *
- * Returns: The #HildonStackableWindow that was removed from the
- * stack, or %NULL if the stack was empty.
+ * Returns: %NULL
  */
 HildonStackableWindow *
 hildon_program_pop_window_stack                 (HildonProgram *self)
 {
-    HildonStackableWindow *top;
-
-    top = hildon_program_peek_window_stack (self);
-
-    /* Hide the window (it'll be removed from the stack) */
-    if (top)
-        gtk_widget_hide (GTK_WIDGET (top));
-
-    return top;
+    return NULL;
 }
 
 /**
  * hildon_program_peek_window_stack:
  * @self: A #HildonProgram
  *
- * The #HildonProgram object maintains a list of stackable
- * windows. Each time a #HildonStackableWindow is shown, it is
- * automatically added to the top of the stack. Windows are removed
- * from the stack when they are destroyed.
+ * Deprecated: See #HildonWindowStack
  *
- * This function returns the #HildonStackableWindow from the top of
- * the stack, or %NULL if the stack is empty. The stack is never modified.
- *
- * Returns: A #HildonStackableWindow, or %NULL.
+ * Returns: %NULL
  */
 HildonStackableWindow *
 hildon_program_peek_window_stack                (HildonProgram *self)
 {
-    HildonStackableWindow *top = NULL;
-    HildonProgramPrivate *priv;
-
-    g_return_val_if_fail (HILDON_IS_PROGRAM (self), NULL);
-
-    priv = HILDON_PROGRAM_GET_PRIVATE (self);
-    g_assert (priv);
-
-    if (priv->window_stack != NULL)
-        top = HILDON_STACKABLE_WINDOW (priv->window_stack->data);
-
-    return top;
-}
-
-void G_GNUC_INTERNAL
-_hildon_program_add_to_stack                    (HildonProgram         *self,
-                                                 HildonStackableWindow *win)
-{
-    HildonProgramPrivate *priv;
-
-    g_return_if_fail (HILDON_IS_PROGRAM (self));
-    g_return_if_fail (HILDON_IS_STACKABLE_WINDOW (win));
-
-    priv = HILDON_PROGRAM_GET_PRIVATE (self);
-    g_assert (priv);
-
-    if (g_slist_find (priv->window_stack, win) == NULL)
-    {
-        priv->window_stack = g_slist_prepend (priv->window_stack, win);
-    }
-    else
-    {
-        g_critical ("%s: window already in the stack!", __FUNCTION__);
-    }
-
-}
-
-gboolean G_GNUC_INTERNAL
-_hildon_program_remove_from_stack               (HildonProgram         *self,
-                                                 HildonStackableWindow *win)
-{
-    GSList *pos;
-    HildonProgramPrivate *priv;
-
-    g_return_val_if_fail (HILDON_IS_PROGRAM (self), FALSE);
-    g_return_val_if_fail (HILDON_IS_STACKABLE_WINDOW (win), FALSE);
-
-    priv = HILDON_PROGRAM_GET_PRIVATE (self);
-    g_assert (priv);
-
-    pos = g_slist_find (priv->window_stack, win);
-
-    if (pos != NULL)
-        priv->window_stack = g_slist_delete_link (priv->window_stack, pos);
-
-    return (pos != NULL);
+    return NULL;
 }
 
 /* Utilities */
@@ -804,69 +721,9 @@ hildon_program_get_is_topmost                   (HildonProgram *self)
  * hildon_program_go_to_root_window:
  * @self: A #HildonProgram
  *
- * Will close all windows in the #HildonProgram but the first one (the
- * root window) by sending them a delete event. If any of the windows
- * refuses to close (by capturing the event) no further events will be
- * sent. Only windows of type #HildonStackableWindow will be affected
- * by this.
+ * Deprecated: See #HildonWindowStack
  */
 void
 hildon_program_go_to_root_window                (HildonProgram *self)
 {
-    HildonProgramPrivate *priv;
-    GSList *windows, *iter;
-    gboolean windows_left;
-
-    g_return_if_fail (HILDON_IS_PROGRAM (self));
-    priv = HILDON_PROGRAM_GET_PRIVATE (self);
-    g_assert (priv);
-
-    /* List of stacked windows (starting from the topmost one) */
-    windows = g_slist_copy (priv->window_stack);
-    iter = windows;
-
-    /* Destroy all the windows but the last one (which is the root
-     * window, as the list is reversed) */
-    windows_left = (iter != NULL && iter->next != NULL);
-    while (windows_left)
-    {
-        if (HILDON_IS_STACKABLE_WINDOW (iter->data))
-        {
-            GdkEvent *event;
-            HildonStackableWindow *win;
-
-            /* Mark the window as "going home" */
-            win = HILDON_STACKABLE_WINDOW (iter->data);
-            hildon_stackable_window_set_going_home (win, TRUE);
-
-            /* Set win pointer to NULL if the window is destroyed */
-            g_object_add_weak_pointer (G_OBJECT (win), (gpointer) &win);
-
-            /* Send a delete event */
-            event = gdk_event_new (GDK_DELETE);
-            event->any.window = g_object_ref (GTK_WIDGET (win)->window);
-            gtk_main_do_event (event);
-            gdk_event_free (event);
-
-            /* Continue sending delete events if the window has been destroyed */
-            if (win == NULL)
-            {
-                iter = iter->next;
-                windows_left = (iter != NULL && iter->next != NULL);
-            }
-            else
-            {
-                g_object_remove_weak_pointer (G_OBJECT (win), (gpointer) &win);
-                hildon_stackable_window_set_going_home (win, FALSE);
-                windows_left = FALSE;
-            }
-        }
-        else
-        {
-            g_critical ("Window list contains a non-stackable window");
-            windows_left = FALSE;
-        }
-    }
-
-    g_slist_free (windows);
 }
index 26c0fa6..4bb5422 100644 (file)
@@ -110,6 +110,7 @@ hildon_program_get_common_toolbar               (HildonProgram *self);
 gboolean
 hildon_program_get_is_topmost                   (HildonProgram *self);
 
+#ifndef HILDON_DISABLE_DEPRECATED
 HildonStackableWindow *
 hildon_program_pop_window_stack                 (HildonProgram *self);
 
@@ -118,6 +119,7 @@ hildon_program_peek_window_stack                (HildonProgram *self);
 
 void
 hildon_program_go_to_root_window                (HildonProgram *self);
+#endif /* HILDON_DISABLE_DEPRECATED */
 
 G_END_DECLS
 
index 906a90b..aa1c03a 100644 (file)
@@ -31,7 +31,6 @@ typedef struct                                  _HildonStackableWindowPrivate Hi
 
 struct                                          _HildonStackableWindowPrivate
 {
-    gboolean going_home;
     HildonAppMenu *app_menu;
 };
 
@@ -39,13 +38,6 @@ struct                                          _HildonStackableWindowPrivate
                                                 (G_TYPE_INSTANCE_GET_PRIVATE ((obj),\
                                                 HILDON_TYPE_STACKABLE_WINDOW, HildonStackableWindowPrivate))
 
-void G_GNUC_INTERNAL
-hildon_stackable_window_set_going_home          (HildonStackableWindow *self,
-                                                 gboolean going_home);
-
-gboolean G_GNUC_INTERNAL
-hildon_stackable_window_get_going_home          (HildonStackableWindow *self);
-
 G_END_DECLS
 
 #endif                                 /* __HILDON_STACKABLE_WINDOW_PRIVATE_H__ */
index 3e58185..fda04d7 100644 (file)
 #include                                        "hildon-stackable-window.h"
 #include                                        "hildon-stackable-window-private.h"
 #include                                        "hildon-app-menu-private.h"
-#include                                        "hildon-program.h"
-#include                                        "hildon-window-private.h"
-#include                                        "hildon-program-private.h"
 
 G_DEFINE_TYPE (HildonStackableWindow, hildon_stackable_window, HILDON_TYPE_WINDOW);
 
-void G_GNUC_INTERNAL
-hildon_stackable_window_set_going_home          (HildonStackableWindow *self,
-                                                 gboolean going_home)
-{
-    HildonStackableWindowPrivate *priv = HILDON_STACKABLE_WINDOW_GET_PRIVATE (self);
-    priv->going_home = going_home;
-}
-
-gboolean G_GNUC_INTERNAL
-hildon_stackable_window_get_going_home          (HildonStackableWindow *self)
-{
-    HildonStackableWindowPrivate *priv = HILDON_STACKABLE_WINDOW_GET_PRIVATE (self);
-    return priv->going_home;
-}
-
 /**
  * hildon_stackable_window_set_main_menu:
  * @self: a #HildonStackableWindow
@@ -199,21 +181,12 @@ hildon_stackable_window_realize                 (GtkWidget *widget)
 static void
 hildon_stackable_window_show                    (GtkWidget *widget)
 {
-    HildonProgram *program = hildon_program_get_instance ();
-    HildonStackableWindow *current_win = HILDON_STACKABLE_WINDOW (widget);
-    HildonStackableWindow *previous_win = hildon_program_peek_window_stack (program);
-
-    if (previous_win != current_win)
-        _hildon_program_add_to_stack (program, current_win);
-
     GTK_WIDGET_CLASS (hildon_stackable_window_parent_class)->show (widget);
 }
 
 static void
 hildon_stackable_window_hide                    (GtkWidget *widget)
 {
-    HildonProgram *program = hildon_program_get_instance ();
-    _hildon_program_remove_from_stack (program, HILDON_STACKABLE_WINDOW (widget));
     GTK_WIDGET_CLASS (hildon_stackable_window_parent_class)->hide (widget);
 }
 
@@ -254,7 +227,6 @@ hildon_stackable_window_init                    (HildonStackableWindow *self)
 {
     HildonStackableWindowPrivate *priv = HILDON_STACKABLE_WINDOW_GET_PRIVATE (self);
 
-    priv->going_home = FALSE;
     priv->app_menu = NULL;
 }