| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/ui/gtk/constrained_window_gtk.h" | |
| 6 | |
| 7 #include <gdk/gdkkeysyms.h> | |
| 8 | |
| 9 #include "chrome/browser/ui/gtk/gtk_util.h" | |
| 10 #include "ui/base/gtk/gtk_hig_constants.h" | |
| 11 | |
| 12 namespace { | |
| 13 gboolean OnKeyPress(GtkWidget* sender, GdkEventKey* key, gpointer user_data) { | |
| 14 if (key->keyval == GDK_Escape) { | |
| 15 gtk_widget_destroy(sender); | |
| 16 return TRUE; | |
| 17 } | |
| 18 | |
| 19 return FALSE; | |
| 20 } | |
| 21 } // namespace | |
| 22 | |
| 23 GtkWidget* CreateWebContentsModalDialogGtk( | |
| 24 GtkWidget* contents, | |
| 25 GtkWidget* focus_widget) { | |
| 26 // Unlike other users of CreateBorderBin, we need a dedicated frame around | |
| 27 // our "window". | |
| 28 GtkWidget* border = gtk_event_box_new(); | |
| 29 GtkWidget* frame = gtk_frame_new(NULL); | |
| 30 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT); | |
| 31 | |
| 32 GtkWidget* alignment = gtk_alignment_new(0.0, 0.0, 1.0, 1.0); | |
| 33 gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), | |
| 34 ui::kContentAreaBorder, ui::kContentAreaBorder, | |
| 35 ui::kContentAreaBorder, ui::kContentAreaBorder); | |
| 36 | |
| 37 if (gtk_widget_get_parent(contents)) | |
| 38 gtk_widget_reparent(contents, alignment); | |
| 39 else | |
| 40 gtk_container_add(GTK_CONTAINER(alignment), contents); | |
| 41 | |
| 42 gtk_container_add(GTK_CONTAINER(frame), alignment); | |
| 43 gtk_container_add(GTK_CONTAINER(border), frame); | |
| 44 | |
| 45 gtk_widget_add_events(border, GDK_KEY_PRESS_MASK); | |
| 46 g_signal_connect(border, | |
| 47 "key-press-event", | |
| 48 reinterpret_cast<GCallback>(&OnKeyPress), | |
| 49 NULL); | |
| 50 | |
| 51 // This is a little hacky, but it's better than subclassing GtkWidget just to | |
| 52 // add one new property. | |
| 53 g_object_set_data(G_OBJECT(border), "focus_widget", focus_widget); | |
| 54 | |
| 55 return border; | |
| 56 } | |
| OLD | NEW |