Comment 1 for bug 625398

Revision history for this message
Gary Lasker (gary-lasker) wrote :

The issue that causes the described focus problems with the Terms of Service popup window is that the current purchase dialog is modal. The attached branch reimplements the dialog as a gtk.Window rather than a gtk.Dialog, with signals replacing the calls to self.response() in the previous implementation. Using the attached branch, the Terms of Service popup window appears correctly in front of the dialog.

Note that one side-effect of using a non-modal window for the purchase dialog is that it becomes possible to refocus the main Software Center window to the foreground before the purchase has been completed (or canceled), leaving the purchase dialog in the background. In this case, the "Buy..." button in the appdetails screen still shows as insensitive (since the purchase is still in-progress). If you then navigate away from the appdetails screen and back again (or to the appdetails screen for a different app for sale, if there was one), it becomes possible to click "Buy..." a second time and this brings up a second purchase dialog. Obviously we'd need to add some code to handle these cases if we continue to use the dialog as non-modal.

It seems to me that a modal dialog is better (at least, until we reimplement the purchase UI inline per bug 618817). I wonder if the simplest and best fix might just be to change the link for the Terms of Service to go to a separate page in the current window rather than open a new window? Note that this is how the Ubuntu SSO Terms of Service link works (see attached screenshots). In fact, do we actually need two separate Terms of Service documents at all?