]> git.0d.be Git - empathy.git/commitdiff
Add a parent window property to the assistant
authorCosimo Cecchi <cosimoc@gnome.org>
Wed, 5 Aug 2009 14:38:55 +0000 (16:38 +0200)
committerSjoerd Simons <sjoerd.simons@collabora.co.uk>
Sat, 22 Aug 2009 13:20:44 +0000 (14:20 +0100)
src/empathy-account-assistant.c
src/empathy-account-assistant.h
src/empathy.c
tests/test-empathy-account-assistant.c

index 852ea4534bb3c5fb758250869d9fb55bf3be849b..e92826688b8f1aa2e7d7cd786898314ca9d22c48 100644 (file)
@@ -51,6 +51,10 @@ enum {
   PAGE_SALUT_ONLY = 3
 };
 
+enum {
+  PROP_PARENT = 1
+};
+
 typedef struct {
   FirstPageResponse first_resp;
 
@@ -432,9 +436,71 @@ account_assistant_build_enter_or_create_page (EmpathyAccountAssistant *self,
   return main_vbox;
 }
 
+static void
+do_get_property (GObject *object,
+    guint property_id,
+    GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyAccountAssistantPriv *priv = GET_PRIV (object);
+
+  switch (property_id)
+    {
+    case PROP_PARENT:
+      g_value_set_object (value, priv->parent_window);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+    }
+}
+
+static void
+do_set_property (GObject *object,
+    guint property_id,
+    const GValue *value,
+    GParamSpec *pspec)
+{
+  EmpathyAccountAssistantPriv *priv = GET_PRIV (object);
+
+  switch (property_id)
+    {
+    case PROP_PARENT:
+      priv->parent_window = g_value_get_object (value);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+    }
+}
+
+static void
+do_constructed (GObject *object)
+{
+  EmpathyAccountAssistantPriv *priv = GET_PRIV (object);
+
+  /* set us as transient for the parent window if any */
+  if (priv->parent_window)
+    gtk_window_set_transient_for (GTK_WINDOW (object),
+        priv->parent_window);
+
+  gtk_window_set_type_hint (GTK_WINDOW (object), GDK_WINDOW_TYPE_HINT_DIALOG);
+}
+
 static void
 empathy_account_assistant_class_init (EmpathyAccountAssistantClass *klass)
 {
+  GObjectClass *oclass = G_OBJECT_CLASS (klass);
+  GParamSpec *param_spec;
+
+  oclass->get_property = do_get_property;
+  oclass->set_property = do_set_property;
+  oclass->constructed = do_constructed;
+
+  param_spec = g_param_spec_object ("parent-window",
+      "parent-window", "The parent window",
+      GTK_TYPE_WINDOW,
+      G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT_ONLY);
+  g_object_class_install_property (oclass, PROP_PARENT, param_spec);
+
   g_type_class_add_private (klass, sizeof (EmpathyAccountAssistantPriv));
 }
 
@@ -484,7 +550,8 @@ empathy_account_assistant_init (EmpathyAccountAssistant *self)
 }
 
 GtkWidget *
-empathy_account_assistant_new (void)
+empathy_account_assistant_new (GtkWindow *window)
 {
-  return g_object_new (EMPATHY_TYPE_ACCOUNT_ASSISTANT, NULL);
+  return g_object_new (EMPATHY_TYPE_ACCOUNT_ASSISTANT, "parent-window",
+      window, NULL);
 }
index 82b14e31271abe67e81741ef26b853b9c49d759d..85746020198f0be4df43ef0dc19b73eb95a0f67c 100644 (file)
@@ -56,7 +56,7 @@ typedef struct {
 
 GType empathy_account_assistant_get_type (void);
 
-GtkWidget *empathy_account_assistant_new (void);
+GtkWidget *empathy_account_assistant_new (GtkWindow *parent);
 
 G_END_DECLS
 
index b80b64be7aca5f7b9f3b86985c8d960590f5bfd4..acfdcb13ea31ab5316f90ae1fccef90db06694e2 100644 (file)
@@ -63,6 +63,7 @@
 #include <libempathy-gtk/empathy-ui-utils.h>
 #include <libempathy-gtk/empathy-location-manager.h>
 
+#include "empathy-account-assistant.h"
 #include "empathy-accounts-dialog.h"
 #include "empathy-main-window.h"
 #include "empathy-status-icon.h"
@@ -532,12 +533,17 @@ account_manager_ready_cb (EmpathyAccountManager *manager,
     GParamSpec *spec,
     gpointer user_data)
 {
+  GtkWidget *assistant;
+
   if (!empathy_account_manager_is_ready (manager))
     return;
 
   if (empathy_account_manager_get_count (manager) == 0)
-    empathy_accounts_dialog_show (GTK_WINDOW (empathy_main_window_get ()),
-        NULL);
+    {
+      assistant = empathy_account_assistant_new (
+          GTK_WINDOW (empathy_main_window_get ()));
+      gtk_window_present (GTK_WINDOW (assistant));
+    }
 
   create_salut_account ();
 }
index f1f519d7752322340b00c99b713149629cf3e981..6d1330eeb733069691a9372775b216f4ce3365b8 100644 (file)
@@ -12,7 +12,7 @@ int main (int argc, char **argv)
   gtk_init (&argc, &argv);
   empathy_gtk_init ();
 
-  assistant = empathy_account_assistant_new ();
+  assistant = empathy_account_assistant_new (NULL);
 
   gtk_widget_show_all (assistant);