Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(283)

Side by Side Diff: chrome/browser/gtk/gtk_util.cc

Issue 2501001: Update dialog parent handling logic. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/gtk/gtk_util.h" 5 #include "chrome/browser/gtk/gtk_util.h"
6 6
7 #include <gtk/gtk.h> 7 #include <gtk/gtk.h>
8 #include <gdk/gdkx.h> 8 #include <gdk/gdkx.h>
9 9
10 #include <cstdarg> 10 #include <cstdarg>
(...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 GdkScreen* screen = gtk_widget_get_screen(window); 918 GdkScreen* screen = gtk_widget_get_screen(window);
919 GdkColormap* rgba = gdk_screen_get_rgba_colormap(screen); 919 GdkColormap* rgba = gdk_screen_get_rgba_colormap(screen);
920 if (rgba) 920 if (rgba)
921 gtk_widget_set_colormap(window, rgba); 921 gtk_widget_set_colormap(window, rgba);
922 922
923 return rgba; 923 return rgba;
924 } 924 }
925 925
926 #if defined(OS_CHROMEOS) 926 #if defined(OS_CHROMEOS)
927 927
928 GtkWindow* GetDialogTransientParent(GtkWindow* dialog) {
929 GtkWindow* parent = gtk_window_get_transient_for(dialog);
930 if (!parent)
931 parent = chromeos::GetOptionsViewParent();
932
933 return parent;
934 }
935
928 void ShowDialog(GtkWidget* dialog) { 936 void ShowDialog(GtkWidget* dialog) {
929 chromeos::ShowNativeDialog(chromeos::GetOptionsViewParent(), 937 chromeos::ShowNativeDialog(GetDialogTransientParent(GTK_WINDOW(dialog)),
930 dialog, chromeos::DIALOG_FLAG_DEFAULT, gfx::Size(), gfx::Size()); 938 dialog, chromeos::DIALOG_FLAG_DEFAULT, gfx::Size(), gfx::Size());
931 } 939 }
932 940
933 void ShowDialogWithLocalizedSize(GtkWidget* dialog, 941 void ShowDialogWithLocalizedSize(GtkWidget* dialog,
934 int width_id, 942 int width_id,
935 int height_id, 943 int height_id,
936 bool resizeable) { 944 bool resizeable) {
937 int width = (width_id == -1) ? 0 : 945 int width = (width_id == -1) ? 0 :
938 views::Window::GetLocalizedContentsWidth(width_id); 946 views::Window::GetLocalizedContentsWidth(width_id);
939 int height = (height_id == -1) ? 0 : 947 int height = (height_id == -1) ? 0 :
940 views::Window::GetLocalizedContentsHeight(height_id); 948 views::Window::GetLocalizedContentsHeight(height_id);
941 949
942 chromeos::ShowNativeDialog(chromeos::GetOptionsViewParent(), 950 chromeos::ShowNativeDialog(GetDialogTransientParent(GTK_WINDOW(dialog)),
943 dialog, 951 dialog,
944 resizeable ? chromeos::DIALOG_FLAG_RESIZEABLE : 952 resizeable ? chromeos::DIALOG_FLAG_RESIZEABLE :
945 chromeos::DIALOG_FLAG_DEFAULT, 953 chromeos::DIALOG_FLAG_DEFAULT,
946 gfx::Size(width, height), 954 gfx::Size(width, height),
947 gfx::Size()); 955 gfx::Size());
948 } 956 }
949 957
950 void ShowModalDialogWithMinLocalizedWidth(GtkWidget* dialog, 958 void ShowModalDialogWithMinLocalizedWidth(GtkWidget* dialog,
951 int width_id) { 959 int width_id) {
952 int width = (width_id == -1) ? 0 : 960 int width = (width_id == -1) ? 0 :
953 views::Window::GetLocalizedContentsWidth(width_id); 961 views::Window::GetLocalizedContentsWidth(width_id);
954 962
955 chromeos::ShowNativeDialog(chromeos::GetOptionsViewParent(), 963 chromeos::ShowNativeDialog(GetDialogTransientParent(GTK_WINDOW(dialog)),
956 dialog, 964 dialog,
957 chromeos::DIALOG_FLAG_MODAL, 965 chromeos::DIALOG_FLAG_MODAL,
958 gfx::Size(), 966 gfx::Size(),
959 gfx::Size(width, 0)); 967 gfx::Size(width, 0));
960 } 968 }
961 969
962 void PresentWindow(GtkWidget* window, int timestamp) { 970 void PresentWindow(GtkWidget* window, int timestamp) {
963 GtkWindow* host_window = chromeos::GetNativeDialogWindow(window); 971 GtkWindow* host_window = chromeos::GetNativeDialogWindow(window);
964 if (!host_window) 972 if (!host_window)
965 host_window = GTK_WINDOW(window); 973 host_window = GTK_WINDOW(window);
966 if (timestamp) 974 if (timestamp)
967 gtk_window_present_with_time(host_window, timestamp); 975 gtk_window_present_with_time(host_window, timestamp);
968 else 976 else
969 gtk_window_present(host_window); 977 gtk_window_present(host_window);
970 } 978 }
971 979
980 GtkWindow* GetDialogWindow(GtkWidget* dialog) {
981 return chromeos::GetNativeDialogWindow(dialog);
982 }
983
972 #else 984 #else
973 985
974 void ShowDialog(GtkWidget* dialog) { 986 void ShowDialog(GtkWidget* dialog) {
975 gtk_widget_show_all(dialog); 987 gtk_widget_show_all(dialog);
976 } 988 }
977 989
978 void ShowDialogWithLocalizedSize(GtkWidget* dialog, 990 void ShowDialogWithLocalizedSize(GtkWidget* dialog,
979 int width_id, 991 int width_id,
980 int height_id, 992 int height_id,
981 bool resizeable) { 993 bool resizeable) {
(...skipping 18 matching lines...) Expand all
1000 gtk_widget_set_size_request(dialog, width, -1); 1012 gtk_widget_set_size_request(dialog, width, -1);
1001 } 1013 }
1002 1014
1003 void PresentWindow(GtkWidget* window, int timestamp) { 1015 void PresentWindow(GtkWidget* window, int timestamp) {
1004 if (timestamp) 1016 if (timestamp)
1005 gtk_window_present_with_time(GTK_WINDOW(window), timestamp); 1017 gtk_window_present_with_time(GTK_WINDOW(window), timestamp);
1006 else 1018 else
1007 gtk_window_present(GTK_WINDOW(window)); 1019 gtk_window_present(GTK_WINDOW(window));
1008 } 1020 }
1009 1021
1022 GtkWindow* GetDialogWindow(GtkWidget* dialog) {
1023 return dialog;
1024 }
1025
1010 #endif 1026 #endif
1011 1027
1012 } // namespace gtk_util 1028 } // namespace gtk_util
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698