]> git.eshelyaron.com Git - emacs.git/commitdiff
* xlwmenu.c (remap_menubar): Re-realize menu to force move under Gnome 3.
authorJan D <jan.h.d@swipnet.se>
Sat, 28 Feb 2015 15:20:45 +0000 (16:20 +0100)
committerJan D <jan.h.d@swipnet.se>
Sat, 28 Feb 2015 15:20:45 +0000 (16:20 +0100)
lwlib/ChangeLog
lwlib/xlwmenu.c

index 8d536f0b3ad2e864afa384c22c8403fc87a960f7..c98d72575a8511ff01eb24e686177f818c256e85 100644 (file)
@@ -1,3 +1,8 @@
+2015-02-28  Jan Djärv  <jan.h.d@swipnet.se>
+
+       * xlwmenu.c (remap_menubar): Re-realize menu to force move under
+       Gnome 3.
+
 2015-01-04  Paul Eggert  <eggert@cs.ucla.edu>
 
        Less 'make' chatter for lwlib
index 4cd0e42b8953b0a3271f573ca236b0d51c44b0b4..f781b7ee54c1b45aa658724cedc2c1a473659582 100644 (file)
@@ -1510,17 +1510,21 @@ remap_menubar (XlwMenuWidget mw)
       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 */
@@ -2615,6 +2619,7 @@ pop_up_menu (XlwMenuWidget mw, XButtonPressedEvent *event)
   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);