xpra icon
Bug tracker and wiki

Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#378 closed defect (fixed)

JBidWatcher with xpra 0.9.6 not fully working

Reported by: ahuillet Owned by: ahuillet
Priority: major Milestone: 0.10
Component: core Version:
Keywords: Cc:

Description (last modified by ahuillet)

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.

Help appreciated.

Change History (7)

comment:1 Changed 6 years ago by ahuillet

Description: modified (diff)

comment:2 Changed 6 years ago by ahuillet

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

comment:3 Changed 6 years ago by ahuillet

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):

comment:4 Changed 6 years ago by Antoine Martin

Owner: changed from Antoine Martin to ahuillet

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?

comment:5 Changed 6 years ago by ahuillet

r3844 confirmed working.
I didn't have to do anything related to DPI - things worked out of the box.

comment:6 Changed 6 years ago by ahuillet

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:

src/com/jbidwatcher/ui/util/OptionUI.java:    otherFrame.getRootPane().setWindowDecorationStyle(JRootPane.QUESTION_DIALOG);

I think it calls into a java lib, not the app itself.

Last edited 6 years ago by ahuillet (previous) (diff)

comment:7 Changed 6 years ago by Antoine Martin

Milestone: 0.10
Resolution: fixed
Status: newclosed

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 _NET_WM_TYPE_DIALOG.

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 _NET_WM_WINDOW_TYPE.
(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.

Last edited 6 years ago by Antoine Martin (previous) (diff)
Note: See TracTickets for help on using tickets.