summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/gtk/gtk_util.cc
diff options
context:
space:
mode:
authorxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-07 20:36:11 +0000
committerxiyuan@chromium.org <xiyuan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-07 20:36:11 +0000
commit9fcc20ea9ef556ceee74240264cd314eacb43af3 (patch)
treebca177709d567e1b4f2fd63132c8f2938e8750bb /chrome/browser/ui/gtk/gtk_util.cc
parent31e02fae24a1e499773ee23126a5ce66daf94b15 (diff)
downloadchromium_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.cc25
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.