Bug 214508

Summary: error dialogs are modal
Product: [Fedora] Fedora Reporter: Bill Nottingham <notting>
Component: virt-managerAssignee: Daniel Berrangé <berrange>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: berrange, cevich, crobinso, hbrock, quintela, rvokal, virt-maint, xen-maint
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-03-04 16:39:21 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Bill Nottingham 2006-11-07 21:55:03 UTC
Description of problem:

If I have an error up (such as domain creation failed), other existing virtual
machine consoles do not acccept keyboard or mouse input.

Version-Release number of selected component (if applicable):

virt-manager-0.2.5-1.el5

Comment 1 Red Hat Bugzilla 2007-07-25 02:00:50 UTC
change QA contact

Comment 2 Chris Evich 2009-01-12 20:02:00 UTC
Out of curiosity I started looking into this.  It seems similar to behavior described in http://bugzilla.gnome.org/show_bug.cgi?id=529740 

Though the actual bug seems to also be upstream:
http://bugzilla.gnome.org/show_bug.cgi?id=536664

Curiously though, looking through the virt-manager-0.5.3 code, all instantiation of vmmErrorDialog appear to be with flags=0 (i.e. not setting GTK_DIALOG_MODAL).

Since clearly the dialog is modal, perhaps there's another bug in GTK or pyGTK wherein GtkMessageDialog's are always modal?

Comment 3 Chris Evich 2009-01-12 20:41:30 UTC
Dug into pygtk docs and found the cause:

http://www.pygtk.org/docs/pygtk/class-gtkdialog.html#method-gtkdialog--run

"...During the run() method, the default behavior of "delete_event" is disabled; if the dialog receives a "delete_event", it will not be destroyed as windows usually are, and the run() method will return gtk.RESPONSE_DELETE_EVENT. Also, during the run() method the dialog will be modal."""

So, it doesn't matter if flags includes GTK_DIALOG_MODAL or not, MessageDialog will always be modal as long as Dialog is.

Comment 4 Cole Robinson 2009-01-21 21:37:05 UTC
This mainly boils down to the use of 'run' rather than 'show' with a 'hide' callback.

I just fixed this upstream, now all error dialogs should be nonmodal:

http://hg.et.redhat.com/cgi-bin/hg-virt.cgi/applications/virt-manager--devel/rev/274eb4f5fe61

I'm reassigning to rawhide. If a customer ever files a report for this issue, we can re-examine backporting the change, though it will be more difficult since there has been lots of error reporting consolidation upstream compared to the current rhel version.

Comment 5 Cole Robinson 2009-03-04 16:39:21 UTC
Okay, this is fixed in rawhide, closing.