Make GTK file dialog box modal for parent window, instead of for the entire
application.

This works by adding the top-level GtkWindow objects, such as BrowserWindowGtk
and BookmarkManagerGtk, to their own unique window groups. Without this change,
all top-level windows are added to a default application-wide window group.

This ensures that all grabs created with gtk_grab_add(...) only affect the
window group of the grabbed widget, as opposed to the entire application.

Note that gtk_window_set_modal(...) is implemented with gtk_grab_add(...) and
therefore is only modal to a specific window group.

In order for this to work correctly, changes were also made to the info
bubble and render widget popup (<select> tag) code. Since these widgets
also call gtk_grab_add(...), they must be added to the top level window
group to work correctly.

Test 1:
- Open two new chrome window: A and B
- Open "Save file as..." dialog in window A
- Verify that window A does not respond to keyboard or mouse events.
- Verify that window B does responde to keyboard and mouse events.
- Open "Save file as..." dialog in window B
- Verify that window B does not respond to keyboard or mouse events.
- Cancel dialog on window A.
- Verify that window A starts responding to keyboard and mouse events.
- Cancel dialog on window B.
- Verify that window B starts responding to keyboard and mouse events.

Test 2:
- Verify that <select> tag allows for correct selection of items.

Test 3:
- Click bookmark star and verify that info bubble works correctly.

BUG=8727
TEST=none

patch by Mohit Muthanna Cheppudira <mohit.muthanna [at] gmail>
original review url: <http://codereview.chromium.org/155852>

Review URL: http://codereview.chromium.org/159147

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21207 0039d316-1c4b-4281-b951-d872f2087c98
5 files changed