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

Unified Diff: chrome/browser/gtk/browser_titlebar.cc

Issue 155053: Scroll-wheeling, whilst over the tab-strip, now switches tabs on GTK/Linux. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 11 years, 6 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
« no previous file with comments | « chrome/browser/gtk/browser_titlebar.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/browser_titlebar.cc
===================================================================
--- chrome/browser/gtk/browser_titlebar.cc (revision 19695)
+++ chrome/browser/gtk/browser_titlebar.cc (working copy)
@@ -10,6 +10,7 @@
#include "app/resource_bundle.h"
#include "app/l10n_util.h"
+#include "base/gfx/gtk_util.h"
#include "chrome/app/chrome_dll_resource.h"
#include "chrome/browser/browser.h"
#include "chrome/browser/gtk/browser_window_gtk.h"
@@ -76,7 +77,8 @@
void BrowserTitlebar::Init() {
// The widget hierarchy is shown below.
//
- // +- HBox (container_) -----------------------------------------------------+
+ // +- EventBox (container_) -------------------------------------------------+
+ // +- HBox (container_hbox) -------------------------------------------------+
// |+- Algn. -++- Alignment --------------++- VBox (titlebar_buttons_box_) -+|
// ||+ Image +|| (titlebar_alignment_) ||+- HBox -----------------------+||
// |||spy_guy||| |||+- button -++- button -+ |||
@@ -85,8 +87,15 @@
// ||+-------+||+------------------------+||+------------------------------+||
// |+---------++--------------------------++--------------------------------+|
// +-------------------------------------------------------------------------+
- container_ = gtk_hbox_new(FALSE, 0);
+ GtkWidget* container_hbox = gtk_hbox_new(FALSE, 0);
+ container_ = gtk_event_box_new();
+ gtk_event_box_set_visible_window(GTK_EVENT_BOX(container_), FALSE);
+ gtk_container_add(GTK_CONTAINER(container_), container_hbox);
+
+ g_signal_connect(G_OBJECT(container_), "scroll-event",
+ G_CALLBACK(OnScroll), this);
+
g_signal_connect(window_, "window-state-event",
G_CALLBACK(OnWindowStateChanged), this);
@@ -100,12 +109,12 @@
kOTRBottomSpacing, kOTRSideSpacing, kOTRSideSpacing);
gtk_widget_set_size_request(spy_guy, -1, 0);
gtk_container_add(GTK_CONTAINER(spy_frame), spy_guy);
- gtk_box_pack_start(GTK_BOX(container_), spy_frame, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(container_hbox), spy_frame, FALSE, FALSE, 0);
}
// We use an alignment to control the titlebar height.
titlebar_alignment_ = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
- gtk_box_pack_start(GTK_BOX(container_), titlebar_alignment_, TRUE,
+ gtk_box_pack_start(GTK_BOX(container_hbox), titlebar_alignment_, TRUE,
TRUE, 0);
// Put the tab strip in the titlebar.
@@ -135,7 +144,7 @@
gtk_widget_size_request(close_button_->widget(), &req);
close_button_default_width_ = req.width;
- gtk_box_pack_end(GTK_BOX(container_), titlebar_buttons_box_, FALSE,
+ gtk_box_pack_end(GTK_BOX(container_hbox), titlebar_buttons_box_, FALSE,
FALSE, 0);
gtk_widget_show_all(container_);
@@ -196,6 +205,20 @@
}
// static
+gboolean BrowserTitlebar::OnScroll(GtkWidget* widget, GdkEventScroll* event,
+ BrowserTitlebar* titlebar) {
+ TabStripModel* tabstrip_model =
+ titlebar->browser_window_->browser()->tabstrip_model();
+ if (event->direction == GDK_SCROLL_LEFT ||
+ event->direction == GDK_SCROLL_UP) {
+ tabstrip_model->SelectPreviousTab();
+ } else {
+ tabstrip_model->SelectNextTab();
+ }
+ return TRUE;
+}
+
+// static
void BrowserTitlebar::OnButtonClicked(GtkWidget* button,
BrowserTitlebar* titlebar) {
if (titlebar->close_button_->widget() == button) {
« no previous file with comments | « chrome/browser/gtk/browser_titlebar.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698