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

Side by Side Diff: chrome/browser/ui/gtk/fullscreen_exit_bubble_gtk.cc

Issue 7740044: Implement fullscreen info bubble on Win and Mac (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix ups Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ui/gtk/fullscreen_exit_bubble_gtk.h" 5 #include "chrome/browser/ui/gtk/fullscreen_exit_bubble_gtk.h"
6 6
7 #include "chrome/browser/ui/gtk/gtk_chrome_link_button.h" 7 #include "chrome/browser/ui/gtk/gtk_chrome_link_button.h"
8 #include "chrome/browser/ui/gtk/gtk_util.h" 8 #include "chrome/browser/ui/gtk/gtk_util.h"
9 #include "chrome/browser/ui/gtk/rounded_window.h" 9 #include "chrome/browser/ui/gtk/rounded_window.h"
10 #include "grit/generated_resources.h" 10 #include "grit/generated_resources.h"
11 #include "grit/ui_strings.h" 11 #include "grit/ui_strings.h"
12 #include "ui/base/gtk/gtk_floating_container.h" 12 #include "ui/base/gtk/gtk_floating_container.h"
13 #include "ui/base/gtk/gtk_hig_constants.h" 13 #include "ui/base/gtk/gtk_hig_constants.h"
14 #include "ui/base/l10n/l10n_util.h" 14 #include "ui/base/l10n/l10n_util.h"
15 #include "chrome/browser/ui/browser.h"
15 16
16 FullscreenExitBubbleGtk::FullscreenExitBubbleGtk( 17 FullscreenExitBubbleGtk::FullscreenExitBubbleGtk(
17 GtkFloatingContainer* container, 18 GtkFloatingContainer* container,
18 CommandUpdater::CommandUpdaterDelegate* delegate) 19 Browser* browser,
19 : FullscreenExitBubble(delegate), 20 const GURL& url,
20 container_(container) { 21 bool ask_permission)
22 : FullscreenExitBubble(browser),
23 container_(container),
24 url_(url),
25 show_buttons_(ask_permission) {
21 InitWidgets(); 26 InitWidgets();
22 StartWatchingMouse(); 27 StartWatchingMouse();
23 } 28 }
24 29
25 FullscreenExitBubbleGtk::~FullscreenExitBubbleGtk() { 30 FullscreenExitBubbleGtk::~FullscreenExitBubbleGtk() {
26 } 31 }
27 32
28 void FullscreenExitBubbleGtk::InitWidgets() { 33 void FullscreenExitBubbleGtk::InitWidgets() {
29 // The exit bubble is a gtk_chrome_link_button inside a gtk event box and gtk 34 // The exit bubble is a gtk_chrome_link_button inside a gtk event box and gtk
30 // alignment (these provide the background color). This is then made rounded 35 // alignment (these provide the background color). This is then made rounded
31 // and put into a slide widget. 36 // and put into a slide widget.
32 37
33 // The Windows code actually looks up the accelerator key in the accelerator 38 // The Windows code actually looks up the accelerator key in the accelerator
34 // table and then converts the key to a string (in a switch statement). This 39 // table and then converts the key to a string (in a switch statement). This
35 // doesn't seem to be implemented for Gtk, so we just use F11 directly. 40 // doesn't seem to be implemented for Gtk, so we just use F11 directly.
36 std::string exit_text_utf8("<span color=\"white\" size=\"large\">"); 41 std::string exit_text_utf8("<span color=\"white\" size=\"large\">");
37 exit_text_utf8.append(l10n_util::GetStringFUTF8( 42 exit_text_utf8.append(l10n_util::GetStringFUTF8(
38 IDS_EXIT_FULLSCREEN_MODE, l10n_util::GetStringUTF16(IDS_APP_F11_KEY))); 43 IDS_EXIT_FULLSCREEN_MODE, l10n_util::GetStringUTF16(IDS_APP_F11_KEY)));
39 exit_text_utf8.append("</span>"); 44 exit_text_utf8.append("</span>");
40 GtkWidget* link = gtk_chrome_link_button_new_with_markup( 45 GtkWidget* link = gtk_chrome_link_button_new_with_markup(
41 exit_text_utf8.c_str()); 46 exit_text_utf8.c_str());
42 gtk_chrome_link_button_set_use_gtk_theme(GTK_CHROME_LINK_BUTTON(link), 47 gtk_chrome_link_button_set_use_gtk_theme(GTK_CHROME_LINK_BUTTON(link),
43 FALSE); 48 FALSE);
44 signals_.Connect(link, "clicked", G_CALLBACK(OnLinkClickedThunk), this); 49 signals_.Connect(link, "clicked", G_CALLBACK(OnLinkClickedThunk), this);
45 50
51 // hbox
52 GtkWidget* hbox_ = gtk_hbox_new(FALSE, kPaddingPx);
53
54 gtk_box_pack_end(GTK_BOX(hbox_), link, FALSE, FALSE, 0);
55
56 if (show_buttons_) {
57 // Add buttons
58 GtkWidget* deny_button = gtk_button_new_with_label("Deny");
59 gtk_box_pack_end(GTK_BOX(hbox_), deny_button, FALSE, FALSE, 0);
60 GtkWidget* allow_button = gtk_button_new_with_label("Allow");
61 gtk_box_pack_end(GTK_BOX(hbox_), allow_button, FALSE, FALSE, 0);
62
63 g_signal_connect(allow_button, "clicked",
64 G_CALLBACK(OnAllowClickedThunk),
65 this);
66
67 g_signal_connect(deny_button, "clicked",
68 G_CALLBACK(OnDenyClickedThunk),
69 this);
70 }
71
46 link_container_.Own(gtk_util::CreateGtkBorderBin( 72 link_container_.Own(gtk_util::CreateGtkBorderBin(
47 link, &ui::kGdkBlack, 73 link, &ui::kGdkBlack,
48 kPaddingPx, kPaddingPx, kPaddingPx, kPaddingPx)); 74 kPaddingPx, kPaddingPx, kPaddingPx, kPaddingPx));
49 GdkColor green = GDK_COLOR_RGB(0x00, 0xff, 0x00); 75 GdkColor green = GDK_COLOR_RGB(0x00, 0xff, 0x00);
50 gtk_util::ActAsRoundedWindow(link_container_.get(), green, kPaddingPx, 76 gtk_util::ActAsRoundedWindow(link_container_.get(), green, kPaddingPx,
51 gtk_util::ROUNDED_BOTTOM_LEFT | gtk_util::ROUNDED_BOTTOM_RIGHT, 77 gtk_util::ROUNDED_BOTTOM_LEFT | gtk_util::ROUNDED_BOTTOM_RIGHT,
52 gtk_util::BORDER_NONE); 78 gtk_util::BORDER_NONE);
53 79
54 slide_widget_.reset(new SlideAnimatorGtk(link_container_.get(), 80 slide_widget_.reset(new SlideAnimatorGtk(link_container_.get(),
55 SlideAnimatorGtk::DOWN, kSlideOutDurationMs, false, false, NULL)); 81 SlideAnimatorGtk::DOWN, kSlideOutDurationMs, false, false, NULL));
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 157
132 g_value_set_int(&value, 0); 158 g_value_set_int(&value, 0);
133 gtk_container_child_set_property(GTK_CONTAINER(floating_container), 159 gtk_container_child_set_property(GTK_CONTAINER(floating_container),
134 widget(), "y", &value); 160 widget(), "y", &value);
135 g_value_unset(&value); 161 g_value_unset(&value);
136 } 162 }
137 163
138 void FullscreenExitBubbleGtk::OnLinkClicked(GtkWidget* link) { 164 void FullscreenExitBubbleGtk::OnLinkClicked(GtkWidget* link) {
139 ToggleFullscreen(); 165 ToggleFullscreen();
140 } 166 }
167
168 void FullscreenExitBubbleGtk::OnAllowClicked(GtkWidget* button) {
169 browser_->OnAcceptFullscreenPermission(url_);
170 }
171
172 void FullscreenExitBubbleGtk::OnDenyClicked(GtkWidget* button) {
173 ToggleFullscreen();
174 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698