GNOME Bugzilla – Bug 670874
floating toolbar not working
Last modified: 2012-05-19 19:52:19 UTC
I just received an audio only call which was working fine but the buttons in the floating bar was not clickable so it was impossible for me to start sending video or adjust the volume.
It works fine with clutter-gtk 1.0.4 so that's definitely a clutter-gtk regression. According to git bisect the regression has been introduced in e31baffd63dd9533eab4ca752f720bbbd0e1322f or 109252d0e634fd3eda697459e8482b9d48d92ec6
This toolbar is created in http://git.gnome.org/browse/empathy/tree/src/empathy-call-window.c#n1729
Unfortunatelly I didn't manage to reproduce this in a simple test app. :( Any chance a clutter dev could take a look on this? It's pretty critical as that's an important part of Empathy's new call UI. It's very easy to reproduce, just start a XMPP call with empathy 3.3.90 or newer (it's in Debian) and try to use the floating toolbar; the one containing 'Duration' see http://people.collabora.com/~cassidy/blog/empathy-call.jpg
are you sure you're setting all the actors as reactive? can you try by using: export CLUTTER_PICK=dump-pick-buffers and see if all the actors are painted when in pick mode? the commits your bisect point at didn't really change much in clutter-gtk: it's just a set of changes to reflect the changes in clutter that happened at the beginning of the 3.3 cycle.
(In reply to comment #4) > are you sure you're setting all the actors as reactive? I added a bunch of clutter_actor_set_reactive() calls to be sure and that didn't help. Anyway, this is working with clutter-gtk 1.0.4 so I doubt that's the problem. > can you try by using: > > export CLUTTER_PICK=dump-pick-buffers > > and see if all the actors are painted when in pick mode? It generates a bunch of pick-buffer-ClutterStage-*.png. Most of them are completely white and a few contains a shape of the size of the window.
but nothing with the floating toolbar? then something is marking it as not reactive.
there's also the option of using CLUTTER_DEBUG=event and look at the log to see what happens to the events coming from the pointer when the toolbar is involved. I cannot create a test case where a GtkToolbar inside a GtkClutterActor marked as reactive does not receive events - and there's even one in the the clutter-gtk examples directory (the gtk-clutter-window-test example).
Here is the log when clicking on a button. Note that the toolbar button doesn't appear to be clickable: its state doesn't change when hovering it like it does with gtk-clutter-window-test example which works fine. Clutter-Message: [ 73699312777]:[EVENT]:./x11/clutter-device-manager-xi2.c:784: button press : win:0x1e00020, device:TPPS/2 IBM TrackPoint (button:1, x:205.00, y:312.00, axes:yes) Clutter-Message: [ 73699312946]:[EVENT]:./x11/clutter-device-manager-xi2.c:784: button press : win:0x1e00020, device:Virtual core pointer (button:1, x:205.00, y:312.00, axes:yes) Clutter-Message: [ 73699313278]:[EVENT]:./clutter-main.c:2644: Event received Clutter-Message: [ 73699313399]:[EVENT]:./clutter-input-device.c:736: Actor under cursor (device 2, at 205, 312): ClutterStage Clutter-Message: [ 73699313453]:[EVENT]:./clutter-main.c:2600: Reactive event received at 205.00, 312.00 - actor: 0x22727f0 Clutter-Message: [ 73699313534]:[EVENT]:./clutter-main.c:2154: Restoring previous click count:1 (device:2, time:73686712) Clutter-Message: [ 73699313581]:[EVENT]:./clutter-main.c:2185: Reset click count (button: 1, time: 73699311) Clutter-Message: [ 73699313620]:[EVENT]:./clutter-main.c:2210: Storing click count: 1 (device:2, time:73699311) Clutter-Message: [ 73699422121]:[EVENT]:./x11/clutter-device-manager-xi2.c:784: button release: win:0x1e00020, device:TPPS/2 IBM TrackPoint (button:1, x:205.00, y:312.00, axes:yes) Clutter-Message: [ 73699422288]:[EVENT]:./x11/clutter-device-manager-xi2.c:784: button release: win:0x1e00020, device:Virtual core pointer (button:1, x:205.00, y:312.00, axes:yes) Clutter-Message: [ 73699422464]:[EVENT]:./clutter-main.c:2644: Event received Clutter-Message: [ 73699422586]:[EVENT]:./clutter-input-device.c:736: Actor under cursor (device 2, at 205, 312): ClutterStage Clutter-Message: [ 73699422638]:[EVENT]:./clutter-main.c:2600: Reactive event received at 205.00, 312.00 - actor: 0x22727f0 Clutter-Message: [ 73699422709]:[EVENT]:./clutter-main.c:2154: Restoring previous click count:1 (device:2, time:73699311)
Btw here is the log when hovering on a toolbar button: Clutter-Message: [ 84710914561]:[EVENT]:./x11/clutter-device-manager-xi2.c:1003: motion: win:0x2600020 device:TPPS/2 IBM TrackPoint (x:208.00, y:306.00, axes:yes) Clutter-Message: [ 84710914639]:[EVENT]:./x11/clutter-device-manager-xi2.c:1003: motion: win:0x2600020 device:Virtual core pointer (x:208.00, y:305.00, axes:yes) Clutter-Message: [ 84710914717]:[EVENT]:./clutter-main.c:2653: Event received Clutter-Message: [ 84710914778]:[EVENT]:./clutter-input-device.c:736: Actor under cursor (device 2, at 208, 305): ClutterStage Clutter-Message: [ 84710914803]:[EVENT]:./clutter-main.c:2600: Reactive event received at 208.00, 305.00 - actor: 0xb5ce30 (ClutterStage)
(In reply to comment #6) > but nothing with the floating toolbar? then something is marking it as not > reactive. Here are the images: http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00000.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00001.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00002.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00003.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00004.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00005.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00006.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00007.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00008.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00009.png http://people.collabora.com/~cassidy/clutter/pick-buffer-ClutterStage-00010.png I guess the blue rectangle we see on the first one is the toolbar?
commit 001e077b3575d2525bb7354d78e0e25837db73e7 Author: Sjoerd Simons <sjoerd@luon.net> Date: Sat May 19 20:30:57 2012 +0200 Call: Fix floating toolbar Empathy needed to mark the toolbar actor as reactive otherwise it won't be reactive to events (doh)... And empathy needed to stop calling gdk_disable_multi_device().. Empathy used to do this because it has to be called before GTK+ is initialized and clutter-gtk only called after GTK+ was initialized by other function in empathy. Unfortunately since clutter-gtk 1.1.2 instead of ensuring event actually work with clutter-gtk calling this function will actually break event handle (great fun!).. Oh and also bump the clutter-gtk requirement to 1.1.2 to ensure we get the right behaviour for events.. https://bugzilla.gnome.org/show_bug.cgi?id=670874