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

Side by Side Diff: chrome/browser/ui/gtk/tabs/tab_gtk.cc

Issue 7657009: Revert 96674 - Gtk: Make click target of tabs match their appearance. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/gtk/tabs/tab_gtk.h ('k') | chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Deleted: svn:mergeinfo
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/tabs/tab_gtk.h" 5 #include "chrome/browser/ui/gtk/tabs/tab_gtk.h"
6 6
7 #include <gdk/gdkkeysyms.h> 7 #include <gdk/gdkkeysyms.h>
8 8
9 #include "base/memory/singleton.h" 9 #include "base/memory/singleton.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "chrome/app/chrome_command_ids.h" 11 #include "chrome/app/chrome_command_ids.h"
12 #include "chrome/browser/ui/gtk/accelerators_gtk.h" 12 #include "chrome/browser/ui/gtk/accelerators_gtk.h"
13 #include "chrome/browser/ui/gtk/gtk_input_event_box.h"
14 #include "chrome/browser/ui/gtk/menu_gtk.h" 13 #include "chrome/browser/ui/gtk/menu_gtk.h"
15 #include "chrome/browser/ui/gtk/tabs/tab_strip_menu_controller.h" 14 #include "chrome/browser/ui/gtk/tabs/tab_strip_menu_controller.h"
16 #include "chrome/browser/ui/tabs/tab_menu_model.h" 15 #include "chrome/browser/ui/tabs/tab_menu_model.h"
17 #include "chrome/browser/ui/tabs/tab_resources.h"
18 #include "grit/generated_resources.h" 16 #include "grit/generated_resources.h"
19 #include "grit/theme_resources.h" 17 #include "grit/theme_resources.h"
20 #include "ui/base/dragdrop/gtk_dnd_util.h" 18 #include "ui/base/dragdrop/gtk_dnd_util.h"
21 #include "ui/base/gtk/scoped_handle_gtk.h"
22 #include "ui/base/models/accelerator_gtk.h" 19 #include "ui/base/models/accelerator_gtk.h"
23 #include "ui/gfx/path.h" 20 #include "ui/gfx/path.h"
24 21
25 namespace { 22 namespace {
26 23
27 // Returns the width of the title for the current font, in pixels. 24 // Returns the width of the title for the current font, in pixels.
28 int GetTitleWidth(gfx::Font* font, string16 title) { 25 int GetTitleWidth(gfx::Font* font, string16 title) {
29 DCHECK(font); 26 DCHECK(font);
30 if (title.empty()) 27 if (title.empty())
31 return 0; 28 return 0;
(...skipping 26 matching lines...) Expand all
58 TabGtk::TabGtk(TabDelegate* delegate) 55 TabGtk::TabGtk(TabDelegate* delegate)
59 : TabRendererGtk(delegate->GetThemeProvider()), 56 : TabRendererGtk(delegate->GetThemeProvider()),
60 delegate_(delegate), 57 delegate_(delegate),
61 closing_(false), 58 closing_(false),
62 dragging_(false), 59 dragging_(false),
63 last_mouse_down_(NULL), 60 last_mouse_down_(NULL),
64 drag_widget_(NULL), 61 drag_widget_(NULL),
65 title_width_(0), 62 title_width_(0),
66 ALLOW_THIS_IN_INITIALIZER_LIST(destroy_factory_(this)), 63 ALLOW_THIS_IN_INITIALIZER_LIST(destroy_factory_(this)),
67 ALLOW_THIS_IN_INITIALIZER_LIST(drag_end_factory_(this)) { 64 ALLOW_THIS_IN_INITIALIZER_LIST(drag_end_factory_(this)) {
68 event_box_ = gtk_input_event_box_new(); 65 event_box_ = gtk_event_box_new();
66 gtk_event_box_set_visible_window(GTK_EVENT_BOX(event_box_), FALSE);
69 g_signal_connect(event_box_, "button-press-event", 67 g_signal_connect(event_box_, "button-press-event",
70 G_CALLBACK(OnButtonPressEventThunk), this); 68 G_CALLBACK(OnButtonPressEventThunk), this);
71 g_signal_connect(event_box_, "button-release-event", 69 g_signal_connect(event_box_, "button-release-event",
72 G_CALLBACK(OnButtonReleaseEventThunk), this); 70 G_CALLBACK(OnButtonReleaseEventThunk), this);
73 g_signal_connect(event_box_, "enter-notify-event", 71 g_signal_connect(event_box_, "enter-notify-event",
74 G_CALLBACK(OnEnterNotifyEventThunk), this); 72 G_CALLBACK(OnEnterNotifyEventThunk), this);
75 g_signal_connect(event_box_, "leave-notify-event", 73 g_signal_connect(event_box_, "leave-notify-event",
76 G_CALLBACK(OnLeaveNotifyEventThunk), this); 74 G_CALLBACK(OnLeaveNotifyEventThunk), this);
77 gtk_widget_add_events(event_box_, 75 gtk_widget_add_events(event_box_,
78 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | 76 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
(...skipping 13 matching lines...) Expand all
92 90
93 if (menu_controller_.get()) { 91 if (menu_controller_.get()) {
94 // The menu is showing. Close the menu. 92 // The menu is showing. Close the menu.
95 menu_controller_->Cancel(); 93 menu_controller_->Cancel();
96 94
97 // Invoke this so that we hide the highlight. 95 // Invoke this so that we hide the highlight.
98 ContextMenuClosed(); 96 ContextMenuClosed();
99 } 97 }
100 } 98 }
101 99
102 void TabGtk::Raise() const {
103 GdkWindow* window = gtk_input_event_box_get_window(
104 GTK_INPUT_EVENT_BOX(event_box_));
105 gdk_window_raise(window);
106 }
107
108 gboolean TabGtk::OnButtonPressEvent(GtkWidget* widget, GdkEventButton* event) { 100 gboolean TabGtk::OnButtonPressEvent(GtkWidget* widget, GdkEventButton* event) {
109 // Every button press ensures either a button-release-event or a drag-fail 101 // Every button press ensures either a button-release-event or a drag-fail
110 // signal for |widget|. 102 // signal for |widget|.
111 if (event->button == 1 && event->type == GDK_BUTTON_PRESS) { 103 if (event->button == 1 && event->type == GDK_BUTTON_PRESS) {
112 // Store whether or not we were selected just now... we only want to be 104 // Store whether or not we were selected just now... we only want to be
113 // able to drag foreground tabs, so we don't start dragging the tab if 105 // able to drag foreground tabs, so we don't start dragging the tab if
114 // it was in the background. 106 // it was in the background.
115 if (!IsActive()) { 107 if (!IsActive()) {
116 if (event->state & GDK_CONTROL_MASK) 108 if (event->state & GDK_CONTROL_MASK)
117 delegate_->ToggleTabSelection(this); 109 delegate_->ToggleTabSelection(this);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 void TabGtk::UpdateData(TabContents* contents, bool app, bool loading_only) { 250 void TabGtk::UpdateData(TabContents* contents, bool app, bool loading_only) {
259 TabRendererGtk::UpdateData(contents, app, loading_only); 251 TabRendererGtk::UpdateData(contents, app, loading_only);
260 // Cache the title width so we don't recalculate it every time the tab is 252 // Cache the title width so we don't recalculate it every time the tab is
261 // resized. 253 // resized.
262 title_width_ = GetTitleWidth(title_font(), GetTitle()); 254 title_width_ = GetTitleWidth(title_font(), GetTitle());
263 UpdateTooltipState(); 255 UpdateTooltipState();
264 } 256 }
265 257
266 void TabGtk::SetBounds(const gfx::Rect& bounds) { 258 void TabGtk::SetBounds(const gfx::Rect& bounds) {
267 TabRendererGtk::SetBounds(bounds); 259 TabRendererGtk::SetBounds(bounds);
268
269 if (gtk_input_event_box_get_window(GTK_INPUT_EVENT_BOX(event_box_))) {
270 gfx::Path mask;
271 TabResources::GetHitTestMask(bounds.width(), bounds.height(), &mask);
272 ui::ScopedRegion region(mask.CreateNativeRegion());
273 gdk_window_input_shape_combine_region(
274 gtk_input_event_box_get_window(GTK_INPUT_EVENT_BOX(event_box_)),
275 region.Get(),
276 0, 0);
277 }
278
279 UpdateTooltipState(); 260 UpdateTooltipState();
280 } 261 }
281 262
282 /////////////////////////////////////////////////////////////////////////////// 263 ///////////////////////////////////////////////////////////////////////////////
283 // TabGtk, private: 264 // TabGtk, private:
284 265
285 void TabGtk::ContextMenuClosed() { 266 void TabGtk::ContextMenuClosed() {
286 delegate()->StopAllHighlighting(); 267 delegate()->StopAllHighlighting();
287 menu_controller_.reset(); 268 menu_controller_.reset();
288 } 269 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 gdk_event_free(last_mouse_down_); 322 gdk_event_free(last_mouse_down_);
342 last_mouse_down_ = NULL; 323 last_mouse_down_ = NULL;
343 } 324 }
344 325
345 // Notify the drag helper that we're done with any potential drag operations. 326 // Notify the drag helper that we're done with any potential drag operations.
346 // Clean up the drag helper, which is re-created on the next mouse press. 327 // Clean up the drag helper, which is re-created on the next mouse press.
347 delegate_->EndDrag(canceled); 328 delegate_->EndDrag(canceled);
348 329
349 observer_.reset(); 330 observer_.reset();
350 } 331 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/tabs/tab_gtk.h ('k') | chrome/browser/ui/gtk/tabs/tab_renderer_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698