please try the attached workaround and try and reproduce the problem

thanks
john

-- 
"This is just the kind of crackpot scheme I've been looking to champion!!!"
        - P.M. Hartke on 6U campaign
Index: src/frontends/xforms//FormBase.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormBase.C,v
retrieving revision 1.41
diff -u -r1.41 FormBase.C
--- src/frontends/xforms//FormBase.C    2002/02/16 15:59:48     1.41
+++ src/frontends/xforms//FormBase.C    2002/02/27 17:07:42
@@ -18,6 +18,7 @@
 
 #include "Dialogs.h"
 #include "FormBase.h"
+#include "GUIRunTime.h"
 #include "xformsBC.h"
 #include "support/LAssert.h"
 #include "Tooltips.h"
@@ -109,6 +110,9 @@
 
 void FormBase::hide()
 {
+       XSync(fl_get_display(), false);
+       GUIRunTime::processEvents();
+ 
        if (form() && form()->visible)
                fl_hide_form(form());
 }
Index: src/frontends/xforms//FormFiledialog.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormFiledialog.C,v
retrieving revision 1.18
diff -u -r1.18 FormFiledialog.C
--- src/frontends/xforms//FormFiledialog.C      2002/01/13 23:00:15     1.18
+++ src/frontends/xforms//FormFiledialog.C      2002/02/27 17:07:45
@@ -21,7 +21,8 @@
 using std::max;
 using std::sort;
 
-#include "frontends/Alert.h"
+#include "GUIRunTime.h"
+#include "Alert.h"
 #include "support/FileInfo.h"
 #include "support/lyxlib.h"
 #include "support/lstrings.h"
@@ -513,6 +514,8 @@
 // RunDialog: handle dialog during file selection
 bool FileDialog::Private::RunDialog()
 {
+       bool ret = true;
+ 
        force_cancel = false;
        force_ok = false;
        
@@ -522,13 +525,19 @@
 
                 if (pObject == pFileDlgForm->Ready) {
                        if (HandleOK())
-                               return true;
+                               goto out;
                } else if (pObject == pFileDlgForm->Cancel
-                          || force_cancel)
-                       return false;
-               else if (force_ok)
-                       return true;
+                          || force_cancel) {
+                       ret = false;
+                       goto out; 
+               } else if (force_ok)
+                       goto out;
        }
+
+out:
+       GUIRunTime::processEvents();
+       XSync(fl_get_display(), false);
+       return ret;
 }
 
 

Reply via email to