I agree that my present solution is a workaround. The code I added checks whether the window is actually in a different place than the frame that is recorded in the NSWindow object, and adjusts the mouse location accordingly. But obviously the real problem is that the NSWindow doesn't know where the window really is.

Are you saying that the backend notifies the gui of the window movement through posting an asynchronous notification? I would have thought it would make a direct call for something like that, but then I don't know anything about the backend and how it's structured. I assumed that the notification was just broken somehow (or not implemented) but I don't have the knowledge needed to fix the problem, hence the workaround.

I don't know what the right solution is, but it doesn't seem like developers who use GNUstep (such as myself) should have to worry about running an event loop periodically in order to guarantee the internal consistency of the system. But maybe that wasn't quite what you meant.

--
Doug Simons
Principal Developer


TestPlant Inc   T    +1 720-890-0211 ext 13
4730 Walnut Street      F    +1 720-890-0209
Boulder, CO 80301       doug.sim...@testplant.com
USA
http://www.testplant.com
This email and any attachments may contain privileged / confidential information. If you have received this email in error or believe that you are not the intended recipient, please delete all content and attached files and contact TestPlant via the switchboard on +1 720-890-0211 or via return e-mail. You should not copy, forward or use any part of the contents in any way. Any such unauthorised use or disclosure may be unlawful.

On Nov 18, 2009, at 2:11 AM, Fred Kiefer wrote:

Doug Simons schrieb:
Author: dpsimons
Date: Mon Nov 16 23:51:14 2009
New Revision: 29026

URL: http://svn.gna.org/viewcvs/gnustep?rev=29026&view=rev
Log:
fix problem with mouse tracking being off in submenus that are shifted to stay on screen

Modified:
   libs/gui/branches/testplant_1/Source/NSMenuView.m

I think that this is an important patch we should discuss on this
mailing list. The patch clearly is wrong, as it is only trying to
address the result of a problem, but not the problem itself. What
happens is that after opening a submenu the interaction of the mouse has an offset, when the window manager repositions the submenu. I think that
this is caused by the code not accepting any repositioning events for
the submenu. I would expect that the backend tries to tell gui where the
submenu window did get positioned, but as we are in a tracking loop we
ignore these events.
An easy solution would be to run the normal event loop for a short time
after we attach a new submenu, but this looks like just another hack.
Any better idea, how to resolve the issue?


_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnustep-dev


_______________________________________________
Gnustep-dev mailing list
Gnustep-dev@gnu.org
http://lists.gnu.org/mailman/listinfo/gnustep-dev

Reply via email to