[gnome-session] gsm: Add debug mode to fail whale dialog



commit f41c07f6a95a5a22891db45681afeb05bef669c5
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Aug 17 06:09:03 2011 -0400

    gsm: Add debug mode to fail whale dialog
    
    The debug mode lets you crudely debug the fail whale dialog in a window
    
    https://bugzilla.gnome.org/show_bug.cgi?id=656747

 gnome-session/gsm-fail-whale-dialog.c |   47 +++++++++++++++++++++------------
 gnome-session/gsm-fail-whale-dialog.h |    2 +-
 gnome-session/gsm-manager.c           |    2 +-
 gnome-session/main.c                  |    2 +-
 4 files changed, 33 insertions(+), 20 deletions(-)
---
diff --git a/gnome-session/gsm-fail-whale-dialog.c b/gnome-session/gsm-fail-whale-dialog.c
index d54cf18..a4b3e61 100644
--- a/gnome-session/gsm-fail-whale-dialog.c
+++ b/gnome-session/gsm-fail-whale-dialog.c
@@ -38,6 +38,7 @@
 
 struct _GsmFailWhaleDialogPrivate
 {
+        gboolean debug_mode;
         GdkRectangle geometry;
 };
 
@@ -78,6 +79,9 @@ _window_move_resize_window (GsmFailWhaleDialog *window,
 
         g_assert (gtk_widget_get_realized (widget));
 
+        if (window->priv->debug_mode)
+                return;
+
         g_debug ("Move and/or resize window x=%d y=%d w=%d h=%d",
                  window->priv->geometry.x,
                  window->priv->geometry.y,
@@ -221,8 +225,10 @@ gsm_fail_whale_dialog_get_preferred_height (GtkWidget *widget,
 static void
 gsm_fail_whale_dialog_class_init (GsmFailWhaleDialogClass *klass)
 {
+        GObjectClass   *object_class;
         GtkWidgetClass *widget_class;
 
+        object_class = G_OBJECT_CLASS (klass);
         widget_class = GTK_WIDGET_CLASS (klass);
 
         widget_class->realize = gsm_fail_whale_dialog_realize;
@@ -237,11 +243,15 @@ static void
 on_logout_clicked (GtkWidget          *button,
                    GsmFailWhaleDialog *fail_dialog)
 {
-        gsm_manager_logout (gsm_manager_get (),
-                            GSM_MANAGER_LOGOUT_MODE_FORCE,
-                            NULL);
-
-        gtk_widget_destroy (GTK_WIDGET (fail_dialog));
+        if (fail_dialog->priv->debug_mode) {
+                gtk_main_quit ();
+        } else {
+                gsm_manager_logout (gsm_manager_get (),
+                                    GSM_MANAGER_LOGOUT_MODE_FORCE,
+                                    NULL);
+
+                gtk_widget_destroy (GTK_WIDGET (fail_dialog));
+        }
 }
 
 static void
@@ -256,6 +266,18 @@ setup_window (GsmFailWhaleDialog *fail_dialog)
         GtkWidget *button;
         char *markup;
 
+        gtk_window_set_title (GTK_WINDOW (fail_dialog), "");
+        gtk_window_set_icon_name (GTK_WINDOW (fail_dialog), GSM_ICON_COMPUTER_FAIL);
+
+        if (!fail_dialog->priv->debug_mode) {
+                gtk_window_set_skip_taskbar_hint (GTK_WINDOW (fail_dialog), TRUE);
+                gtk_window_set_keep_above (GTK_WINDOW (fail_dialog), TRUE);
+                gtk_window_stick (GTK_WINDOW (fail_dialog));
+                gtk_window_set_position (GTK_WINDOW (fail_dialog), GTK_WIN_POS_CENTER_ALWAYS);
+                /* only works if there is a window manager which is unlikely */
+                gtk_window_fullscreen (GTK_WINDOW (fail_dialog));
+        }
+
         alignment = gtk_alignment_new (0.5, 0.5, 1, 1);
         gtk_widget_show (alignment);
         gtk_container_add (GTK_CONTAINER (fail_dialog), alignment);
@@ -303,21 +325,10 @@ static void
 gsm_fail_whale_dialog_init (GsmFailWhaleDialog *fail_dialog)
 {
         fail_dialog->priv = GSM_FAIL_WHALE_DIALOG_GET_PRIVATE (fail_dialog);
-
-        gtk_window_set_skip_taskbar_hint (GTK_WINDOW (fail_dialog), TRUE);
-        gtk_window_set_keep_above (GTK_WINDOW (fail_dialog), TRUE);
-        gtk_window_stick (GTK_WINDOW (fail_dialog));
-        gtk_window_set_title (GTK_WINDOW (fail_dialog), "");
-        gtk_window_set_icon_name (GTK_WINDOW (fail_dialog), GSM_ICON_COMPUTER_FAIL);
-        gtk_window_set_position (GTK_WINDOW (fail_dialog), GTK_WIN_POS_CENTER_ALWAYS);
-        /* only works if there is a window manager which is unlikely */
-        gtk_window_fullscreen (GTK_WINDOW (fail_dialog));
-
-        setup_window (fail_dialog);
 }
 
 void
-gsm_fail_whale_dialog_we_failed (void)
+gsm_fail_whale_dialog_we_failed (gboolean debug_mode)
 {
         static GsmFailWhaleDialog *current_dialog = NULL;
         GsmFailWhaleDialog        *fail_dialog;
@@ -327,6 +338,8 @@ gsm_fail_whale_dialog_we_failed (void)
         }
 
         fail_dialog = g_object_new (GSM_TYPE_FAIL_WHALE_DIALOG, NULL);
+        fail_dialog->priv->debug_mode = debug_mode;
+        setup_window (fail_dialog);
 
         current_dialog = fail_dialog;
         g_signal_connect (current_dialog,
diff --git a/gnome-session/gsm-fail-whale-dialog.h b/gnome-session/gsm-fail-whale-dialog.h
index cc43165..f070d1b 100644
--- a/gnome-session/gsm-fail-whale-dialog.h
+++ b/gnome-session/gsm-fail-whale-dialog.h
@@ -53,7 +53,7 @@ struct _GsmFailWhaleDialogClass
 
 GType        gsm_fail_whale_dialog_get_type   (void) G_GNUC_CONST;
 
-void         gsm_fail_whale_dialog_we_failed  (void);
+void         gsm_fail_whale_dialog_we_failed  (gboolean debug_mode);
 
 G_END_DECLS
 
diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c
index 870af4a..b362bab 100644
--- a/gnome-session/gsm-manager.c
+++ b/gnome-session/gsm-manager.c
@@ -272,7 +272,7 @@ static void
 on_required_app_failure (GsmManager  *manager,
                          GsmApp      *app)
 {
-        gsm_fail_whale_dialog_we_failed ();
+        gsm_fail_whale_dialog_we_failed (FALSE);
 }
 
 
diff --git a/gnome-session/main.c b/gnome-session/main.c
index d091f7d..e57392a 100644
--- a/gnome-session/main.c
+++ b/gnome-session/main.c
@@ -314,7 +314,7 @@ main (int argc, char **argv)
         }
 
         if (please_fail) {
-                gsm_fail_whale_dialog_we_failed ();
+                gsm_fail_whale_dialog_we_failed (TRUE);
                 gtk_main ();
                 exit (1);
         }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]