diff options
Diffstat (limited to 'chrome/browser/gtk/browser_window_gtk.cc')
-rw-r--r-- | chrome/browser/gtk/browser_window_gtk.cc | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc index 1ae6ade..e2960f8 100644 --- a/chrome/browser/gtk/browser_window_gtk.cc +++ b/chrome/browser/gtk/browser_window_gtk.cc @@ -20,6 +20,7 @@ #include "chrome/browser/gtk/nine_box.h" #include "chrome/browser/gtk/status_bubble_gtk.h" #include "chrome/browser/gtk/tab_contents_container_gtk.h" +#include "chrome/browser/gtk/tab_strip_gtk.h" #include "chrome/browser/location_bar.h" #include "chrome/browser/renderer_host/render_widget_host_view_gtk.h" #include "chrome/browser/tab_contents/web_contents.h" @@ -120,6 +121,8 @@ const struct AcceleratorMapping { { GDK_k, IDC_FOCUS_SEARCH }, { GDK_l, IDC_FOCUS_LOCATION }, { GDK_o, IDC_OPEN_FILE }, + { GDK_Page_Down, IDC_SELECT_NEXT_TAB }, + { GDK_Page_Up, IDC_SELECT_PREVIOUS_TAB }, { GDK_w, IDC_CLOSE_TAB }, }; @@ -188,12 +191,19 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser) }; content_area_ninebox_.reset(new NineBox(images)); - // This vbox is intended to surround the "content": toolbar+page. - // When we add the tab strip, it should go in a vbox surrounding this one. - vbox_ = gtk_vbox_new(FALSE, 0); - gtk_widget_set_app_paintable(vbox_, TRUE); - gtk_widget_set_double_buffered(vbox_, FALSE); - g_signal_connect(G_OBJECT(vbox_), "expose-event", + // This vbox encompasses all of the widgets within the browser, including + // the tabstrip and the content vbox. + window_vbox_ = gtk_vbox_new(FALSE, 0); + + tabstrip_.reset(new TabStripGtk(browser_->tabstrip_model())); + tabstrip_->Init(); + tabstrip_->AddTabStripToBox(window_vbox_); + + // This vbox surrounds the "content": toolbar+page. + content_vbox_ = gtk_vbox_new(FALSE, 0); + gtk_widget_set_app_paintable(content_vbox_, TRUE); + gtk_widget_set_double_buffered(content_vbox_, FALSE); + g_signal_connect(G_OBJECT(content_vbox_), "expose-event", G_CALLBACK(&OnContentAreaExpose), this); // Temporary hack hidden behind a command line option to add one of the @@ -205,14 +215,14 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser) experimental_widget_->SetContentsView( new views::TextButton(new DummyButtonListener, L"Button")); - gtk_box_pack_start(GTK_BOX(vbox_), + gtk_box_pack_start(GTK_BOX(content_vbox_), experimental_widget_->GetNativeView(), false, false, 2); } toolbar_.reset(new BrowserToolbarGtk(browser_.get())); toolbar_->Init(browser_->profile(), window_); - toolbar_->AddToolbarToBox(vbox_); + toolbar_->AddToolbarToBox(content_vbox_); FindBarGtk* find_bar_gtk = new FindBarGtk(); find_bar_controller_.reset(new FindBarController(find_bar_gtk)); @@ -221,7 +231,7 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser) contents_container_.reset( new TabContentsContainerGtk(find_bar_gtk->widget())); - contents_container_->AddContainerToBox(vbox_); + contents_container_->AddContainerToBox(content_vbox_); // Note that calling this the first time is necessary to get the // proper control layout. @@ -230,8 +240,10 @@ BrowserWindowGtk::BrowserWindowGtk(Browser* browser) status_bubble_.reset(new StatusBubbleGtk(window_)); - gtk_container_add(GTK_CONTAINER(window_), vbox_); - gtk_widget_show(vbox_); + gtk_container_add(GTK_CONTAINER(window_vbox_), content_vbox_); + gtk_container_add(GTK_CONTAINER(window_), window_vbox_); + gtk_widget_show(content_vbox_); + gtk_widget_show(window_vbox_); browser_->tabstrip_model()->AddObserver(this); } @@ -538,11 +550,11 @@ void BrowserWindowGtk::ConnectAccelerators() { void BrowserWindowGtk::SetCustomFrame(bool custom_frame) { custom_frame_ = custom_frame; if (custom_frame_) { - gtk_container_set_border_width(GTK_CONTAINER(vbox_), 2); + gtk_container_set_border_width(GTK_CONTAINER(window_vbox_), 2); // TODO(port): all the crazy blue title bar, etc. NOTIMPLEMENTED(); } else { - gtk_container_set_border_width(GTK_CONTAINER(vbox_), 0); + gtk_container_set_border_width(GTK_CONTAINER(window_vbox_), 0); } } |