Subject: bug#8851: 24.0.50; regression: special-display-frame is no longer dedicated

From: "Drew Adams" <[email-masked]>
Date: Mon, 13 Jun 2011 09:08:05 -0700

This regression was introduced between this build (from today,
6/13/2011) and the Windows build of LAST week, which was this:
 
In GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600)
 of 2011-06-06 on 3249CTO
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (4.5) --no-opt --cflags
-Ic:/build/include'
 
I don't have a recipe starting from emacs -Q.  But these are the
symptoms:
 
I have non-nil `pop-up-frames'.  I use a special-display frame for
buffers such as `*Buffer List*' and `*info*'.  
My value of `special-display-regexps' is this:
("[ ]?[*][^*]+[*]")
 
My special-display frames hav a different background color from my
regular frames.  I visit a file foo.el, then use `C-x 5 0' to remove
its frame. I hit C-x C-b and get the buffer menu in a new,
special-display frame.  I click mouse-2 on the foo.el line to
visit that file.
 
Prior to this week's build, this opens foo.el in a new frame, in a
regular frame.  With this week's build it visits foo.el in the same
frame that showed `*Buffer List*'.  IOW, `pop-up-frames' is not being
respected (in the case where there is not already a frame showing
foo.el).
 
What is happening is that `Buffer-menu-mouse-select' is incorrectly
invoking `switch-to-buffer' instead of `switch-to-buffer-other-window'.
This is happening because the window of the special-display buffer is
not dedicated, as it should be.
 
This returns nil:
(window-dedicated-p #<window 14 on *Buffer List*>)
 
Similarly, M-: (window-dedicated-p (selected-window)) in any
special-display buffer window returns nil.  It should return non-nil.
 
In my setup the windows of buffers such as `*Buffer List*' and `*info*'
should definitely be dedicated.  They are special-display buffers (and
their special-display-frame backgrounds confirm this).
 
As the manual says, and as has always been the behavior in previous
Emacs versions, "By default, special display means to give the buffer a
dedicated frame."

The frames showing special-display buffers should be dedicated frames.
Clicking mouse-2 on a buffer name in `*Buffer List*' should not visit
that buffer in the same window/frame.
 
In GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600)
 of 2011-06-13 on 3249CTO
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (4.5) --no-opt --cflags
-Ic:/build/include'