To:
[email protected]
Subject: Patch 6.1a.002
Fcc: outbox
From: Bram Moolenaar <
[email protected]>
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
------------
Patch 6.1a.002
Problem: GTK: On some configurations, when closing a dialog from the window
manager, Vim hangs.
Solution: Catch the "destroy" signal. (Aric Blumer)
Files: src/gui_gtk.c
*** ../vim61a.001/src/gui_gtk.c Tue Feb 12 10:51:26 2002
--- src/gui_gtk.c Mon Feb 25 21:33:12 2002
***************
*** 1122,1127 ****
--- 1122,1138 ----
return TRUE;
}
+ /*
+ * Callback function for when the dialog was destroyed by a window manager.
+ */
+ static void
+ dlg_destroy_cb(int *p)
+ {
+ *p = TRUE; /* set dialog_destroyed to break out of the loop */
+ if (gtk_main_level() > 0)
+ gtk_main_quit();
+ }
+
/* ARGSUSED */
int
gui_mch_dialog( int type, /* type of dialog */
***************
*** 1136,1141 ****
--- 1147,1153 ----
int i;
int butcount;
int dialog_status = -1;
+ int dialog_destroyed = FALSE;
int vertical;
GtkWidget *dialog;
***************
*** 1188,1193 ****
--- 1200,1210 ----
gtk_signal_connect_after(GTK_OBJECT(dialog), "key_press_event",
GTK_SIGNAL_FUNC(dlg_key_press_event),
(gpointer) &cancel_data);
+ /* Catch the destroy signal, otherwise we don't notice a window manager
+ * destroying the dialog window. */
+ gtk_signal_connect_object(GTK_OBJECT(dialog), "destroy",
+ GTK_SIGNAL_FUNC(dlg_destroy_cb),
+ (gpointer)&dialog_destroyed);
gtk_grab_add(dialog);
***************
*** 1412,1418 ****
gtk_widget_show(dialog);
/* loop here until the dialog goes away */
! while (dialog_status == -1 && GTK_WIDGET_DRAWABLE(dialog))
gtk_main_iteration_do(TRUE);
if (dialog_status < 0)
--- 1429,1436 ----
gtk_widget_show(dialog);
/* loop here until the dialog goes away */
! while (dialog_status == -1 && !dialog_destroyed
! && GTK_WIDGET_DRAWABLE(dialog))
gtk_main_iteration_do(TRUE);
if (dialog_status < 0)
*** ../vim61a.001/src/version.c Mon Feb 25 21:15:54 2002
--- src/version.c Mon Feb 25 21:29:29 2002
***************
*** 608,609 ****
--- 608,611 ----
{ /* Add new patch number below this line */
+ /**/
+ 2,
/**/
--
Tips for aliens in New York: Land anywhere. Central Park, anywhere.
No one will care or indeed even notice.
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
/// Bram Moolenaar --
[email protected] --
http://www.moolenaar.net \\\
/// Creator of Vim --
http://vim.sf.net --
ftp://ftp.vim.org/pub/vim \\\
\\\ Project leader for A-A-P --
http://www.a-a-p.org ///
\\\ Help me helping AIDS orphans in Uganda -
http://iccf-holland.org ///