Chromium Code Reviews| Index: chrome/browser/ui/gtk/browser_titlebar.cc |
| diff --git a/chrome/browser/ui/gtk/browser_titlebar.cc b/chrome/browser/ui/gtk/browser_titlebar.cc |
| index ce45346a2b834ad143ffeccbc61907d1e34dc85e..1cedfb5aa33363878ca4f09c384ba42c4cb7c324 100644 |
| --- a/chrome/browser/ui/gtk/browser_titlebar.cc |
| +++ b/chrome/browser/ui/gtk/browser_titlebar.cc |
| @@ -434,45 +434,8 @@ void BrowserTitlebar::BuildButtons(const std::string& button_string) { |
| left_side = false; |
| } else { |
| base::StringPiece token = tokenizer.token_piece(); |
| - if (token == "minimize" && !IsTypePanel()) { |
| + if (BuildButton(token.as_string(), left_side)) |
| (left_side ? left_count : right_count)++; |
| - GtkWidget* parent_box = GetButtonHBox(left_side); |
| - minimize_button_.reset( |
| - BuildTitlebarButton(IDR_MINIMIZE, IDR_MINIMIZE_P, |
| - IDR_MINIMIZE_H, parent_box, true, |
| - IDS_XPFRAME_MINIMIZE_TOOLTIP)); |
| - |
| - gtk_widget_size_request(minimize_button_->widget(), |
| - &minimize_button_req_); |
| - } else if (token == "maximize" && !IsTypePanel()) { |
| - (left_side ? left_count : right_count)++; |
| - GtkWidget* parent_box = GetButtonHBox(left_side); |
| - restore_button_.reset( |
| - BuildTitlebarButton(IDR_RESTORE, IDR_RESTORE_P, |
| - IDR_RESTORE_H, parent_box, true, |
| - IDS_XPFRAME_RESTORE_TOOLTIP)); |
| - maximize_button_.reset( |
| - BuildTitlebarButton(IDR_MAXIMIZE, IDR_MAXIMIZE_P, |
| - IDR_MAXIMIZE_H, parent_box, true, |
| - IDS_XPFRAME_MAXIMIZE_TOOLTIP)); |
| - |
| - gtk_util::SetButtonClickableByMouseButtons(maximize_button_->widget(), |
| - true, true, true); |
| - gtk_widget_size_request(restore_button_->widget(), |
| - &restore_button_req_); |
| - } else if (token == "close") { |
| - (left_side ? left_count : right_count)++; |
| - GtkWidget* parent_box = GetButtonHBox(left_side); |
| - close_button_.reset( |
| - BuildTitlebarButton(IDR_CLOSE, IDR_CLOSE_P, |
| - IDR_CLOSE_H, parent_box, true, |
| - IDS_XPFRAME_CLOSE_TOOLTIP)); |
| - close_button_->set_flipped(left_side); |
| - |
| - gtk_widget_size_request(close_button_->widget(), &close_button_req_); |
| - } |
| - // Ignore any other values like "pin" since we don't have images for |
| - // those. |
| } |
| } |
| @@ -488,6 +451,50 @@ void BrowserTitlebar::BuildButtons(const std::string& button_string) { |
| UpdateMaximizeRestoreVisibility(); |
| } |
| +bool BrowserTitlebar::BuildButton(const std::string& button_token, |
| + bool left_side) { |
| + if (button_token == "minimize") { |
| + GtkWidget* parent_box = GetButtonHBox(left_side); |
| + minimize_button_.reset( |
| + CreateTitlebarButton(IDR_MINIMIZE, IDR_MINIMIZE_P, |
| + IDR_MINIMIZE_H, parent_box, |
| + IDS_XPFRAME_MINIMIZE_TOOLTIP)); |
| + |
| + gtk_widget_size_request(minimize_button_->widget(), |
| + &minimize_button_req_); |
| + return true; |
| + } else if (button_token == "maximize") { |
|
jennb
2012/04/20 22:26:32
Should we add a "restore" token and separate the b
jianli
2012/04/20 23:00:29
We can't do that because the passing string to Bui
jennb
2012/04/21 01:04:49
You could modify the passed in string, kDefaultBut
|
| + GtkWidget* parent_box = GetButtonHBox(left_side); |
| + restore_button_.reset( |
| + CreateTitlebarButton(IDR_RESTORE, IDR_RESTORE_P, |
| + IDR_RESTORE_H, parent_box, |
| + IDS_XPFRAME_RESTORE_TOOLTIP)); |
| + maximize_button_.reset( |
| + CreateTitlebarButton(IDR_MAXIMIZE, IDR_MAXIMIZE_P, |
| + IDR_MAXIMIZE_H, parent_box, |
| + IDS_XPFRAME_MAXIMIZE_TOOLTIP)); |
| + |
| + gtk_util::SetButtonClickableByMouseButtons(maximize_button_->widget(), |
| + true, true, true); |
| + gtk_widget_size_request(restore_button_->widget(), |
| + &restore_button_req_); |
| + return true; |
| + } else if (button_token == "close") { |
| + GtkWidget* parent_box = GetButtonHBox(left_side); |
| + close_button_.reset( |
| + CreateTitlebarButton(IDR_CLOSE, IDR_CLOSE_P, |
| + IDR_CLOSE_H, parent_box, |
| + IDS_XPFRAME_CLOSE_TOOLTIP)); |
| + close_button_->set_flipped(left_side); |
| + |
| + gtk_widget_size_request(close_button_->widget(), &close_button_req_); |
| + return true; |
| + } |
| + // Ignore any other values like "pin" since we don't have images for |
| + // those. |
| + return false; |
| +} |
| + |
| GtkWidget* BrowserTitlebar::GetButtonHBox(bool left_side) { |
| if (left_side && titlebar_left_buttons_hbox_) |
| return titlebar_left_buttons_hbox_; |
| @@ -517,9 +524,8 @@ GtkWidget* BrowserTitlebar::GetButtonHBox(bool left_side) { |
| return buttons_hbox; |
| } |
| -CustomDrawButton* BrowserTitlebar::BuildTitlebarButton(int image, |
| - int image_pressed, int image_hot, GtkWidget* box, bool start, |
| - int tooltip) { |
| +CustomDrawButton* BrowserTitlebar::CreateTitlebarButton(int image, |
| + int image_pressed, int image_hot, GtkWidget* box, int tooltip) { |
| CustomDrawButton* button = new CustomDrawButton(image, image_pressed, |
| image_hot, 0); |
| gtk_widget_add_events(GTK_WIDGET(button->widget()), GDK_POINTER_MOTION_MASK); |
| @@ -530,10 +536,7 @@ CustomDrawButton* BrowserTitlebar::BuildTitlebarButton(int image, |
| std::string localized_tooltip = l10n_util::GetStringUTF8(tooltip); |
| gtk_widget_set_tooltip_text(button->widget(), |
| localized_tooltip.c_str()); |
| - if (start) |
| - gtk_box_pack_start(GTK_BOX(box), button->widget(), FALSE, FALSE, 0); |
| - else |
| - gtk_box_pack_end(GTK_BOX(box), button->widget(), FALSE, FALSE, 0); |
| + gtk_box_pack_start(GTK_BOX(box), button->widget(), FALSE, FALSE, 0); |
| return button; |
| } |
| @@ -629,10 +632,9 @@ void BrowserTitlebar::UpdateThrobber(WebContents* web_contents) { |
| } else { |
| ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| - // Note: we want to exclude the application popup window. |
| + // Note: we want to exclude the application popup/panel window. |
| if ((browser_window_->browser()->is_app() && |
| - browser_window_->browser()->is_type_popup()) || |
| - IsTypePanel()) { |
| + !browser_window_->browser()->is_type_tabbed())) { |
| SkBitmap icon = browser_window_->browser()->GetCurrentPageIcon(); |
| if (icon.empty()) { |
| // Fallback to the Chromium icon if the page has no icon. |
| @@ -904,7 +906,7 @@ void BrowserTitlebar::OnButtonClicked(GtkWidget* button) { |
| gboolean BrowserTitlebar::OnFaviconMenuButtonPressed(GtkWidget* widget, |
| GdkEventButton* event) { |
| - if (event->button != 1 || IsTypePanel()) |
| + if (event->button != 1) |
| return FALSE; |
| ShowFaviconMenu(event); |
| @@ -1055,10 +1057,6 @@ void BrowserTitlebar::ActiveWindowChanged(GdkWindow* active_window) { |
| UpdateTextColor(); |
| } |
| -bool BrowserTitlebar::IsTypePanel() { |
| - return browser_window_->browser()->is_type_panel(); |
| -} |
| - |
| bool BrowserTitlebar::ShouldDisplayAvatar() { |
| return (IsOffTheRecord() || HasMultipleProfiles()) && |
| browser_window_->browser()->is_type_tabbed(); |