diff options
| author | Jan Djärv | 2010-04-17 20:18:12 +0200 |
|---|---|---|
| committer | Jan Djärv | 2010-04-17 20:18:12 +0200 |
| commit | 7aad87e884d84e136b57daee0506d85327be59df (patch) | |
| tree | d3ebb097041ec00a71d0db1df80d3e96c5b51c55 | |
| parent | f0bd159891705c30252646811a9be281e64e97c0 (diff) | |
| download | emacs-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/ChangeLog | 2 | ||||
| -rw-r--r-- | lwlib/xlwmenu.c | 19 |
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 | ||
| 1317 | static void | 1317 | static void |
| 1318 | set_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 | |||
| 1334 | static void | ||
| 1318 | make_windows_if_needed (mw, n) | 1335 | make_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 |