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

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

Issue 113970: Paint a focus indication on LinkButtonGtk buttons.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 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
« no previous file with comments | « chrome/browser/gtk/gtk_chrome_button.cc ('k') | chrome/browser/gtk/link_button_gtk.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/infobar_gtk.h" 5 #include "chrome/browser/gtk/infobar_gtk.h"
6 6
7 #include <gtk/gtk.h> 7 #include <gtk/gtk.h>
8 8
9 #include "app/gfx/gtk_util.h" 9 #include "app/gfx/gtk_util.h"
10 #include "base/gfx/gtk_util.h" 10 #include "base/gfx/gtk_util.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 // Add the icon on the left, if any. 57 // Add the icon on the left, if any.
58 SkBitmap* icon = delegate->GetIcon(); 58 SkBitmap* icon = delegate->GetIcon();
59 if (icon) { 59 if (icon) {
60 GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(icon); 60 GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(icon);
61 GtkWidget* image = gtk_image_new_from_pixbuf(pixbuf); 61 GtkWidget* image = gtk_image_new_from_pixbuf(pixbuf);
62 g_object_unref(pixbuf); 62 g_object_unref(pixbuf);
63 gtk_box_pack_start(GTK_BOX(hbox_), image, FALSE, FALSE, 0); 63 gtk_box_pack_start(GTK_BOX(hbox_), image, FALSE, FALSE, 0);
64 } 64 }
65 65
66 close_button_.reset(CustomDrawButton::AddBarCloseButton(hbox_, 0)); 66 close_button_.reset(CustomDrawButton::CloseButton());
67 gtk_util::CenterWidgetInHBox(hbox_, close_button_->widget(), true, 0);
67 g_signal_connect(close_button_->widget(), "clicked", 68 g_signal_connect(close_button_->widget(), "clicked",
68 G_CALLBACK(OnCloseButton), this); 69 G_CALLBACK(OnCloseButton), this);
69 70
70 slide_widget_.reset(new SlideAnimatorGtk(border_bin_.get(), 71 slide_widget_.reset(new SlideAnimatorGtk(border_bin_.get(),
71 SlideAnimatorGtk::DOWN, 72 SlideAnimatorGtk::DOWN,
72 0, true, this)); 73 0, true, this));
73 // We store a pointer back to |this| so we can refer to it from the infobar 74 // We store a pointer back to |this| so we can refer to it from the infobar
74 // container. 75 // container.
75 g_object_set_data(G_OBJECT(slide_widget_->widget()), "info-bar", this); 76 g_object_set_data(G_OBJECT(slide_widget_->widget()), "info-bar", this);
76 } 77 }
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 GtkWidget* trailing_label = gtk_label_new( 165 GtkWidget* trailing_label = gtk_label_new(
165 WideToUTF8(display_text.substr(link_offset)).c_str()); 166 WideToUTF8(display_text.substr(link_offset)).c_str());
166 167
167 gtk_widget_modify_fg(initial_label, GTK_STATE_NORMAL, &gfx::kGdkBlack); 168 gtk_widget_modify_fg(initial_label, GTK_STATE_NORMAL, &gfx::kGdkBlack);
168 gtk_widget_modify_fg(trailing_label, GTK_STATE_NORMAL, &gfx::kGdkBlack); 169 gtk_widget_modify_fg(trailing_label, GTK_STATE_NORMAL, &gfx::kGdkBlack);
169 170
170 // We don't want any spacing between the elements, so we pack them into 171 // We don't want any spacing between the elements, so we pack them into
171 // this hbox that doesn't use kElementPadding. 172 // this hbox that doesn't use kElementPadding.
172 GtkWidget* hbox = gtk_hbox_new(FALSE, 0); 173 GtkWidget* hbox = gtk_hbox_new(FALSE, 0);
173 gtk_box_pack_start(GTK_BOX(hbox), initial_label, FALSE, FALSE, 0); 174 gtk_box_pack_start(GTK_BOX(hbox), initial_label, FALSE, FALSE, 0);
174 gtk_box_pack_start(GTK_BOX(hbox), link_button_->widget(), 175 gtk_util::CenterWidgetInHBox(hbox, link_button_->widget(), false, 0);
175 FALSE, FALSE, 0);
176 gtk_box_pack_start(GTK_BOX(hbox), trailing_label, FALSE, FALSE, 0); 176 gtk_box_pack_start(GTK_BOX(hbox), trailing_label, FALSE, FALSE, 0);
177 gtk_box_pack_start(GTK_BOX(hbox_), hbox, FALSE, FALSE, 0); 177 gtk_box_pack_start(GTK_BOX(hbox_), hbox, FALSE, FALSE, 0);
178 } 178 }
179 179
180 gtk_widget_show_all(border_bin_.get()); 180 gtk_widget_show_all(border_bin_.get());
181 } 181 }
182 182
183 private: 183 private:
184 static void OnLinkClick(GtkWidget* button, LinkInfoBar* link_info_bar) { 184 static void OnLinkClick(GtkWidget* button, LinkInfoBar* link_info_bar) {
185 // TODO(estade): we need an equivalent for DispositionFromEventFlags(). 185 // TODO(estade): we need an equivalent for DispositionFromEventFlags().
(...skipping 19 matching lines...) Expand all
205 gtk_widget_show_all(border_bin_.get()); 205 gtk_widget_show_all(border_bin_.get());
206 } 206 }
207 207
208 private: 208 private:
209 // Adds a button to the info bar by type. It will do nothing if the delegate 209 // Adds a button to the info bar by type. It will do nothing if the delegate
210 // doesn't specify a button of the given type. 210 // doesn't specify a button of the given type.
211 void AddConfirmButton(ConfirmInfoBarDelegate::InfoBarButton type) { 211 void AddConfirmButton(ConfirmInfoBarDelegate::InfoBarButton type) {
212 if (delegate_->AsConfirmInfoBarDelegate()->GetButtons() & type) { 212 if (delegate_->AsConfirmInfoBarDelegate()->GetButtons() & type) {
213 GtkWidget* button = gtk_button_new_with_label(WideToUTF8( 213 GtkWidget* button = gtk_button_new_with_label(WideToUTF8(
214 delegate_->AsConfirmInfoBarDelegate()->GetButtonLabel(type)).c_str()); 214 delegate_->AsConfirmInfoBarDelegate()->GetButtonLabel(type)).c_str());
215 GtkWidget* centering_vbox = gtk_vbox_new(FALSE, 0); 215 gtk_util::CenterWidgetInHBox(hbox_, button, true, 0);
216 gtk_box_pack_end(GTK_BOX(centering_vbox), button, TRUE, FALSE, 0);
217 gtk_box_pack_end(GTK_BOX(hbox_), centering_vbox, FALSE, FALSE, 0);
218 g_signal_connect(button, "clicked", 216 g_signal_connect(button, "clicked",
219 G_CALLBACK(type == ConfirmInfoBarDelegate::BUTTON_OK ? 217 G_CALLBACK(type == ConfirmInfoBarDelegate::BUTTON_OK ?
220 OnOkButton : OnCancelButton), 218 OnOkButton : OnCancelButton),
221 this); 219 this);
222 } 220 }
223 } 221 }
224 222
225 static void OnCancelButton(GtkWidget* button, ConfirmInfoBar* info_bar) { 223 static void OnCancelButton(GtkWidget* button, ConfirmInfoBar* info_bar) {
226 if (info_bar->delegate_->AsConfirmInfoBarDelegate()->Cancel()) 224 if (info_bar->delegate_->AsConfirmInfoBarDelegate()->Cancel())
227 info_bar->RemoveInfoBar(); 225 info_bar->RemoveInfoBar();
(...skipping 15 matching lines...) Expand all
243 241
244 InfoBar* LinkInfoBarDelegate::CreateInfoBar() { 242 InfoBar* LinkInfoBarDelegate::CreateInfoBar() {
245 return new LinkInfoBar(this); 243 return new LinkInfoBar(this);
246 } 244 }
247 245
248 // ConfirmInfoBarDelegate, InfoBarDelegate overrides: -------------------------- 246 // ConfirmInfoBarDelegate, InfoBarDelegate overrides: --------------------------
249 247
250 InfoBar* ConfirmInfoBarDelegate::CreateInfoBar() { 248 InfoBar* ConfirmInfoBarDelegate::CreateInfoBar() {
251 return new ConfirmInfoBar(this); 249 return new ConfirmInfoBar(this);
252 } 250 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/gtk_chrome_button.cc ('k') | chrome/browser/gtk/link_button_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698