OLD | NEW |
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/dragged_view_gtk.h" | 5 #include "chrome/browser/ui/gtk/tabs/dragged_view_gtk.h" |
6 | 6 |
7 #include <gdk/gdk.h> | 7 #include <gdk/gdk.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
11 #include "base/i18n/rtl.h" | 11 #include "base/i18n/rtl.h" |
12 #include "base/stl_util.h" | 12 #include "base/stl_util.h" |
13 #include "chrome/browser/extensions/extension_tab_helper.h" | 13 #include "chrome/browser/extensions/extension_tab_helper.h" |
14 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
15 #include "chrome/browser/tabs/tab_strip_model.h" | 15 #include "chrome/browser/tabs/tab_strip_model.h" |
16 #include "chrome/browser/themes/theme_service.h" | 16 #include "chrome/browser/themes/theme_service.h" |
17 #include "chrome/browser/themes/theme_service_factory.h" | 17 #include "chrome/browser/themes/theme_service_factory.h" |
18 #include "chrome/browser/ui/gtk/gtk_util.h" | 18 #include "chrome/browser/ui/gtk/gtk_util.h" |
19 #include "chrome/browser/ui/gtk/tabs/drag_data.h" | 19 #include "chrome/browser/ui/gtk/tabs/drag_data.h" |
20 #include "chrome/browser/ui/gtk/tabs/tab_renderer_gtk.h" | 20 #include "chrome/browser/ui/gtk/tabs/tab_renderer_gtk.h" |
21 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 21 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
22 #include "content/browser/renderer_host/backing_store_gtk.h" | 22 #include "content/browser/renderer_host/backing_store_gtk.h" |
23 #include "content/browser/renderer_host/render_view_host.h" | 23 #include "content/browser/renderer_host/render_view_host.h" |
24 #include "content/browser/tab_contents/tab_contents.h" | 24 #include "content/browser/tab_contents/tab_contents.h" |
25 #include "third_party/skia/include/core/SkShader.h" | 25 #include "third_party/skia/include/core/SkShader.h" |
| 26 #include "ui/base/gtk/gtk_screen_utils.h" |
26 #include "ui/base/x/x11_util.h" | 27 #include "ui/base/x/x11_util.h" |
27 #include "ui/gfx/gtk_util.h" | 28 #include "ui/gfx/gtk_util.h" |
28 | 29 |
29 namespace { | 30 namespace { |
30 | 31 |
31 // The size of the dragged window frame. | 32 // The size of the dragged window frame. |
32 const int kDragFrameBorderSize = 1; | 33 const int kDragFrameBorderSize = 1; |
33 const int kTwiceDragFrameBorderSize = 2 * kDragFrameBorderSize; | 34 const int kTwiceDragFrameBorderSize = 2 * kDragFrameBorderSize; |
34 | 35 |
35 // Used to scale the dragged window sizes. | 36 // Used to scale the dragged window sizes. |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 attached_ = true; | 132 attached_ = true; |
132 parent_window_width_ = window_width; | 133 parent_window_width_ = window_width; |
133 normal_width_ = normal_width; | 134 normal_width_ = normal_width; |
134 mini_width_ = mini_width; | 135 mini_width_ = mini_width; |
135 | 136 |
136 int dragged_tab_width = | 137 int dragged_tab_width = |
137 drag_data_->GetSourceTabData()->mini_ ? mini_width : normal_width; | 138 drag_data_->GetSourceTabData()->mini_ ? mini_width : normal_width; |
138 | 139 |
139 Resize(dragged_tab_width); | 140 Resize(dragged_tab_width); |
140 | 141 |
141 if (gtk_util::IsScreenComposited()) | 142 if (ui::IsScreenComposited()) |
142 gdk_window_set_opacity(container_->window, kOpaqueAlpha); | 143 gdk_window_set_opacity(container_->window, kOpaqueAlpha); |
143 } | 144 } |
144 | 145 |
145 void DraggedViewGtk::Resize(int width) { | 146 void DraggedViewGtk::Resize(int width) { |
146 attached_tab_size_.set_width(width); | 147 attached_tab_size_.set_width(width); |
147 ResizeContainer(); | 148 ResizeContainer(); |
148 } | 149 } |
149 | 150 |
150 void DraggedViewGtk::Detach() { | 151 void DraggedViewGtk::Detach() { |
151 attached_ = false; | 152 attached_ = false; |
152 ResizeContainer(); | 153 ResizeContainer(); |
153 | 154 |
154 if (gtk_util::IsScreenComposited()) | 155 if (ui::IsScreenComposited()) |
155 gdk_window_set_opacity(container_->window, kTransparentAlpha); | 156 gdk_window_set_opacity(container_->window, kTransparentAlpha); |
156 } | 157 } |
157 | 158 |
158 void DraggedViewGtk::Update() { | 159 void DraggedViewGtk::Update() { |
159 gtk_widget_queue_draw(container_); | 160 gtk_widget_queue_draw(container_); |
160 } | 161 } |
161 | 162 |
162 int DraggedViewGtk::GetWidthInTabStripFromTo(int from, int to) { | 163 int DraggedViewGtk::GetWidthInTabStripFromTo(int from, int to) { |
163 DCHECK(from <= static_cast<int>(drag_data_->size())); | 164 DCHECK(from <= static_cast<int>(drag_data_->size())); |
164 DCHECK(to <= static_cast<int>(drag_data_->size())); | 165 DCHECK(to <= static_cast<int>(drag_data_->size())); |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 } | 363 } |
363 | 364 |
364 cairo_destroy(cairo_context); | 365 cairo_destroy(cairo_context); |
365 | 366 |
366 // Set the shape mask. | 367 // Set the shape mask. |
367 gdk_window_shape_combine_mask(container_->window, pixmap, 0, 0); | 368 gdk_window_shape_combine_mask(container_->window, pixmap, 0, 0); |
368 g_object_unref(pixmap); | 369 g_object_unref(pixmap); |
369 } | 370 } |
370 | 371 |
371 gboolean DraggedViewGtk::OnExpose(GtkWidget* widget, GdkEventExpose* event) { | 372 gboolean DraggedViewGtk::OnExpose(GtkWidget* widget, GdkEventExpose* event) { |
372 if (gtk_util::IsScreenComposited()) | 373 if (ui::IsScreenComposited()) |
373 SetContainerTransparency(); | 374 SetContainerTransparency(); |
374 else | 375 else |
375 SetContainerShapeMask(); | 376 SetContainerShapeMask(); |
376 | 377 |
377 // Only used when not attached. | 378 // Only used when not attached. |
378 int tab_height = static_cast<int>( | 379 int tab_height = static_cast<int>( |
379 kScalingFactor * renderers_[drag_data_->source_tab_index()]->height()); | 380 kScalingFactor * renderers_[drag_data_->source_tab_index()]->height()); |
380 | 381 |
381 // Draw the render area. | 382 // Draw the render area. |
382 BackingStore* backing_store = drag_data_->GetSourceTabContents()-> | 383 BackingStore* backing_store = drag_data_->GetSourceTabContents()-> |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 if (!attached_) { | 446 if (!attached_) { |
446 paint_at = widget_width / kScalingFactor - | 447 paint_at = widget_width / kScalingFactor - |
447 GetWidthInTabStripFromTo(0, index + 1); | 448 GetWidthInTabStripFromTo(0, index + 1); |
448 } | 449 } |
449 } | 450 } |
450 | 451 |
451 cairo_set_source_surface(cr, surface, paint_at, 0); | 452 cairo_set_source_surface(cr, surface, paint_at, 0); |
452 cairo_paint(cr); | 453 cairo_paint(cr); |
453 cairo_surface_destroy(surface); | 454 cairo_surface_destroy(surface); |
454 } | 455 } |
OLD | NEW |