(XlwMenuDestroy): Free pixmap. Call XtDestroyWidget instead of
XDestroyWindow.
(handle_motion_event): Only call handle_single_motion_event once.
+ (set_window_type): New function.
+ (make_windows_if_needed, XlwMenuRealize): Call set_window_type.
* xlwmenuP.h (window_state): Add pixmap and w.
display_menu (mw, i, False, NULL, NULL, NULL, NULL, NULL);
}
+static void
+set_window_type (Widget w, XlwMenuWidget mw)
+{
+ int popup_menu_p = mw->menu.top_depth == 1;
+ Atom type = XInternAtom (XtDisplay (w),
+ popup_menu_p
+ ? "_NET_WM_WINDOW_TYPE_POPUP_MENU"
+ : "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU",
+ False);
+
+ XChangeProperty (XtDisplay (w), XtWindow (w),
+ XInternAtom (XtDisplay (w), "_NET_WM_WINDOW_TYPE", False),
+ XA_ATOM, 32, PropModeReplace,
+ (unsigned char *)&type, 1);
+}
+
+
static void
make_windows_if_needed (mw, n)
XlwMenuWidget mw;
#ifdef HAVE_XFT
windows [i].xft_draw = 0;
#endif
+ set_window_type (windows [i].w, mw);
}
}
mw->menu.windows [0].width = w->core.width;
mw->menu.windows [0].height = w->core.height;
+ set_window_type (mw->menu.windows [0].w, mw);
create_pixmap_for_menu (&mw->menu.windows [0], mw);
#ifdef HAVE_XFT