2009/3/2 Ethan <[email protected]>:
> log is attached. the last bit (the relevant bit?) is:
> got ['button-action', 1, 5, 1, [39, 94], []]
> current mask: set([]), wanted: set([])
> Gdk-ERROR **: The program 'xpra' received an X Window System error.
> This probably reflects a bug in the program.
> The error was 'BadValue (integer parameter out of range for operation)'.
>   (Details: serial 455 error_code 2 request_code 131 minor_code 2)
>   (Note to programmers: normally, X errors are reported asynchronously;
>    that is, you will receive the error a while after causing it.
>    To debug your program, run it with the --sync command line
>    option to change this behavior. You can then get a meaningful
>    backtrace from your debugger if you break on the gdk_x_error() function.)
> aborting...

Ugh -- it looks like your Xvfb (or your Xvfb's XTest extension) thinks
that mice have only 3 buttons. (X treats mouse wheels as "extra
buttons".)

Can you test the attached patch? With it applied (on the server side),
then using the wheel *should* no longer crash your session. (And you
should see a nice warning in your .log file.) However, the mouse wheel
still won't *work*, it will just be ignored. I'm not sure if there's
any magic incantation that will convince Xvfb to accept mouse wheel
events -- does anyone know? Do mouse wheels work for anyone else? (I
don't have any wheel mice handy to test.)

What does 'xdpyinfo | head' say when run against the xpra server?
(I.e., 'DISPLAY=:36 xpydinfo | head'.)

-- Nathaniel
#
# old_revision [e42d6e344e36c012b1dfd5dee5bc3537524b75b7]
#
# patch "xpra/server.py"
#  from [1c658cde8dbe91e5dfb0fdb37b5c038d7d88881c]
#    to [7151d2da4fd320ca1b8e699ac02bab89e0339f02]
#
============================================================
--- xpra/server.py	1c658cde8dbe91e5dfb0fdb37b5c038d7d88881c
+++ xpra/server.py	7151d2da4fd320ca1b8e699ac02bab89e0339f02
@@ -23,6 +23,7 @@ from wimpiggy.keys import grok_modifier_
                                get_children)
 from wimpiggy.window import OverrideRedirectWindowModel, Unmanageable
 from wimpiggy.keys import grok_modifier_map
+from wimpiggy.error import XError, trap
 
 from wimpiggy.log import Logger
 log = Logger()
@@ -542,7 +543,14 @@ class XpraServer(gobject.GObject):
         self._make_keymask_match(modifiers)
         self._desktop_manager.raise_window(self._id_to_window[id])
         self._move_pointer(pointer)
-        xtest_fake_button(gtk.gdk.display_get_default(), button, depressed)
+        try:
+            trap.call_unsynced(xtest_fake_button,
+                               gtk.gdk.display_get_default(),
+                               button, depressed)
+        except XError, e:
+            log.warn("Failed to pass on (un)press of mouse button %s"
+                     + " (perhaps your Xvfb does not support mousewheels?)",
+                     button)
 
     def _process_pointer_position(self, proto, packet):
         (_, id, pointer, modifiers) = packet
_______________________________________________
Parti-discuss mailing list
[email protected]
http://lists.partiwm.org/cgi-bin/mailman/listinfo/parti-discuss

Reply via email to