Follow-up Comment #4, bug #36586 (project gnustep):

Well, I finally found the problem here. There are two problems.

First, GSThemeMenu only update the menu if the NSMenu has changed, but not if
the position or size of the menu has changed (-setMenu:forWindow:). In fact
this method is executed only once time. Further calls returns.

Second, the GSWindowDecorationVIew can't remove any previous menu view.
Currently this is not a problem, because the menu is updated only once time
(first problem described above). The method -removeMenuView:, can't remove the
menu view because it does the search in the wrong NSView.

You can test this easily, in GSThemeMenu declare a variable "num":

static int num = 0;

Then, instead the check:

if ([window menu] == menu)
   return;


Write:

  if (num == 3)
    return;

  num++;

We will allow two updates. Compile and run an aplication (menu in-window of
course). For example Ink. You will see two menus, the previous menu has not
been removed.

If I write:

      NSLog(NSStringFromRect([v frame]));

in while loop of -removeMenuView, I don't see any NSMenuView object. Where was
added this? In the case that it has been added in the wrong view. I guess that
NSToolBar objects are added also in the wrong view.

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?36586>

_______________________________________________
  Mensaje enviado vía/por Savannah
  http://savannah.gnu.org/


_______________________________________________
Bug-gnustep mailing list
Bug-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-gnustep

Reply via email to