OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/gtk/browser_titlebar.h" | 5 #include "chrome/browser/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> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "app/l10n_util.h" | 13 #include "app/l10n_util.h" |
14 #include "app/resource_bundle.h" | 14 #include "app/resource_bundle.h" |
15 #include "base/command_line.h" | 15 #include "base/command_line.h" |
16 #include "base/singleton.h" | 16 #include "base/singleton.h" |
17 #include "base/string_piece.h" | 17 #include "base/string_piece.h" |
18 #include "base/string_tokenizer.h" | 18 #include "base/string_tokenizer.h" |
19 #include "base/utf_string_conversions.h" | 19 #include "base/utf_string_conversions.h" |
20 #include "chrome/app/chrome_dll_resource.h" | 20 #include "chrome/app/chrome_dll_resource.h" |
21 #include "chrome/browser/browser.h" | 21 #include "chrome/browser/browser.h" |
22 #include "chrome/browser/encoding_menu_controller.h" | 22 #include "chrome/browser/encoding_menu_controller.h" |
23 #include "chrome/browser/gtk/accelerators_gtk.h" | 23 #include "chrome/browser/gtk/accelerators_gtk.h" |
24 #include "chrome/browser/gtk/browser_window_gtk.h" | 24 #include "chrome/browser/gtk/browser_window_gtk.h" |
25 #include "chrome/browser/gtk/custom_button.h" | 25 #include "chrome/browser/gtk/custom_button.h" |
| 26 #if defined(USE_GCONF) |
26 #include "chrome/browser/gtk/gconf_titlebar_listener.h" | 27 #include "chrome/browser/gtk/gconf_titlebar_listener.h" |
| 28 #endif |
27 #include "chrome/browser/gtk/gtk_theme_provider.h" | 29 #include "chrome/browser/gtk/gtk_theme_provider.h" |
28 #include "chrome/browser/gtk/gtk_util.h" | 30 #include "chrome/browser/gtk/gtk_util.h" |
29 #include "chrome/browser/gtk/menu_gtk.h" | 31 #include "chrome/browser/gtk/menu_gtk.h" |
30 #include "chrome/browser/gtk/nine_box.h" | 32 #include "chrome/browser/gtk/nine_box.h" |
31 #include "chrome/browser/gtk/tabs/tab_strip_gtk.h" | 33 #include "chrome/browser/gtk/tabs/tab_strip_gtk.h" |
32 #include "chrome/browser/prefs/pref_service.h" | 34 #include "chrome/browser/prefs/pref_service.h" |
33 #include "chrome/browser/profile.h" | 35 #include "chrome/browser/profile.h" |
34 #include "chrome/browser/tab_contents/tab_contents.h" | 36 #include "chrome/browser/tab_contents/tab_contents.h" |
35 #include "chrome/browser/wrench_menu_model.h" | 37 #include "chrome/browser/wrench_menu_model.h" |
36 #include "chrome/common/notification_service.h" | 38 #include "chrome/common/notification_service.h" |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 AddSubMenuWithStringId(IDC_ENCODING_MENU, IDS_ENCODING_MENU, | 188 AddSubMenuWithStringId(IDC_ENCODING_MENU, IDS_ENCODING_MENU, |
187 encoding_menu_model_.get()); | 189 encoding_menu_model_.get()); |
188 | 190 |
189 AddSeparator(); | 191 AddSeparator(); |
190 AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE); | 192 AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE); |
191 } | 193 } |
192 | 194 |
193 //////////////////////////////////////////////////////////////////////////////// | 195 //////////////////////////////////////////////////////////////////////////////// |
194 // BrowserTitlebar | 196 // BrowserTitlebar |
195 | 197 |
| 198 // static |
| 199 const char BrowserTitlebar::kDefaultButtonString[] = ":minimize,maximize,close"; |
| 200 |
196 BrowserTitlebar::BrowserTitlebar(BrowserWindowGtk* browser_window, | 201 BrowserTitlebar::BrowserTitlebar(BrowserWindowGtk* browser_window, |
197 GtkWindow* window) | 202 GtkWindow* window) |
198 : browser_window_(browser_window), | 203 : browser_window_(browser_window), |
199 window_(window), | 204 window_(window), |
200 titlebar_left_buttons_vbox_(NULL), | 205 titlebar_left_buttons_vbox_(NULL), |
201 titlebar_right_buttons_vbox_(NULL), | 206 titlebar_right_buttons_vbox_(NULL), |
202 titlebar_left_buttons_hbox_(NULL), | 207 titlebar_left_buttons_hbox_(NULL), |
203 titlebar_right_buttons_hbox_(NULL), | 208 titlebar_right_buttons_hbox_(NULL), |
204 titlebar_left_spy_frame_(NULL), | 209 titlebar_left_spy_frame_(NULL), |
205 titlebar_right_spy_frame_(NULL), | 210 titlebar_right_spy_frame_(NULL), |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 gtk_widget_set_no_show_all(titlebar_right_spy_frame_, TRUE); | 297 gtk_widget_set_no_show_all(titlebar_right_spy_frame_, TRUE); |
293 gtk_alignment_set_padding(GTK_ALIGNMENT(titlebar_right_spy_frame_), 0, | 298 gtk_alignment_set_padding(GTK_ALIGNMENT(titlebar_right_spy_frame_), 0, |
294 kOTRBottomSpacing, kOTRSideSpacing, kOTRSideSpacing); | 299 kOTRBottomSpacing, kOTRSideSpacing, kOTRSideSpacing); |
295 gtk_box_pack_end(GTK_BOX(container_hbox_), titlebar_right_spy_frame_, | 300 gtk_box_pack_end(GTK_BOX(container_hbox_), titlebar_right_spy_frame_, |
296 FALSE, FALSE, 0); | 301 FALSE, FALSE, 0); |
297 } | 302 } |
298 titlebar_right_buttons_vbox_ = gtk_vbox_new(FALSE, 0); | 303 titlebar_right_buttons_vbox_ = gtk_vbox_new(FALSE, 0); |
299 gtk_box_pack_end(GTK_BOX(container_hbox_), titlebar_right_buttons_vbox_, | 304 gtk_box_pack_end(GTK_BOX(container_hbox_), titlebar_right_buttons_vbox_, |
300 FALSE, FALSE, 0); | 305 FALSE, FALSE, 0); |
301 | 306 |
| 307 #if defined(USE_GCONF) |
302 // Either read the gconf database and register for updates (on GNOME), or use | 308 // Either read the gconf database and register for updates (on GNOME), or use |
303 // the default value (anywhere else). | 309 // the default value (anywhere else). |
304 Singleton<GConfTitlebarListener>()->SetTitlebarButtons(this); | 310 Singleton<GConfTitlebarListener>()->SetTitlebarButtons(this); |
| 311 #else |
| 312 BuildButtons(kDefaultButtonString); |
| 313 #endif |
305 | 314 |
306 // We use an alignment to control the titlebar height. | 315 // We use an alignment to control the titlebar height. |
307 titlebar_alignment_ = gtk_alignment_new(0.0, 0.0, 1.0, 1.0); | 316 titlebar_alignment_ = gtk_alignment_new(0.0, 0.0, 1.0, 1.0); |
308 if (browser_window_->browser()->type() == Browser::TYPE_NORMAL) { | 317 if (browser_window_->browser()->type() == Browser::TYPE_NORMAL) { |
309 gtk_box_pack_start(GTK_BOX(container_hbox_), titlebar_alignment_, TRUE, | 318 gtk_box_pack_start(GTK_BOX(container_hbox_), titlebar_alignment_, TRUE, |
310 TRUE, 0); | 319 TRUE, 0); |
311 | 320 |
312 // Put the tab strip in the titlebar. | 321 // Put the tab strip in the titlebar. |
313 gtk_container_add(GTK_CONTAINER(titlebar_alignment_), | 322 gtk_container_add(GTK_CONTAINER(titlebar_alignment_), |
314 browser_window_->tabstrip()->widget()); | 323 browser_window_->tabstrip()->widget()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 UpdateTitleAndIcon(); | 365 UpdateTitleAndIcon(); |
357 } | 366 } |
358 | 367 |
359 gtk_widget_show_all(container_); | 368 gtk_widget_show_all(container_); |
360 | 369 |
361 ActiveWindowWatcherX::AddObserver(this); | 370 ActiveWindowWatcherX::AddObserver(this); |
362 } | 371 } |
363 | 372 |
364 BrowserTitlebar::~BrowserTitlebar() { | 373 BrowserTitlebar::~BrowserTitlebar() { |
365 ActiveWindowWatcherX::RemoveObserver(this); | 374 ActiveWindowWatcherX::RemoveObserver(this); |
| 375 #if defined(USE_GCONF) |
366 Singleton<GConfTitlebarListener>()->RemoveObserver(this); | 376 Singleton<GConfTitlebarListener>()->RemoveObserver(this); |
| 377 #endif |
367 } | 378 } |
368 | 379 |
369 void BrowserTitlebar::BuildButtons(const std::string& button_string) { | 380 void BrowserTitlebar::BuildButtons(const std::string& button_string) { |
370 // Clear out all previous data. | 381 // Clear out all previous data. |
371 close_button_.reset(); | 382 close_button_.reset(); |
372 restore_button_.reset(); | 383 restore_button_.reset(); |
373 maximize_button_.reset(); | 384 maximize_button_.reset(); |
374 minimize_button_.reset(); | 385 minimize_button_.reset(); |
375 gtk_util::RemoveAllChildren(titlebar_left_buttons_vbox_); | 386 gtk_util::RemoveAllChildren(titlebar_left_buttons_vbox_); |
376 gtk_util::RemoveAllChildren(titlebar_right_buttons_vbox_); | 387 gtk_util::RemoveAllChildren(titlebar_right_buttons_vbox_); |
(...skipping 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
926 menus::SimpleMenuModel::Delegate* delegate) | 937 menus::SimpleMenuModel::Delegate* delegate) |
927 : SimpleMenuModel(delegate) { | 938 : SimpleMenuModel(delegate) { |
928 AddItemWithStringId(IDC_NEW_TAB, IDS_TAB_CXMENU_NEWTAB); | 939 AddItemWithStringId(IDC_NEW_TAB, IDS_TAB_CXMENU_NEWTAB); |
929 AddItemWithStringId(IDC_RESTORE_TAB, IDS_RESTORE_TAB); | 940 AddItemWithStringId(IDC_RESTORE_TAB, IDS_RESTORE_TAB); |
930 AddSeparator(); | 941 AddSeparator(); |
931 AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); | 942 AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); |
932 AddSeparator(); | 943 AddSeparator(); |
933 AddCheckItemWithStringId(kShowWindowDecorationsCommand, | 944 AddCheckItemWithStringId(kShowWindowDecorationsCommand, |
934 IDS_SHOW_WINDOW_DECORATIONS_MENU); | 945 IDS_SHOW_WINDOW_DECORATIONS_MENU); |
935 } | 946 } |
OLD | NEW |