aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/ChangeLog4
-rw-r--r--calendar/gui/calendar-component.c16
-rw-r--r--calendar/gui/component-factory.c16
3 files changed, 34 insertions, 2 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index 94d0e17080..4f701d937a 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,7 @@
+2000-06-29 Christopher James Lahey <clahey@helixcode.com>
+
+ * gui/component-factory.c: Make calendar die when evolution quits.
+
2000-06-30 Federico Mena Quintero <federico@helixcode.com>
* cal-util/cal-component.c: Change of plans. We use an
diff --git a/calendar/gui/calendar-component.c b/calendar/gui/calendar-component.c
index 5ca51772b9..4e92055619 100644
--- a/calendar/gui/calendar-component.c
+++ b/calendar/gui/calendar-component.c
@@ -67,12 +67,24 @@ create_view (EvolutionShellComponent *shell_component,
return EVOLUTION_SHELL_COMPONENT_OK;
}
+static gint owner_count = 0;
+
static void
owner_set_cb (EvolutionShellComponent *shell_component,
+ Evolution_Shell shell_interface)
+{
+ owner_count ++;
+}
+
+static void
+owner_unset_cb (EvolutionShellComponent *shell_component,
+ Evolution_Shell shell_interface)
EvolutionShellClient shell_client,
void *data)
{
- g_print ("evolution-calendar: Yeeeh! We have an owner!\n"); /* FIXME */
+ owner_count --;
+ if (owner_count <= 0)
+ gtk_main_quit();
}
@@ -88,6 +100,8 @@ factory_fn (BonoboGenericFactory *factory,
gtk_signal_connect (GTK_OBJECT (shell_component), "owner_set",
GTK_SIGNAL_FUNC (owner_set_cb), NULL);
+ gtk_signal_connect (GTK_OBJECT (shell_component), "owner_unset",
+ GTK_SIGNAL_FUNC (owner_unset_cb), NULL);
return BONOBO_OBJECT (shell_component);
}
diff --git a/calendar/gui/component-factory.c b/calendar/gui/component-factory.c
index 5ca51772b9..4e92055619 100644
--- a/calendar/gui/component-factory.c
+++ b/calendar/gui/component-factory.c
@@ -67,12 +67,24 @@ create_view (EvolutionShellComponent *shell_component,
return EVOLUTION_SHELL_COMPONENT_OK;
}
+static gint owner_count = 0;
+
static void
owner_set_cb (EvolutionShellComponent *shell_component,
+ Evolution_Shell shell_interface)
+{
+ owner_count ++;
+}
+
+static void
+owner_unset_cb (EvolutionShellComponent *shell_component,
+ Evolution_Shell shell_interface)
EvolutionShellClient shell_client,
void *data)
{
- g_print ("evolution-calendar: Yeeeh! We have an owner!\n"); /* FIXME */
+ owner_count --;
+ if (owner_count <= 0)
+ gtk_main_quit();
}
@@ -88,6 +100,8 @@ factory_fn (BonoboGenericFactory *factory,
gtk_signal_connect (GTK_OBJECT (shell_component), "owner_set",
GTK_SIGNAL_FUNC (owner_set_cb), NULL);
+ gtk_signal_connect (GTK_OBJECT (shell_component), "owner_unset",
+ GTK_SIGNAL_FUNC (owner_unset_cb), NULL);
return BONOBO_OBJECT (shell_component);
}