linphone-developers
[Top][All Lists]
Advanced

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

Re: [Linphone-developers] Incoming Call Event


From: Stefano Stabellini
Subject: Re: [Linphone-developers] Incoming Call Event
Date: Wed, 16 May 2007 18:02:42 -0500
User-agent: Thunderbird 1.5.0.10 (X11/20070403)

Simon Morlat wrote:
> Hi,
> 
> I already looked at how to put linphone in systray; this will be implemented 
> in next releases.

great!!

> Concerning the popup, normally upon incoming call, gtk_widget_show() is 
> called 
> on the main window. On previous releases of gtk, this caused the window to 
> become top level. However this is no more the case in current versions of 
> gtk. There is probably a gtk_window_*() method for that.
> If you find the appropriate gtk method, then you can just add it into 
> gtk/linphone.c, in this method:
> 
> void linphone_gnome_ui_show(LinphoneGnomeUI *ui)
> {
>       if (ui->main_window.window==NULL){
>               main_window_create(ui);
>               
>       }
> gtk_widget_show(ui->main_window.window); /* <- replace here by the good method
>       ui->main_window.shown_once=TRUE;
> }

I tried many different methods, both gtk_* and gdk_*, but the only one
that is able to raise the window on top of everything else is this:

gdk_window_set_keep_above (ui->main_window.window->window, 1);

this method set linphone's window as "above everything" and can not be
put below another window until

gdk_window_set_keep_above (ui->main_window.window->window, 0);

is called and this modality is deactivated.
Actually when
gdk_window_set_keep_above (ui->main_window.window->window, 0) is called
the window goes automatically below the other windows, where it was before.
I think that gdk_window_set_keep_above is also the method used by Ekiga
to raise the popup when there is a new incoming call. The problem is
that this is fine for a popup that can be closed without any
consequences, but in the case of linphone, closing the main window means
closing the application (unless you are going to change this when you
implement the systray).
As a consequence you can use this method passing 1 when there is an
incoming call, but the user is not able to set linphone in background
until you call this method again passing 0, but when you do the window
will go automatically to the background!

An idea could be to call the method with 1 when there is an incoming
call and call the method again with 0 when the user clicks on accept or
refuse, or if the user decides not to reply when linphone stops to ring.
This is exactly what ekiga does with its popup, the only difference is
that the user can also close the popup pressing on the X, but in our
case this would terminate linphone.







reply via email to

[Prev in Thread] Current Thread [Next in Thread]