BTW I doubt I had anything to do with the small frame problems. Sounds
like Andy's turf.
Mike Alexander wrote:
With the recent big set of changes, I've had problems with ediff
which probably will affect other things. There are two problems at
least. When ediff is setting up the frame for the control window it
creates it with a height and width of 1 and then changes it to the
size it really wants. XEmacs crashes if any frame has a height less
than 2. This happens because regenerate_window in redisplay.c gets a
negative value for yend. In my case the pixel height of the window
is 28 but window_bottom_gutter_height is 32 giving an available space
of -4 pixels to display the contents of the frame.
The other problem is that when ediff runs diff the output is
appearing (very briefly) in a console window instead of being piped
back to XEmacs. I tracked this down to some code in create_child in
ntproc.c which is ifdefed out if HAVE_NTGUI is not defined:
#ifdef HAVE_NTGUI
if (NILP (Vwin32_start_process_show_window))
start.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
else
start.dwFlags = STARTF_USESTDHANDLES;
start.wShowWindow = SW_HIDE;
start.hStdInput = GetStdHandle (STD_INPUT_HANDLE);
start.hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE);
start.hStdError = GetStdHandle (STD_ERROR_HANDLE);
#endif /* HAVE_NTGUI */
This is the code that passes the pipe end points to the child
process. When I put it back in, ediff works. I don't know why it's
ifdefed out, but it (or something like it) is needed on NT, at least.
Has anyone else seen these problems?
Mike
--
Ben
In order to save my hands, I am cutting back on my mail. I also write
as succinctly as possible -- please don't be offended. If you send me
mail, you _will_ get a response, but please be patient, especially for
XEmacs-related mail. If you need an immediate response and it is not
apparent in your message, please say so. Thanks for your understanding.
See also
http://www.666.com/ben/typing.html.