diff options
author | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-07 20:36:11 +0000 |
---|---|---|
committer | xiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-03-07 20:36:11 +0000 |
commit | 9fcc20ea9ef556ceee74240264cd314eacb43af3 (patch) | |
tree | bca177709d567e1b4f2fd63132c8f2938e8750bb /chrome/browser/ui/gtk/gtk_util.cc | |
parent | 31e02fae24a1e499773ee23126a5ce66daf94b15 (diff) | |
download | chromium_src-9fcc20ea9ef556ceee74240264cd314eacb43af3.zip chromium_src-9fcc20ea9ef556ceee74240264cd314eacb43af3.tar.gz chromium_src-9fcc20ea9ef556ceee74240264cd314eacb43af3.tar.bz2 |
[ChromeOS] Fix the unclickable "OpenAll" confirmation dialog problem.
- Get modal flag from native dialog so that gtk_util::ShowDialog
shows modal dialog correctly;
- Wire HandleGrabBroke instead of OnGrabBrokeEvent in MenuHostGtk so
that the menu cancels itself when a modal dialog shows up;
BUG=chromium-os:12032
TEST=Verify fix for chromium-os:12032
Review URL: http://codereview.chromium.org/6623056
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77174 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/gtk/gtk_util.cc')
-rw-r--r-- | chrome/browser/ui/gtk/gtk_util.cc | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/chrome/browser/ui/gtk/gtk_util.cc b/chrome/browser/ui/gtk/gtk_util.cc index e2f0df1..a1e338c 100644 --- a/chrome/browser/ui/gtk/gtk_util.cc +++ b/chrome/browser/ui/gtk/gtk_util.cc @@ -1039,6 +1039,17 @@ GtkWindow* GetLastActiveBrowserWindow() { return NULL; } +int GetNativeDialogFlags(GtkWindow* dialog) { + int flags = chromeos::DIALOG_FLAG_DEFAULT; + + if (gtk_window_get_resizable(dialog)) + flags |= chromeos::DIALOG_FLAG_RESIZEABLE; + if (gtk_window_get_modal(dialog)) + flags |= chromeos::DIALOG_FLAG_MODAL; + + return flags; +} + GtkWindow* GetDialogTransientParent(GtkWindow* dialog) { GtkWindow* parent = gtk_window_get_transient_for(dialog); if (!parent) @@ -1058,9 +1069,7 @@ void ShowDialog(GtkWidget* dialog) { chromeos::ShowNativeDialog(GetDialogTransientParent(GTK_WINDOW(dialog)), dialog, - gtk_window_get_resizable(GTK_WINDOW(dialog)) ? - chromeos::DIALOG_FLAG_RESIZEABLE : - chromeos::DIALOG_FLAG_DEFAULT, + GetNativeDialogFlags(GTK_WINDOW(dialog)), gfx::Size(width, height), gfx::Size()); } @@ -1082,14 +1091,14 @@ void ShowDialogWithLocalizedSize(GtkWidget* dialog, gfx::Size()); } -void ShowModalDialogWithMinLocalizedWidth(GtkWidget* dialog, - int width_id) { +void ShowDialogWithMinLocalizedWidth(GtkWidget* dialog, + int width_id) { int width = (width_id == -1) ? 0 : views::Window::GetLocalizedContentsWidth(width_id); chromeos::ShowNativeDialog(GetDialogTransientParent(GTK_WINDOW(dialog)), dialog, - chromeos::DIALOG_FLAG_MODAL, + GetNativeDialogFlags(GTK_WINDOW(dialog)), gfx::Size(), gfx::Size(width, 0)); } @@ -1130,8 +1139,8 @@ void ShowDialogWithLocalizedSize(GtkWidget* dialog, gtk_widget_show_all(dialog); } -void ShowModalDialogWithMinLocalizedWidth(GtkWidget* dialog, - int width_id) { +void ShowDialogWithMinLocalizedWidth(GtkWidget* dialog, + int width_id) { gtk_widget_show_all(dialog); // Suggest a minimum size. |