Support matching _NET_WM_WINDOW_TYPE_NOTIFICATION

This commit fixes #1969 by adding support for matching a window's type
against _NET_WM_WINDOW_TYPE_NOTIFICATION. The userguide and tests were
updated to reflect this change.
This commit is contained in:
Florian Merkel 2015-12-07 12:34:24 +01:00
parent 954927ccc4
commit 33f017daa9
6 changed files with 10 additions and 4 deletions

View File

@ -1657,7 +1657,7 @@ window_role::
window_type::
Compare the window type (_NET_WM_WINDOW_TYPE). Possible values are
+normal+, +dialog+, +utility+, +toolbar+, +splash+, +menu+, +dropdown_menu+,
+popup_menu+ and +tooltip+.
+popup_menu+, +tooltip+ and +notification+.
id::
Compares the X11 window ID, which you can get via +xwininfo+ for example.
title::

View File

@ -20,6 +20,7 @@ xmacro(_NET_WM_WINDOW_TYPE_MENU)
xmacro(_NET_WM_WINDOW_TYPE_DROPDOWN_MENU)
xmacro(_NET_WM_WINDOW_TYPE_POPUP_MENU)
xmacro(_NET_WM_WINDOW_TYPE_TOOLTIP)
xmacro(_NET_WM_WINDOW_TYPE_NOTIFICATION)
xmacro(_NET_WM_DESKTOP)
xmacro(_NET_WM_STRUT_PARTIAL)
xmacro(_NET_CLIENT_LIST)

View File

@ -330,6 +330,8 @@ void match_parse_property(Match *match, const char *ctype, const char *cvalue) {
match->window_type = A__NET_WM_WINDOW_TYPE_POPUP_MENU;
} else if (strcasecmp(cvalue, "tooltip") == 0) {
match->window_type = A__NET_WM_WINDOW_TYPE_TOOLTIP;
} else if (strcasecmp(cvalue, "notification") == 0) {
match->window_type = A__NET_WM_WINDOW_TYPE_NOTIFICATION;
} else {
ELOG("unknown window_type value \"%s\"\n", cvalue);
match->error = sstrdup("unknown window_type value");

View File

@ -175,7 +175,8 @@ xcb_atom_t xcb_get_preferred_window_type(xcb_get_property_reply_t *reply) {
atoms[i] == A__NET_WM_WINDOW_TYPE_MENU ||
atoms[i] == A__NET_WM_WINDOW_TYPE_DROPDOWN_MENU ||
atoms[i] == A__NET_WM_WINDOW_TYPE_POPUP_MENU ||
atoms[i] == A__NET_WM_WINDOW_TYPE_TOOLTIP) {
atoms[i] == A__NET_WM_WINDOW_TYPE_TOOLTIP ||
atoms[i] == A__NET_WM_WINDOW_TYPE_NOTIFICATION) {
return atoms[i];
}
}

View File

@ -380,7 +380,8 @@ my %window_types = (
'menu' => '_NET_WM_WINDOW_TYPE_MENU',
'dropdown_menu' => '_NET_WM_WINDOW_TYPE_DROPDOWN_MENU',
'popup_menu' => '_NET_WM_WINDOW_TYPE_POPUP_MENU',
'tooltip' => '_NET_WM_WINDOW_TYPE_TOOLTIP'
'tooltip' => '_NET_WM_WINDOW_TYPE_TOOLTIP',
'notification' => '_NET_WM_WINDOW_TYPE_NOTIFICATION'
);
while (my ($window_type, $atom) = each %window_types) {

View File

@ -54,7 +54,8 @@ my %window_types = (
'menu' => '_NET_WM_WINDOW_TYPE_MENU',
'dropdown_menu' => '_NET_WM_WINDOW_TYPE_DROPDOWN_MENU',
'popup_menu' => '_NET_WM_WINDOW_TYPE_POPUP_MENU',
'tooltip' => '_NET_WM_WINDOW_TYPE_TOOLTIP'
'tooltip' => '_NET_WM_WINDOW_TYPE_TOOLTIP',
'notification' => '_NET_WM_WINDOW_TYPE_NOTIFICATION'
);
while (my ($window_type, $atom) = each %window_types) {