logo       

[mutter] Tolerate all standard _NET_WM_WINDOW_TYPE types for managed window: msg#08187

svn-commits-list

Subject: [mutter] Tolerate all standard _NET_WM_WINDOW_TYPE types for managed windows

commit a576f7a1ea98840dd3c83f011f78583c1437fba1
Author: Tomas Frydrych <tf@xxxxxxxxxxxxxxx>
Date: Fri Jul 31 19:11:54 2009 +0100

Tolerate all standard _NET_WM_WINDOW_TYPE types for managed windows

Although the spec designates some window types as typically used for
override redirect windows, it does not prohibit the use of these with
managed windows, so we should not abort if we encounter one of these.

http://bugzilla.gnome.org/show_bug.cgi?id=583870

src/core/window.c | 58 ++++++++++++++++++++++++++++++++++------------------
1 files changed, 38 insertions(+), 20 deletions(-)
---
diff --git a/src/core/window.c b/src/core/window.c
index c0e4e8a..cbad732 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -6413,24 +6413,7 @@ recalc_window_type (MetaWindow *window)

old_type = window->type;

- if (window->override_redirect)
- {
- if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_DROPDOWN_MENU)
- window->type = META_WINDOW_DROPDOWN_MENU;
- else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_POPUP_MENU)
- window->type = META_WINDOW_POPUP_MENU;
- else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_TOOLTIP)
- window->type = META_WINDOW_TOOLTIP;
- else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_NOTIFICATION)
- window->type = META_WINDOW_NOTIFICATION;
- else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_COMBO)
- window->type = META_WINDOW_COMBO;
- else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_DND)
- window->type = META_WINDOW_DND;
- else
- window->type = META_WINDOW_OVERRIDE_OTHER;
- }
- else if (window->type_atom != None)
+ if (window->type_atom != None)
{
if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_DESKTOP)
window->type = META_WINDOW_DESKTOP;
@@ -6448,9 +6431,44 @@ recalc_window_type (MetaWindow *window)
window->type = META_WINDOW_DIALOG;
else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_NORMAL)
window->type = META_WINDOW_NORMAL;
+ /* The below are *typically* override-redirect windows, but the spec does
+ * not disallow using them for managed windows.
+ */
+ else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_DROPDOWN_MENU)
+ window->type = META_WINDOW_DROPDOWN_MENU;
+ else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_POPUP_MENU)
+ window->type = META_WINDOW_POPUP_MENU;
+ else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_TOOLTIP)
+ window->type = META_WINDOW_TOOLTIP;
+ else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_NOTIFICATION)
+ window->type = META_WINDOW_NOTIFICATION;
+ else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_COMBO)
+ window->type = META_WINDOW_COMBO;
+ else if (window->type_atom ==
window->display->atom__NET_WM_WINDOW_TYPE_DND)
+ window->type = META_WINDOW_DND;
+ else if (window->override_redirect)
+ window->type = META_WINDOW_OVERRIDE_OTHER;
else
- meta_bug ("Set a type atom for %s that wasn't handled in
recalc_window_type\n",
- window->desc);
+ {
+ char *atom_name;
+
+ /*
+ * Fallback on a normal type, and print warning. Don't abort.
+ */
+ window->type = META_WINDOW_NORMAL;
+
+ meta_error_trap_push (window->display);
+ atom_name = XGetAtomName (window->display->xdisplay,
+ window->type_atom);
+ meta_error_trap_pop (window->display, TRUE);
+
+ meta_warning ("Unrecognized type atom [%s] set for %s \n",
+ atom_name ? atom_name : "unknown",
+ window->desc);
+
+ if (atom_name)
+ XFree (atom_name);
+ }
}
else if (window->xtransient_for != None)
{
_______________________________________________
SVN-commits-list mailing list (read only)
http://mail.gnome.org/mailman/listinfo/svn-commits-list

Want to limit the commits to a few modules? Go to above URL, log in to edit
your options and select the modules ('topics') you want.

<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | Mail Home | sitemap | FAQ | advertise