aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Djärv2010-04-17 20:18:12 +0200
committerJan Djärv2010-04-17 20:18:12 +0200
commit7aad87e884d84e136b57daee0506d85327be59df (patch)
treed3ebb097041ec00a71d0db1df80d3e96c5b51c55
parentf0bd159891705c30252646811a9be281e64e97c0 (diff)
downloademacs-7aad87e884d84e136b57daee0506d85327be59df.tar.gz
emacs-7aad87e884d84e136b57daee0506d85327be59df.zip
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.
-rw-r--r--lwlib/ChangeLog2
-rw-r--r--lwlib/xlwmenu.c19
2 files changed, 21 insertions, 0 deletions
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
index 10993a80cfc..35cb646fbcb 100644
--- a/lwlib/ChangeLog
+++ b/lwlib/ChangeLog
@@ -24,6 +24,8 @@
24 (XlwMenuDestroy): Free pixmap. Call XtDestroyWidget instead of 24 (XlwMenuDestroy): Free pixmap. Call XtDestroyWidget instead of
25 XDestroyWindow. 25 XDestroyWindow.
26 (handle_motion_event): Only call handle_single_motion_event once. 26 (handle_motion_event): Only call handle_single_motion_event once.
27 (set_window_type): New function.
28 (make_windows_if_needed, XlwMenuRealize): Call set_window_type.
27 29
28 * xlwmenuP.h (window_state): Add pixmap and w. 30 * xlwmenuP.h (window_state): Add pixmap and w.
29 31
diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c
index b78d5075ef0..d396aa651e9 100644
--- a/lwlib/xlwmenu.c
+++ b/lwlib/xlwmenu.c
@@ -1315,6 +1315,23 @@ expose_cb (Widget widget,
1315} 1315}
1316 1316
1317static void 1317static void
1318set_window_type (Widget w, XlwMenuWidget mw)
1319{
1320 int popup_menu_p = mw->menu.top_depth == 1;
1321 Atom type = XInternAtom (XtDisplay (w),
1322 popup_menu_p
1323 ? "_NET_WM_WINDOW_TYPE_POPUP_MENU"
1324 : "_NET_WM_WINDOW_TYPE_DROPDOWN_MENU",
1325 False);
1326
1327 XChangeProperty (XtDisplay (w), XtWindow (w),
1328 XInternAtom (XtDisplay (w), "_NET_WM_WINDOW_TYPE", False),
1329 XA_ATOM, 32, PropModeReplace,
1330 (unsigned char *)&type, 1);
1331}
1332
1333
1334static void
1318make_windows_if_needed (mw, n) 1335make_windows_if_needed (mw, n)
1319 XlwMenuWidget mw; 1336 XlwMenuWidget mw;
1320 int n; 1337 int n;
@@ -1372,6 +1389,7 @@ make_windows_if_needed (mw, n)
1372#ifdef HAVE_XFT 1389#ifdef HAVE_XFT
1373 windows [i].xft_draw = 0; 1390 windows [i].xft_draw = 0;
1374#endif 1391#endif
1392 set_window_type (windows [i].w, mw);
1375 } 1393 }
1376} 1394}
1377 1395
@@ -2039,6 +2057,7 @@ XlwMenuRealize (w, valueMask, attributes)
2039 mw->menu.windows [0].width = w->core.width; 2057 mw->menu.windows [0].width = w->core.width;
2040 mw->menu.windows [0].height = w->core.height; 2058 mw->menu.windows [0].height = w->core.height;
2041 2059
2060 set_window_type (mw->menu.windows [0].w, mw);
2042 create_pixmap_for_menu (&mw->menu.windows [0], mw); 2061 create_pixmap_for_menu (&mw->menu.windows [0], mw);
2043 2062
2044#ifdef HAVE_XFT 2063#ifdef HAVE_XFT