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

Side by Side Diff: chrome/browser/ui/gtk/browser_titlebar.cc

Issue 8511041: GTK: Use IDR_THEME_WINDOW_CONTROL_BACKGROUND when drawing min/max/close and new tab buttons. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: stray line Created 9 years, 1 month 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
« no previous file with comments | « chrome/browser/ui/gtk/browser_titlebar.h ('k') | chrome/browser/ui/gtk/gtk_theme_service.cc » ('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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ui/gtk/browser_titlebar.h" 5 #include "chrome/browser/ui/gtk/browser_titlebar.h"
6 6
7 #include <gdk/gdkkeysyms.h> 7 #include <gdk/gdkkeysyms.h>
8 #include <gtk/gtk.h> 8 #include <gtk/gtk.h>
9 9
10 #include <string> 10 #include <string>
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 G_CALLBACK(OnPanelSettingsMenuButtonPressedThunk), this); 394 G_CALLBACK(OnPanelSettingsMenuButtonPressedThunk), this);
395 gtk_widget_set_no_show_all(panel_wrench_button_->widget(), TRUE); 395 gtk_widget_set_no_show_all(panel_wrench_button_->widget(), TRUE);
396 } 396 }
397 397
398 app_mode_title_ = gtk_label_new(NULL); 398 app_mode_title_ = gtk_label_new(NULL);
399 gtk_label_set_ellipsize(GTK_LABEL(app_mode_title_), PANGO_ELLIPSIZE_END); 399 gtk_label_set_ellipsize(GTK_LABEL(app_mode_title_), PANGO_ELLIPSIZE_END);
400 gtk_misc_set_alignment(GTK_MISC(app_mode_title_), 0.0, 0.5); 400 gtk_misc_set_alignment(GTK_MISC(app_mode_title_), 0.0, 0.5);
401 gtk_box_pack_start(GTK_BOX(app_mode_hbox), app_mode_title_, TRUE, TRUE, 401 gtk_box_pack_start(GTK_BOX(app_mode_hbox), app_mode_title_, TRUE, TRUE,
402 0); 402 0);
403 403
404 // Register with the theme provider to set the |app_mode_title_| label
405 // color.
406 theme_service_ = GtkThemeService::GetFrom(
407 browser_window_->browser()->profile());
408 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
409 content::Source<ThemeService>(theme_service_));
410 theme_service_->InitThemesFor(this);
411 UpdateTitleAndIcon(); 404 UpdateTitleAndIcon();
412 } 405 }
413 406
407 theme_service_ = GtkThemeService::GetFrom(
408 browser_window_->browser()->profile());
409 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
410 content::Source<ThemeService>(theme_service_));
411 theme_service_->InitThemesFor(this);
412
414 gtk_widget_show_all(container_); 413 gtk_widget_show_all(container_);
415 414
416 ui::ActiveWindowWatcherX::AddObserver(this); 415 ui::ActiveWindowWatcherX::AddObserver(this);
417 } 416 }
418 417
419 BrowserTitlebar::~BrowserTitlebar() { 418 BrowserTitlebar::~BrowserTitlebar() {
420 ui::ActiveWindowWatcherX::RemoveObserver(this); 419 ui::ActiveWindowWatcherX::RemoveObserver(this);
421 #if defined(USE_GCONF) 420 #if defined(USE_GCONF)
422 GConfTitlebarListener::GetInstance()->RemoveObserver(this); 421 GConfTitlebarListener::GetInstance()->RemoveObserver(this);
423 #endif 422 #endif
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 std::string localized_tooltip = l10n_util::GetStringUTF8(tooltip); 542 std::string localized_tooltip = l10n_util::GetStringUTF8(tooltip);
544 gtk_widget_set_tooltip_text(button->widget(), 543 gtk_widget_set_tooltip_text(button->widget(),
545 localized_tooltip.c_str()); 544 localized_tooltip.c_str());
546 if (start) 545 if (start)
547 gtk_box_pack_start(GTK_BOX(box), button->widget(), FALSE, FALSE, 0); 546 gtk_box_pack_start(GTK_BOX(box), button->widget(), FALSE, FALSE, 0);
548 else 547 else
549 gtk_box_pack_end(GTK_BOX(box), button->widget(), FALSE, FALSE, 0); 548 gtk_box_pack_end(GTK_BOX(box), button->widget(), FALSE, FALSE, 0);
550 return button; 549 return button;
551 } 550 }
552 551
552 void BrowserTitlebar::UpdateButtonBackground(CustomDrawButton* button) {
553 SkColor color = theme_service_->GetColor(
554 ThemeService::COLOR_BUTTON_BACKGROUND);
555 SkBitmap* background =
556 theme_service_->GetBitmapNamed(IDR_THEME_WINDOW_CONTROL_BACKGROUND);
557
558 // TODO(erg): For now, we just use a completely black mask and we can get
559 // aways with this in the short term because our buttons are rectangles. We
Evan Stade 2011/11/11 00:09:15 away
560 // should get Glen to make properly hinted masks that match our
561 // masks. http://crbug.com/103661
Evan Stade 2011/11/11 00:09:15 "masks that match our masks" -- could you reword t
562 SkBitmap mask;
563 mask.setConfig(SkBitmap::kARGB_8888_Config,
564 button->SurfaceWidth(), button->SurfaceHeight(), 0);
565 mask.allocPixels();
566 mask.eraseColor(SK_ColorBLACK);
567
568 button->SetBackground(color, background, &mask);
569 }
570
553 void BrowserTitlebar::UpdateCustomFrame(bool use_custom_frame) { 571 void BrowserTitlebar::UpdateCustomFrame(bool use_custom_frame) {
554 using_custom_frame_ = use_custom_frame; 572 using_custom_frame_ = use_custom_frame;
555 if (!use_custom_frame || 573 if (!use_custom_frame ||
556 (browser_window_->IsMaximized() && unity::IsRunning())) { 574 (browser_window_->IsMaximized() && unity::IsRunning())) {
557 if (titlebar_left_buttons_vbox_) 575 if (titlebar_left_buttons_vbox_)
558 gtk_widget_hide(titlebar_left_buttons_vbox_); 576 gtk_widget_hide(titlebar_left_buttons_vbox_);
559 if (titlebar_right_buttons_vbox_) 577 if (titlebar_right_buttons_vbox_)
560 gtk_widget_hide(titlebar_right_buttons_vbox_); 578 gtk_widget_hide(titlebar_right_buttons_vbox_);
561 } else { 579 } else {
562 if (titlebar_left_buttons_vbox_) 580 if (titlebar_left_buttons_vbox_)
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 command_id); 1005 command_id);
988 if (accelerator_gtk) 1006 if (accelerator_gtk)
989 *accelerator = *accelerator_gtk; 1007 *accelerator = *accelerator_gtk;
990 return accelerator_gtk; 1008 return accelerator_gtk;
991 } 1009 }
992 1010
993 void BrowserTitlebar::Observe(int type, 1011 void BrowserTitlebar::Observe(int type,
994 const content::NotificationSource& source, 1012 const content::NotificationSource& source,
995 const content::NotificationDetails& details) { 1013 const content::NotificationDetails& details) {
996 switch (type) { 1014 switch (type) {
997 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: 1015 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: {
998 UpdateTextColor(); 1016 UpdateTextColor();
1017
1018 if (minimize_button_.get())
1019 UpdateButtonBackground(minimize_button_.get());
1020 if (maximize_button_.get())
1021 UpdateButtonBackground(maximize_button_.get());
1022 if (restore_button_.get())
1023 UpdateButtonBackground(restore_button_.get());
1024 if (close_button_.get())
1025 UpdateButtonBackground(close_button_.get());
999 break; 1026 break;
1027 }
1000 1028
1001 case chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED: 1029 case chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED:
1002 UpdateAvatar(); 1030 UpdateAvatar();
1003 break; 1031 break;
1004 1032
1005 default: 1033 default:
1006 NOTREACHED(); 1034 NOTREACHED();
1007 } 1035 }
1008 } 1036 }
1009 1037
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 ui::SimpleMenuModel::Delegate* delegate) 1124 ui::SimpleMenuModel::Delegate* delegate)
1097 : SimpleMenuModel(delegate) { 1125 : SimpleMenuModel(delegate) {
1098 AddItemWithStringId(IDC_NEW_TAB, IDS_TAB_CXMENU_NEWTAB); 1126 AddItemWithStringId(IDC_NEW_TAB, IDS_TAB_CXMENU_NEWTAB);
1099 AddItemWithStringId(IDC_RESTORE_TAB, IDS_RESTORE_TAB); 1127 AddItemWithStringId(IDC_RESTORE_TAB, IDS_RESTORE_TAB);
1100 AddSeparator(); 1128 AddSeparator();
1101 AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); 1129 AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
1102 AddSeparator(); 1130 AddSeparator();
1103 AddCheckItemWithStringId(kShowWindowDecorationsCommand, 1131 AddCheckItemWithStringId(kShowWindowDecorationsCommand,
1104 IDS_SHOW_WINDOW_DECORATIONS_MENU); 1132 IDS_SHOW_WINDOW_DECORATIONS_MENU);
1105 } 1133 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/browser_titlebar.h ('k') | chrome/browser/ui/gtk/gtk_theme_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698