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/infobars/alternate_nav_infobar_gtk.h" 6 7 #include "chrome/browser/ui/gtk/event_utils.h" 8 #include "chrome/browser/ui/omnibox/alternate_nav_infobar_delegate.h" 9 10 11 // AlternateNavInfoBarDelegate ------------------------------------------------- 12 13 InfoBar* AlternateNavInfoBarDelegate::CreateInfoBar(InfoBarService* owner) { 14 return new AlternateNavInfoBarGtk(owner, this); 15 } 16 17 18 // AlternateNavInfoBarGtk ------------------------------------------------------ 19 20 AlternateNavInfoBarGtk::AlternateNavInfoBarGtk( 21 InfoBarService* owner, 22 AlternateNavInfoBarDelegate* delegate) 23 : InfoBarGtk(owner, delegate) { 24 } 25 26 AlternateNavInfoBarGtk::~AlternateNavInfoBarGtk() { 27 } 28 29 void AlternateNavInfoBarGtk::InitWidgets() { 30 InfoBarGtk::InitWidgets(); 31 32 size_t link_offset; 33 string16 display_text = GetDelegate()->GetMessageTextWithOffset(&link_offset); 34 string16 link_text = GetDelegate()->GetLinkText(); 35 AddLabelWithInlineLink(display_text, link_text, link_offset, 36 G_CALLBACK(OnLinkClickedThunk)); 37 } 38 39 AlternateNavInfoBarDelegate* AlternateNavInfoBarGtk::GetDelegate() { 40 return static_cast<AlternateNavInfoBarDelegate*>(delegate()); 41 } 42 43 void AlternateNavInfoBarGtk::OnLinkClicked(GtkWidget* button) { 44 if (GetDelegate()->LinkClicked( 45 event_utils::DispositionForCurrentButtonPressEvent())) 46 RemoveSelf(); 47 } 48