I'm currently implementing a status bar plugin for Vagalume (a Last.fm
player) which just would allow the user to execute most of the common
actions (Play/Stop, Skip, Love and Ban songs) from the status bar,
without having to "leave" the application (s)he is currently using to
open the Vagalume main window.

In the other hand, another interesting feature for the plugin is that
it'd allow the user to hide the Vagalume main window from the Task
navigator, so you can control it even when it's not shown in the TN.

Regarding to the communication between the plugin and Vagalume, just to
say it's been carrying out by Dbus messages which the desired action to
be executed (Skip song, Hide/Show the app window...)

At last, let's group the actions that could be sent from the plugin into
two groups, to better explain the problem later:

 1. Actions which will require Gtk logic in Vagalume:
    * Show/Hide the main window (gtk_window_present / gtk_widget_hide)
    * Love/Ban songs (they will show a confirmation dialog)

 2. Actions which won't require Gtk logic in Vagalume:
    * Play / Stop / Skip: They just talk with the controller of the app.
    * Close Vagalume: self-explained.

That said, here it goes the problem:

When the application is iconified and I try to send it any of the
request in *group 1* (with Gtk logic), Vagalume does nothing until it's
 deiconified again. And this is something that doesn't happen when the
application is not iconified or even when it's hidden (so no icon is
shown in the TN).

Moreover, actions from *group 2* sent from the plugin works nice even
when the main window is iconified.

A couple of examples would help to better see the picture:

Application is not iconified:
 1. Open Vagalume and start playing a song
 2. Execute any action in *group 1* from the status bar plugin, i.e.
"Love" or "Hide".
 3. Observe how Vagalume shows a confirmation dialog to really love the
song, or how it gets its main window hidden (so the icon removed from
the TN).

Application is iconified:
 1. Open Vagalume and start playing a song
 2. Minimize Vagalume, so the icon is still shown in the TN.
 3. Execute any action in *group 1* from the status bar plugin, i.e.
"Love" or "Hide".
 4. Observe how Vagalume *neither* shows the 'love song' confirmation
dialog into another new song, nor hide the main application window.
 5. Click in Vagalume icon in the TN to show its main window again.
 6. After the window is shown, Vagalume shows the confirmation dialog,
or gets its main window hidden if you've clicked on "Hide" instead of

...so it looks as it queued those requests while minimized, and take
care of them just when it's shown again. Quite odd.

Yesterday, I also wrote an small example to check out whether this
strange behaviour belongs also to Gnome or not, and my conclusion is
that it only happens in Maemo, since the small example behaves as
expected in Gnome, even when the window is iconified, while it
replicates exactly the same problem when testing it in Maemo.

I don't know if it could be a problem in Maemo's Gtk / hildon libraries,
or even in the window manager, but which is clear is that something is
wrong somewhere. Question is... where?

I'll keep looking for an explanation (and a fix) on my own, but any help
from this list would be also highly appreciated, so thanks in advance.


maemo-developers mailing list

Reply via email to