Index: Source/NSWindow.m
===================================================================
--- Source/NSWindow.m	(revisión: 35603)
+++ Source/NSWindow.m	(copia de trabajo)
@@ -431,6 +431,7 @@
 
 - (void) _initDefaults
 {
+  _refresh_count = 0;
   [super _initDefaults];
   [self setExcludedFromWindowsMenu: YES];
   [self setReleasedWhenClosed: NO];
Index: Source/GSThemeMenu.m
===================================================================
--- Source/GSThemeMenu.m	(revisión: 35603)
+++ Source/GSThemeMenu.m	(copia de trabajo)
@@ -28,6 +28,7 @@
 
 #import <Foundation/NSString.h>
 #import <Foundation/NSArchiver.h>
+#import <Foundation/NSUserDefaults.h>
 #import "AppKit/NSMenu.h"
 #import "AppKit/NSWindow.h"
 #import "AppKit/NSMenuView.h"
@@ -42,6 +43,8 @@
 @interface NSWindow (Private)
 - (GSWindowDecorationView *) windowView;
 - (void) _setMenu: (NSMenu *)menu;
+- (int) refreshCount;
+- (void) updateRefreshCount;
 @end
 
 @implementation NSWindow (Private)
@@ -54,24 +57,35 @@
 {
   [super setMenu: menu];
 }
+
+- (int) refreshCount
+{
+  return _refresh_count;
+}
+
+- (void) updateRefreshCount
+{
+  _refresh_count++;
+}
 @end
 
 @implementation	GSTheme (Menu)
 - (void) setMenu: (NSMenu *)menu
        forWindow: (NSWindow *)window
 {
+  int count = [window refreshCount];
+  int redisplay = [[NSUserDefaults standardUserDefaults]
+		    integerForKey: @"GSRedisplayMenu"];
   GSWindowDecorationView *wv = [window windowView];
 
-  // protect against stupid calls from updateAllWindowsWithMenu:
-  if ([window menu] == menu)
+  if ( ([window menu] == menu) && (count > redisplay) )
     return;
 
+  [window updateRefreshCount];
+
   // Prevent recursion
   [window _setMenu: menu];
 
-  // Remove any possible old menu view
-  [wv removeMenuView];
-
   //NSLog(@"Adding menu %@ to window %@", menu, window);
   if (menu != nil)
   {
@@ -80,6 +94,8 @@
     [menuView setMenu: menu];
     [menuView setHorizontal: YES];
     [menuView setInterfaceStyle: NSWindows95InterfaceStyle];
+    // Remove any possible old menu view
+    [wv removeMenuView];
     [wv addMenuView: menuView];
     [menuView sizeToFit];
     RELEASE(menuView);
Index: Headers/AppKit/NSWindow.h
===================================================================
--- Headers/AppKit/NSWindow.h	(revisión: 35603)
+++ Headers/AppKit/NSWindow.h	(copia de trabajo)
@@ -162,6 +162,7 @@
 @interface NSWindow : NSResponder <NSCoding>
 {
   NSRect        _frame;
+  int           _refresh_count;
   NSSize        _minimumSize;
   NSSize        _maximumSize;
   NSSize        _increments;
