I'm using the latest version of JBidWatcher with 0.9.6 server, trunk client.
When clicking on the "test login" button, I suspect this is supposed to display a window. Instead, what I get is the following error message in the client's console:
Traceback (most recent call last): File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/ui_client_base.py", line 988, in _process_new_window self._process_new_common(packet, False) File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/ui_client_base.py", line 965, in _process_new_common self.make_new_window(wid, x, y, w, h, metadata, override_redirect, client_properties, auto_refresh_delay) File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/ui_client_base.py", line 973, in make_new_window window = ClientWindowClass(self, group_leader_window, wid, x, y, w, h, metadata, override_redirect, client_properties, auto_refresh_delay) File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/client_window_base.py", line 41, in __init__ self.init_window(metadata) File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/gtk2/client_window.py", line 72, in init_window GTKClientWindowBase.init_window(self, metadata) File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/gtk_base/gtk_client_window_base.py", line 50, in init_window ClientWindowBase.init_window(self, metadata) File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/client_window_base.py", line 54, in init_window self.update_metadata(metadata) File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/client_window_base.py", line 183, in update_metadata self.set_window_type(window_types) File "/mnt/data/src/xpra/src/build/lib.linux-x86_64-2.7/xpra/client/client_window_base.py", line 216, in set_window_type self.set_type_hint(hint) TypeError: enum values must be strings or ints
The server's log doesn't have any error message.
With debug log, this is what is being attempted on the window:
2013-07-12 18:00:47,588 setting window type to NORMAL - <enum GDK_WINDOW_TYPE_HINT_NORMAL of type GdkWindowTypeHint> 2013-07-12 18:00:47,592 setting window type to NORMAL - <enum GDK_WINDOW_TYPE_HINT_NORMAL of type GdkWindowTypeHint> 2013-07-12 18:00:47,634 setting window type to _NET_WM_TYPE_DIALOG - None
Worked around with the following patch:
diff --git a/src/xpra/client/client_window_base.py b/src/xpra/client/client_window_base.py index 2d57c7c..3526e0e 100644 --- a/src/xpra/client/client_window_base.py +++ b/src/xpra/client/client_window_base.py @@ -213,6 +213,8 @@ class ClientWindowBase(ClientWidgetBase): if hint: hints |= hint self.debug("setting window type to %s - %s", window_type, hint) + if hint == None: + return self.set_type_hint(hint) def set_fullscreen(self, fullscreen):
Please read: r3844 (more complicated than it seems)
Did this also occur with trunk before this change? If this change fixes it, I will backport, please confirm.
Note: very hard to test here because of the DPI issue with Java apps, how did you workaround that for testing?
r3844 confirmed working. I didn't have to do anything related to DPI - things worked out of the box.
By the way, your commit message in r3844 suggests that jbidwatcher might be using a wrong atom - but _NET_WM doesn't even appear in jbidwatcher. I thought I could patch jbidwatcher but I'm not sure it's really to blame. I think the function call is:
I think it calls into a java lib, not the app itself.
Thanks - will backport to v0.9.x
jbidwatcher is using a java toolkit (looks like "swing"), so the toolkit will translate
QUESTION_DIALOG into whatever platform-specific value is required, in this case it should be using
_NET_WM_WINDOW_TYPE_DIALOG for X11, but seems to be using
I cannot find anywhere in the spec that this value is acceptable, see EWMH _NET_WM_WINDOW_TYPE. In fact, a google search turns up next to nothing when using
_NET_WM_TYPE instead of
(there is one mention in the spec of
_NET_WM_TYPE_DESKTOP but it looks like a typo, or maybe an old version of the spec)
In any case, our latest code will accept both.
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/378