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

Side by Side Diff: chrome/browser/speech/speech_input_bubble_gtk.cc

Issue 6115001: Listen for tab close notifications and cancel active speech sessions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 11 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) 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/speech/speech_input_bubble.h" 5 #include "chrome/browser/speech/speech_input_bubble.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/gtk/gtk_theme_provider.h" 10 #include "chrome/browser/gtk/gtk_theme_provider.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 virtual void Show(); 47 virtual void Show();
48 virtual void Hide(); 48 virtual void Hide();
49 virtual void UpdateLayout(); 49 virtual void UpdateLayout();
50 virtual void SetImage(const SkBitmap& image); 50 virtual void SetImage(const SkBitmap& image);
51 51
52 CHROMEGTK_CALLBACK_0(SpeechInputBubbleGtk, void, OnCancelClicked); 52 CHROMEGTK_CALLBACK_0(SpeechInputBubbleGtk, void, OnCancelClicked);
53 CHROMEGTK_CALLBACK_0(SpeechInputBubbleGtk, void, OnTryAgainClicked); 53 CHROMEGTK_CALLBACK_0(SpeechInputBubbleGtk, void, OnTryAgainClicked);
54 54
55 Delegate* delegate_; 55 Delegate* delegate_;
56 InfoBubbleGtk* info_bubble_; 56 InfoBubbleGtk* info_bubble_;
57 TabContents* tab_contents_;
58 gfx::Rect element_rect_; 57 gfx::Rect element_rect_;
59 bool did_invoke_close_; 58 bool did_invoke_close_;
60 59
61 GtkWidget* label_; 60 GtkWidget* label_;
62 GtkWidget* try_again_button_; 61 GtkWidget* try_again_button_;
63 GtkWidget* icon_; 62 GtkWidget* icon_;
64 63
65 DISALLOW_COPY_AND_ASSIGN(SpeechInputBubbleGtk); 64 DISALLOW_COPY_AND_ASSIGN(SpeechInputBubbleGtk);
66 }; 65 };
67 66
68 SpeechInputBubbleGtk::SpeechInputBubbleGtk(TabContents* tab_contents, 67 SpeechInputBubbleGtk::SpeechInputBubbleGtk(TabContents* tab_contents,
69 Delegate* delegate, 68 Delegate* delegate,
70 const gfx::Rect& element_rect) 69 const gfx::Rect& element_rect)
71 : delegate_(delegate), 70 : SpeechInputBubbleBase(tab_contents),
71 delegate_(delegate),
72 info_bubble_(NULL), 72 info_bubble_(NULL),
73 tab_contents_(tab_contents),
74 element_rect_(element_rect), 73 element_rect_(element_rect),
75 did_invoke_close_(false), 74 did_invoke_close_(false),
76 label_(NULL), 75 label_(NULL),
77 try_again_button_(NULL), 76 try_again_button_(NULL),
78 icon_(NULL) { 77 icon_(NULL) {
79 } 78 }
80 79
81 SpeechInputBubbleGtk::~SpeechInputBubbleGtk() { 80 SpeechInputBubbleGtk::~SpeechInputBubbleGtk() {
82 // The |Close| call below invokes our |InfoBubbleClosing| method. Since we 81 // The |Close| call below invokes our |InfoBubbleClosing| method. Since we
83 // were destroyed by the caller we don't need to call them back, hence set 82 // were destroyed by the caller we don't need to call them back, hence set
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 g_signal_connect(try_again_button_, "clicked", 137 g_signal_connect(try_again_button_, "clicked",
139 G_CALLBACK(&OnTryAgainClickedThunk), this); 138 G_CALLBACK(&OnTryAgainClickedThunk), this);
140 139
141 GtkWidget* content = gtk_alignment_new(0, 0, 0, 0); 140 GtkWidget* content = gtk_alignment_new(0, 0, 0, 0);
142 gtk_alignment_set_padding(GTK_ALIGNMENT(content), 141 gtk_alignment_set_padding(GTK_ALIGNMENT(content),
143 kBubbleControlVerticalSpacing, kBubbleControlVerticalSpacing, 142 kBubbleControlVerticalSpacing, kBubbleControlVerticalSpacing,
144 kBubbleControlHorizontalSpacing, kBubbleControlHorizontalSpacing); 143 kBubbleControlHorizontalSpacing, kBubbleControlHorizontalSpacing);
145 gtk_container_add(GTK_CONTAINER(content), vbox); 144 gtk_container_add(GTK_CONTAINER(content), vbox);
146 145
147 GtkThemeProvider* theme_provider = GtkThemeProvider::GetFrom( 146 GtkThemeProvider* theme_provider = GtkThemeProvider::GetFrom(
148 tab_contents_->profile()); 147 tab_contents()->profile());
149 gfx::Rect rect(element_rect_.x() + kBubbleTargetOffsetX, 148 gfx::Rect rect(element_rect_.x() + kBubbleTargetOffsetX,
150 element_rect_.y() + element_rect_.height(), 1, 1); 149 element_rect_.y() + element_rect_.height(), 1, 1);
151 info_bubble_ = InfoBubbleGtk::Show(tab_contents_->GetNativeView(), 150 info_bubble_ = InfoBubbleGtk::Show(tab_contents()->GetNativeView(),
152 &rect, 151 &rect,
153 content, 152 content,
154 InfoBubbleGtk::ARROW_LOCATION_TOP_LEFT, 153 InfoBubbleGtk::ARROW_LOCATION_TOP_LEFT,
155 false, // match_system_theme 154 false, // match_system_theme
156 true, // grab_input 155 true, // grab_input
157 theme_provider, 156 theme_provider,
158 this); 157 this);
159 158
160 UpdateLayout(); 159 UpdateLayout();
161 } 160 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 206
208 } // namespace 207 } // namespace
209 208
210 SpeechInputBubble* SpeechInputBubble::CreateNativeBubble( 209 SpeechInputBubble* SpeechInputBubble::CreateNativeBubble(
211 TabContents* tab_contents, 210 TabContents* tab_contents,
212 Delegate* delegate, 211 Delegate* delegate,
213 const gfx::Rect& element_rect) { 212 const gfx::Rect& element_rect) {
214 return new SpeechInputBubbleGtk(tab_contents, delegate, element_rect); 213 return new SpeechInputBubbleGtk(tab_contents, delegate, element_rect);
215 } 214 }
216 215
OLDNEW
« no previous file with comments | « chrome/browser/speech/speech_input_bubble_controller_unittest.cc ('k') | chrome/browser/speech/speech_input_bubble_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698