emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/src xmenu.c


From: YAMAMOTO Mitsuharu
Subject: [Emacs-diffs] emacs/src xmenu.c
Date: Wed, 18 Mar 2009 08:37:33 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     YAMAMOTO Mitsuharu <mituharu>   09/03/18 08:37:33

Modified files:
        src            : xmenu.c 

Log message:
        (xdialog_show): Move Fredisplay call ...
        (Fx_popup_dialog): ... here.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xmenu.c?cvsroot=emacs&r1=1.339&r2=1.340

Patches:
Index: xmenu.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xmenu.c,v
retrieving revision 1.339
retrieving revision 1.340
diff -u -b -r1.339 -r1.340
--- xmenu.c     8 Jan 2009 03:16:12 -0000       1.339
+++ xmenu.c     18 Mar 2009 08:37:33 -0000      1.340
@@ -604,6 +604,17 @@
   if (! FRAME_X_P (f) && ! FRAME_MSDOS_P (f))
     error ("Can not put X dialog on this terminal");
 
+  /* Force a redisplay before showing the dialog.  If a frame is created
+     just before showing the dialog, its contents may not have been fully
+     drawn, as this depends on timing of events from the X server.  Redisplay
+     is not done when a dialog is shown.  If redisplay could be done in the
+     X event loop (i.e. the X event loop does not run in a signal handler)
+     this would not be needed.
+
+     Do this before creating the widget value that points to Lisp
+     string contents, because Fredisplay may GC and relocate them.  */
+  Fredisplay (Qt);
+
 #if ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK)
   /* Display a menu with these alternatives
      in the middle of frame F.  */
@@ -2448,14 +2459,6 @@
   /* No selection has been chosen yet.  */
   menu_item_selection = 0;
 
-  /* Force a redisplay before showing the dialog.  If a frame is created
-     just before showing the dialog, its contents may not have been fully
-     drawn, as this depends on timing of events from the X server.  Redisplay
-     is not done when a dialog is shown.  If redisplay could be done in the
-     X event loop (i.e. the X event loop does not run in a signal handler)
-     this would not be needed.  */
-  Fredisplay (Qt);
-
   /* Actually create and show the dialog.  */
   create_and_show_dialog (f, first_wv);
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]