aboutsummaryrefslogtreecommitdiffstats
path: root/e-util
diff options
context:
space:
mode:
Diffstat (limited to 'e-util')
-rw-r--r--e-util/ChangeLog10
-rw-r--r--e-util/e-dialog-utils.c42
-rw-r--r--e-util/e-dialog-utils.h18
3 files changed, 66 insertions, 4 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog
index 178ec7aa8b..2bcb5f8820 100644
--- a/e-util/ChangeLog
+++ b/e-util/ChangeLog
@@ -1,3 +1,13 @@
+2002-01-02 JP Rosevear <jpr@ximian.com>
+
+ * e-dialog-utils.c (e_gnome_dialog_set_parent): util function
+ moved from mail-callbacks, also destroys the dialog if the parent
+ is destroyed
+ (e_gnome_warning_dialog_parented): similarly
+ (e_gnome_ok_cancel_dialog_parented): ditto
+
+ * e-dialog-utils.h: new protos
+
2001-12-17 JP Rosevear <jpr@ximian.com>
* e-pilot-map.c (e_pilot_map_clear): clear all info from the map
diff --git a/e-util/e-dialog-utils.c b/e-util/e-dialog-utils.c
index 45a57d42fc..f155b83145 100644
--- a/e-util/e-dialog-utils.c
+++ b/e-util/e-dialog-utils.c
@@ -32,6 +32,8 @@
#include <gtk/gtksignal.h>
+#include <libgnomeui/gnome-dialog-util.h>
+
#include <bonobo/bonobo-control.h>
#include <bonobo/bonobo-property-bag.h>
@@ -162,3 +164,43 @@ e_set_dialog_parent_from_xid (GtkWindow *dialog,
set_transient_for_gdk (dialog, gdk_window_foreign_new (xid));
}
+
+static void
+e_gnome_dialog_parent_destroyed (GtkWidget *parent, GtkWidget *dialog)
+{
+ gnome_dialog_close (GNOME_DIALOG (dialog));
+}
+
+void
+e_gnome_dialog_set_parent (GnomeDialog *dialog, GtkWindow *parent)
+{
+ gnome_dialog_set_parent (dialog, parent);
+ gtk_signal_connect_while_alive (GTK_OBJECT (parent), "destroy",
+ e_gnome_dialog_parent_destroyed,
+ dialog, GTK_OBJECT (dialog));
+}
+
+GtkWidget *
+e_gnome_warning_dialog_parented (const char *warning, GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = gnome_warning_dialog_parented (warning, parent);
+ gtk_signal_connect (GTK_OBJECT (parent), "destroy",
+ e_gnome_dialog_parent_destroyed, dialog);
+
+ return dialog;
+}
+
+GtkWidget *
+e_gnome_ok_cancel_dialog_parented (const char *message, GnomeReplyCallback callback,
+ gpointer data, GtkWindow *parent)
+{
+ GtkWidget *dialog;
+
+ dialog = gnome_ok_cancel_dialog_parented (message, callback, data, parent);
+ gtk_signal_connect (GTK_OBJECT (parent), "destroy",
+ e_gnome_dialog_parent_destroyed, dialog);
+
+ return dialog;
+}
diff --git a/e-util/e-dialog-utils.h b/e-util/e-dialog-utils.h
index a00ab75d21..1e1b8af22f 100644
--- a/e-util/e-dialog-utils.h
+++ b/e-util/e-dialog-utils.h
@@ -25,12 +25,22 @@
#include <gtk/gtkwindow.h>
#include <gtk/gtkwidget.h>
+#include <libgnomeui/gnome-types.h>
+#include <libgnomeui/gnome-dialog.h>
#include <X11/Xlib.h> /* Window */
-void e_set_dialog_parent (GtkWindow *dialog,
- GtkWidget *parent_widget);
-void e_set_dialog_parent_from_xid (GtkWindow *dialog,
- Window xid);
+void e_set_dialog_parent (GtkWindow *dialog,
+ GtkWidget *parent_widget);
+void e_set_dialog_parent_from_xid (GtkWindow *dialog,
+ Window xid);
+void e_gnome_dialog_set_parent (GnomeDialog *dialog,
+ GtkWindow *parent);
+GtkWidget *e_gnome_warning_dialog_parented (const char *warning,
+ GtkWindow *parent);
+GtkWidget *e_gnome_ok_cancel_dialog_parented (const char *message,
+ GnomeReplyCallback callback,
+ gpointer data,
+ GtkWindow *parent);
#endif