Subject: bug#1348: set-frame-width and set-frame-position seem buggy on at least MSWindows

From: martin rudalics <[email-masked]>
Date: Mon, 01 Dec 2008 08:28:00 +0100

>> The wrapping menubar problem is one of the w32 API - it's nothing we can
 >> do about.  Personally, I considered Jason's reaction too drastic.
 >
 > Please explain. This is my first contribution to this thread, so obviously you
 > are talking about something in the distant past which my memory cannot recall.

As Eli explained earlier, this thread is a consequence of your change

2007-10-09  Jason Rumney  <[email-masked]>

	* w32term.c (x_set_window_size): Disable code that attempts to tell
	Lisp code about a size change before it actually happens.

which causes, according to the OP, a sequence of frame changes like

   (set-frame-position (selected-frame) 0 0)
   (sleep-for 2) ; not originally in my .emacs -- testing only
   (set-frame-width (selected-frame) 150)
   (sleep-for 2)
   (set-frame-height (selected-frame) 55)
   (sleep-for 2))

to virtually do the first operation only.  According to grischka
something similar happens on X/GTK as well, but he never told us what he
sees there.

IIUC your change is motivated as

   /* The following mirrors what is done in xterm.c. It appears to be
      for informing lisp of the new size immediately, while the actual
      resize will happen asynchronously. But on Windows, the menu bar
      automatically wraps when the frame is too narrow to contain it,
      and that causes any calculations made here to come out wrong. The
      end is some nasty buggy behavior, including the potential loss
      of the minibuffer.

      Disabling this code is either not sufficient to fix the problems
      completely, or it causes fresh problems, but at least it removes
      the most problematic symptom of the minibuffer becoming unusable.

      [...]
   */

Given that wrapping menubars are not very frequent, it seems to me that
by now the "fresh problems" outweigh the "menubar problem", but YMMV.

martin