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

Unified Diff: chrome/browser/ui/gtk/website_settings_popup_gtk.cc

Issue 10837174: (GTK only) For internal chrome pages display only a bubble with an info string instead of the Websi… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments (erg). Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/ui/website_settings/website_settings_utils.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/gtk/website_settings_popup_gtk.cc
diff --git a/chrome/browser/ui/gtk/website_settings_popup_gtk.cc b/chrome/browser/ui/gtk/website_settings_popup_gtk.cc
index 561f2ae8d348e0b0358826bb1d1229ae3cfa555a..ec08565fb68285d51313e9b8fd56c7f10588f50d 100644
--- a/chrome/browser/ui/gtk/website_settings_popup_gtk.cc
+++ b/chrome/browser/ui/gtk/website_settings_popup_gtk.cc
@@ -19,9 +19,11 @@
#include "chrome/browser/ui/gtk/location_bar_view_gtk.h"
#include "chrome/browser/ui/tab_contents/tab_contents.h"
#include "chrome/browser/ui/website_settings/website_settings.h"
+#include "chrome/browser/ui/website_settings/website_settings_utils.h"
#include "chrome/common/url_constants.h"
#include "content/public/browser/cert_store.h"
#include "googleurl/src/gurl.h"
+#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
#include "grit/locale_settings.h"
#include "grit/theme_resources.h"
@@ -37,6 +39,74 @@ namespace {
// is selected.
const GdkColor kBackgroundColor = GDK_COLOR_RGB(0xff, 0xff, 0xff);
+class InternalPageInfoPopupGtk : public BubbleDelegateGtk {
+ public:
+ explicit InternalPageInfoPopupGtk(gfx::NativeWindow parent,
+ Profile* profile);
+ virtual ~InternalPageInfoPopupGtk();
+
+ private:
+ // BubbleDelegateGtk implementation.
+ virtual void BubbleClosing(BubbleGtk* bubble, bool closed_by_escape) OVERRIDE;
+
+ // The popup bubble container.
+ BubbleGtk* bubble_;
+
+ DISALLOW_COPY_AND_ASSIGN(InternalPageInfoPopupGtk);
+};
+
+InternalPageInfoPopupGtk::InternalPageInfoPopupGtk(
+ gfx::NativeWindow parent, Profile* profile) {
+ GtkWidget* contents = gtk_hbox_new(FALSE, ui::kContentAreaSpacing);
+ gtk_container_set_border_width(GTK_CONTAINER(contents),
+ ui::kContentAreaBorder);
+ // Add the popup icon.
+ ResourceBundle& rb = ResourceBundle::GetSharedInstance();
+ GdkPixbuf* pixbuf = rb.GetNativeImageNamed(IDR_PRODUCT_LOGO_26).ToGdkPixbuf();
+ GtkWidget* image = gtk_image_new_from_pixbuf(pixbuf);
+ gtk_box_pack_start(GTK_BOX(contents), image, FALSE, FALSE, 0);
+ gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
+
+ // Add the popup text.
+ GtkThemeService* theme_service = GtkThemeService::GetFrom(profile);
+ GtkWidget* label = theme_service->BuildLabel(
+ l10n_util::GetStringUTF8(IDS_PAGE_INFO_INTERNAL_PAGE), ui::kGdkBlack);
+ gtk_label_set_selectable(GTK_LABEL(label), FALSE);
+ PangoAttrList* attributes = pango_attr_list_new();
+ pango_attr_list_insert(attributes,
+ pango_attr_weight_new(PANGO_WEIGHT_BOLD));
+ gtk_box_pack_start(GTK_BOX(contents), label, FALSE, FALSE, 0);
+
+ gtk_widget_show_all(contents);
+
+ // Create the bubble.
+ BubbleGtk::ArrowLocationGtk arrow_location = base::i18n::IsRTL() ?
+ BubbleGtk::ARROW_LOCATION_TOP_RIGHT :
+ BubbleGtk::ARROW_LOCATION_TOP_LEFT;
+ BrowserWindowGtk* browser_window =
+ BrowserWindowGtk::GetBrowserWindowForNativeWindow(parent);
+ GtkWidget* anchor = browser_window->
+ GetToolbar()->GetLocationBarView()->location_icon_widget();
+ bubble_ = BubbleGtk::Show(anchor,
+ NULL, // |rect|
+ contents,
+ arrow_location,
+ BubbleGtk::MATCH_SYSTEM_THEME |
+ BubbleGtk::POPUP_WINDOW |
+ BubbleGtk::GRAB_INPUT,
+ theme_service,
+ this); // |delegate|
+ DCHECK(bubble_);
+}
+
+InternalPageInfoPopupGtk::~InternalPageInfoPopupGtk() {
+}
+
+void InternalPageInfoPopupGtk::BubbleClosing(BubbleGtk* bubble,
+ bool closed_by_escape) {
+ delete this;
+}
+
} // namespace
// static
@@ -45,7 +115,10 @@ void WebsiteSettingsPopupGtk::Show(gfx::NativeWindow parent,
TabContents* tab_contents,
const GURL& url,
const content::SSLStatus& ssl) {
- new WebsiteSettingsPopupGtk(parent, profile, tab_contents, url, ssl);
+ if (InternalChromePage(url))
+ new InternalPageInfoPopupGtk(parent, profile);
+ else
+ new WebsiteSettingsPopupGtk(parent, profile, tab_contents, url, ssl);
}
WebsiteSettingsPopupGtk::WebsiteSettingsPopupGtk(
« no previous file with comments | « no previous file | chrome/browser/ui/website_settings/website_settings_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698