Notification Widget



Hello,

I'm trying to put together a user notification widget. Similar to the speech bubble seen on some Gnome distros that pops out of the gnome panel.

I cannot user GtkMenu because it automatically hides away when the user clicks on anything in the TOPLEVEL_WINDOW. I would like the speech bubble/notification to only go away if the user clicks it away or a timeout has occurred.

Therefore I went about creating my own notification widget based on GtkWindow using type GTK_WINDOW_POPUP. But the problem with this is that even after calling _unstick, the window shows up on every desktop. This forced me to use GTK_WINDOW_TOPLEVEL for the notification widget. With this, I am able to switch off the window decorator just fine, and generally all my "notification widget" logic seems to work except:

1. The notification window widget shows up as a separate application in the gnome panel. How do I stop the window appearing as a separate application to the window manager?

2. If I add a gtk_box into the window and then later gtk_widget_destroy an item from the box, the notification window does not automatically resize. Calling either gtk_widget_queue_resize or gtk_widget_reset_shapes on the notification window has no effect. How do I get the notification window to resize once I've removed something from it?

3. If the user moves the main application's TOPLEVEL window, the notification window does not move with it. I have set gtk_window_set_transient_for() . How do I get the notification's TOPLEVEL window to move with the main application's TOPLEVEL window?


4. I don't know how to position the notification window properly. I'd like the notification window to fit into the bottom left corner of the main application's TOPLEVEL window.

------Main Window ------
|                      |
|                      |
|                      |
|                      |
|--NotifyWin---        |
|             |        |
|             |        |
------------------------

Hopefully my ascii art came through right. At the moment, I'm asking the main window for its geometry and then doing the following calculations.

Notify_X = Main_X;
Notify_Y = Main_Y + Main_Height - Notify_reqHeight;

The problem seems to be that Notify window's requested height can only be captured after the gtk_window_show. This means I'll be moving the window to its position while its visible to the user. I don't want to do this. Is there a way of getting the notify window to just align itself to that corner automagically? Window gravity perhaps?


thanks,


Vik.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]