/* Implements a lightweight menubar widget.
Copyright (C) 1992 Lucid, Inc.
-Copyright (C) 1994-1995, 1997, 1999-2014 Free Software Foundation, Inc.
+Copyright (C) 1994-1995, 1997, 1999-2015 Free Software Foundation, Inc.
This file is part of the Lucid Widget Library.
int complete_length =
strlen (resourced_name) + strlen (val->value) + 2;
complete_name = XtMalloc (complete_length);
- *complete_name = 0;
- strcat (complete_name, resourced_name);
- strcat (complete_name, " ");
- strcat (complete_name, val->value);
+ char *z = stpcpy (complete_name, resourced_name);
+ *z++ = ' ';
+ strcpy (z, val->value);
}
val->toolkit_data = complete_name;
if (mw->menu.horizontal && i == 1)
ws->y += mw->menu.margin;
+ /* WMs like Gnome 3 ignores requests to move windows. So we
+ must destroy the current one and create a new to get it to move. */
+ XtUnrealizeWidget (ws->w);
+ XtRealizeWidget (ws->w);
+ ws->window = XtWindow (ws->w);
+
size_menu (mw, i);
fit_to_screen (mw, ws, previous_ws, mw->menu.horizontal && i == 1);
create_pixmap_for_menu (ws, mw);
- XtMoveWidget (ws->w, ws->x, ws->y);
- XtPopup (ws->w, XtGrabNone);
- XtResizeWidget (ws->w, ws->width, ws->height,
- mw->core.border_width);
- XtResizeWindow (ws->w);
+ XtConfigureWidget (ws->w, ws->x, ws->y, ws->width, ws->height,
+ ws->w->core.border_width);
display_menu (mw, i, False, &selection_position, NULL, NULL);
+ XtPopup (ws->w, XtGrabNone);
}
/* unmap the menus that popped down */
mw->menu.popped_up = True;
if (XtIsShell (XtParent ((Widget)mw)))
{
+ fprintf(stderr, "Config %d %d\n", x, y);
XtConfigureWidget (XtParent ((Widget)mw), x, y, w, h,
XtParent ((Widget)mw)->core.border_width);
XtPopup (XtParent ((Widget)mw), XtGrabExclusive);