# HG changeset patch # User Jan D. # Date 1271528292 -7200 # Node ID 32fc68b9d103cad478e53715aa172bfec21f7ddb # Parent 948294352a25f0a8a9966b1574d4bf5fb52017bb Set _NET_WM_WINDOW_TYPE in menus. Looks bad with compiz otherwise. xlwmenu.c (set_window_type): New function. (make_windows_if_needed, XlwMenuRealize): Call set_window_type. diff -r 948294352a25 -r 32fc68b9d103 lwlib/ChangeLog --- a/lwlib/ChangeLog Sat Apr 17 19:49:18 2010 +0200 +++ b/lwlib/ChangeLog Sat Apr 17 20:18:12 2010 +0200 @@ -24,6 +24,8 @@ (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. diff -r 948294352a25 -r 32fc68b9d103 lwlib/xlwmenu.c --- a/lwlib/xlwmenu.c Sat Apr 17 19:49:18 2010 +0200 +++ b/lwlib/xlwmenu.c Sat Apr 17 20:18:12 2010 +0200 @@ -1315,6 +1315,23 @@ } 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; int n; @@ -1372,6 +1389,7 @@ #ifdef HAVE_XFT windows [i].xft_draw = 0; #endif + set_window_type (windows [i].w, mw); } } @@ -2039,6 +2057,7 @@ 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