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

Unified Diff: chrome/browser/ui/panels/panel_titlebar_gtk.cc

Issue 10831226: Panels refactor: Support browserless panels on Linux. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
Index: chrome/browser/ui/panels/panel_titlebar_gtk.cc
diff --git a/chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc b/chrome/browser/ui/panels/panel_titlebar_gtk.cc
similarity index 77%
copy from chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc
copy to chrome/browser/ui/panels/panel_titlebar_gtk.cc
index c3c3fd0792dedd65ed66352cc4250059d36fc117..e15f9c6762887393d3177e36efa99b278157996c 100644
--- a/chrome/browser/ui/panels/panel_browser_titlebar_gtk.cc
+++ b/chrome/browser/ui/panels/panel_titlebar_gtk.cc
@@ -2,18 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/ui/panels/panel_browser_titlebar_gtk.h"
+#include "chrome/browser/ui/panels/panel_titlebar_gtk.h"
#include "base/utf_string_conversions.h"
-#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/gtk/custom_button.h"
#include "chrome/browser/ui/gtk/gtk_theme_service.h"
#include "chrome/browser/ui/gtk/gtk_util.h"
-#include "chrome/browser/ui/gtk/gtk_theme_service.h"
#include "chrome/browser/ui/panels/panel.h"
-#include "chrome/browser/ui/panels/panel_browser_window_gtk.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "content/public/browser/notification_service.h"
+#include "chrome/browser/ui/panels/panel_gtk.h"
#include "content/public/browser/web_contents.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
@@ -46,22 +42,20 @@ const char* const kTitleMarkupSuffix = "</span>";
} // namespace
-PanelBrowserTitlebarGtk::PanelBrowserTitlebarGtk(
- PanelBrowserWindowGtk* browser_window, GtkWindow* window)
- : browser_window_(browser_window),
- window_(window),
+PanelTitlebarGtk::PanelTitlebarGtk(PanelGtk* panel_gtk)
+ : panel_gtk_(panel_gtk),
container_(NULL),
titlebar_right_buttons_vbox_(NULL),
titlebar_right_buttons_hbox_(NULL),
icon_(NULL),
title_(NULL),
- theme_service_(NULL) {
+ theme_service_(GtkThemeService::GetFrom(panel_gtk_->panel()->profile())) {
}
-PanelBrowserTitlebarGtk::~PanelBrowserTitlebarGtk() {
+PanelTitlebarGtk::~PanelTitlebarGtk() {
}
-void PanelBrowserTitlebarGtk::Init() {
+void PanelTitlebarGtk::Init() {
container_ = gtk_event_box_new();
gtk_widget_set_name(container_, "chrome-panel-titlebar");
gtk_event_box_set_visible_window(GTK_EVENT_BOX(container_), FALSE);
@@ -79,9 +73,6 @@ void PanelBrowserTitlebarGtk::Init() {
GtkWidget* container_hbox = gtk_hbox_new(FALSE, 0);
gtk_container_add(GTK_CONTAINER(container_alignment), container_hbox);
- g_signal_connect(window_, "window-state-event",
- G_CALLBACK(OnWindowStateChangedThunk), this);
-
// Add minimize/restore and close buttons. Panel buttons are always placed
// on the right part of the titlebar.
titlebar_right_buttons_vbox_ = gtk_vbox_new(FALSE, 0);
@@ -107,28 +98,22 @@ void PanelBrowserTitlebarGtk::Init() {
gtk_label_set_ellipsize(GTK_LABEL(title_), PANGO_ELLIPSIZE_END);
gtk_misc_set_alignment(GTK_MISC(title_), 0.0, 0.5);
gtk_box_pack_start(GTK_BOX(icon_title_hbox), title_, TRUE, TRUE, 0);
-
UpdateTitleAndIcon();
-
- theme_service_ = GtkThemeService::GetFrom(
- browser_window_->panel()->profile());
- registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
- content::Source<ThemeService>(theme_service_));
- theme_service_->InitThemesFor(this);
+ UpdateTextColor();
gtk_widget_show_all(container_);
}
-SkColor PanelBrowserTitlebarGtk::GetTextColor() const {
- if (browser_window_->UsingDefaultTheme())
+SkColor PanelTitlebarGtk::GetTextColor() const {
+ if (panel_gtk_->UsingDefaultTheme())
return kTitleTextDefaultColor;
- return theme_service_->GetColor(browser_window_->paint_state() ==
- PanelBrowserWindowGtk::PAINT_AS_ACTIVE ?
+ return theme_service_->GetColor(panel_gtk_->paint_state() ==
+ PanelGtk::PAINT_AS_ACTIVE ?
ThemeService::COLOR_TAB_TEXT :
ThemeService::COLOR_BACKGROUND_TAB_TEXT);
}
-void PanelBrowserTitlebarGtk::BuildButtons() {
+void PanelTitlebarGtk::BuildButtons() {
minimize_button_.reset(CreateButton(panel::MINIMIZE_BUTTON));
restore_button_.reset(CreateButton(panel::RESTORE_BUTTON));
close_button_.reset(CreateButton(panel::CLOSE_BUTTON));
@@ -141,7 +126,7 @@ void PanelBrowserTitlebarGtk::BuildButtons() {
UpdateMinimizeRestoreButtonVisibility();
}
-CustomDrawButton* PanelBrowserTitlebarGtk::CreateButton(
+CustomDrawButton* PanelTitlebarGtk::CreateButton(
panel::TitlebarButtonType button_type) {
int normal_image_id = -1;
int pressed_image_id = -1;
@@ -167,7 +152,7 @@ CustomDrawButton* PanelBrowserTitlebarGtk::CreateButton(
return button;
}
-void PanelBrowserTitlebarGtk::GetButtonResources(
+void PanelTitlebarGtk::GetButtonResources(
panel::TitlebarButtonType button_type,
int* normal_image_id,
int* pressed_image_id,
@@ -195,7 +180,7 @@ void PanelBrowserTitlebarGtk::GetButtonResources(
}
}
-GtkWidget* PanelBrowserTitlebarGtk::GetButtonHBox() {
+GtkWidget* PanelTitlebarGtk::GetButtonHBox() {
if (!titlebar_right_buttons_hbox_) {
// We put the minimize/restore/close buttons in a vbox so they are top
// aligned (up to padding) and don't vertically stretch.
@@ -207,13 +192,9 @@ GtkWidget* PanelBrowserTitlebarGtk::GetButtonHBox() {
return titlebar_right_buttons_hbox_;
}
-void PanelBrowserTitlebarGtk::UpdateCustomFrame(bool use_custom_frame) {
- // Nothing to do.
-}
-
-void PanelBrowserTitlebarGtk::UpdateTitleAndIcon() {
+void PanelTitlebarGtk::UpdateTitleAndIcon() {
std::string title_text =
- UTF16ToUTF8(browser_window_->panel()->GetWindowTitle());
+ UTF16ToUTF8(panel_gtk_->panel()->GetWindowTitle());
// Add the markup to show the title in the desired font.
gchar* escaped_title_text = g_markup_escape_text(title_text.c_str(), -1);
@@ -226,7 +207,7 @@ void PanelBrowserTitlebarGtk::UpdateTitleAndIcon() {
g_free(title_text_with_markup);
}
-void PanelBrowserTitlebarGtk::UpdateThrobber(
+void PanelTitlebarGtk::UpdateThrobber(
content::WebContents* web_contents) {
if (web_contents && web_contents->IsLoading()) {
GdkPixbuf* icon_pixbuf =
@@ -235,7 +216,7 @@ void PanelBrowserTitlebarGtk::UpdateThrobber(
} else {
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- SkBitmap icon = browser_window_->panel()->GetCurrentPageIcon();
+ SkBitmap icon = panel_gtk_->panel()->GetCurrentPageIcon();
if (icon.empty()) {
// Fallback to the Chromium icon if the page has no icon.
gtk_image_set_from_pixbuf(GTK_IMAGE(icon_),
@@ -250,30 +231,21 @@ void PanelBrowserTitlebarGtk::UpdateThrobber(
}
}
-void PanelBrowserTitlebarGtk::ShowContextMenu(GdkEventButton* event) {
- // Panel does not show any context menu.
-}
-
-void PanelBrowserTitlebarGtk::UpdateTextColor() {
+void PanelTitlebarGtk::UpdateTextColor() {
GdkColor text_color = gfx::SkColorToGdkColor(GetTextColor());
gtk_util::SetLabelColor(title_, &text_color);
}
-void PanelBrowserTitlebarGtk::UpdateMinimizeRestoreButtonVisibility() {
- Panel* panel = browser_window_->panel();
+void PanelTitlebarGtk::UpdateMinimizeRestoreButtonVisibility() {
+ Panel* panel = panel_gtk_->panel();
gtk_widget_set_visible(minimize_button_->widget(), panel->CanMinimize());
gtk_widget_set_visible(restore_button_->widget(), panel->CanRestore());
}
-gboolean PanelBrowserTitlebarGtk::OnWindowStateChanged(
- GtkWindow* window, GdkEventWindowState* event) {
- UpdateTextColor();
- return FALSE;
-}
-
-void PanelBrowserTitlebarGtk::OnButtonClicked(GtkWidget* button) {
+void PanelTitlebarGtk::OnButtonClicked(GtkWidget* button) {
+ Panel* panel = panel_gtk_->panel();
if (close_button_->widget() == button) {
- browser_window_->panel()->Close();
+ panel->Close();
return;
}
@@ -281,11 +253,11 @@ void PanelBrowserTitlebarGtk::OnButtonClicked(GtkWidget* button) {
DCHECK(event && event->type == GDK_BUTTON_RELEASE);
if (minimize_button_->widget() == button) {
- browser_window_->panel()->OnMinimizeButtonClicked(
+ panel->OnMinimizeButtonClicked(
(event->button.state & GDK_CONTROL_MASK) ?
panel::APPLY_TO_ALL : panel::NO_MODIFIER);
} else if (restore_button_->widget() == button) {
- browser_window_->panel()->OnRestoreButtonClicked(
+ panel->OnRestoreButtonClicked(
(event->button.state & GDK_CONTROL_MASK) ?
panel::APPLY_TO_ALL : panel::NO_MODIFIER);
}
@@ -293,20 +265,7 @@ void PanelBrowserTitlebarGtk::OnButtonClicked(GtkWidget* button) {
gdk_event_free(event);
}
-void PanelBrowserTitlebarGtk::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- switch (type) {
- case chrome::NOTIFICATION_BROWSER_THEME_CHANGED:
- UpdateTextColor();
- break;
- default:
- NOTREACHED();
- }
-}
-
-void PanelBrowserTitlebarGtk::SendEnterNotifyToCloseButtonIfUnderMouse() {
+void PanelTitlebarGtk::SendEnterNotifyToCloseButtonIfUnderMouse() {
if (!close_button())
return;
@@ -347,15 +306,6 @@ void PanelBrowserTitlebarGtk::SendEnterNotifyToCloseButtonIfUnderMouse() {
&return_value);
}
-GtkWidget* PanelBrowserTitlebarGtk::widget() const {
+GtkWidget* PanelTitlebarGtk::widget() const {
return container_;
}
-
-void PanelBrowserTitlebarGtk::set_window(GtkWindow* window) {
- window_ = window;
-}
-
-AvatarMenuButtonGtk* PanelBrowserTitlebarGtk::avatar_button() const {
- // Not supported in panel.
- return NULL;
-}

Powered by Google App Engine
This is Rietveld 408576698