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

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

Issue 8921022: GTK: Even more cleanup to access allocation through the accessor. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 9 years 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
« no previous file with comments | « chrome/browser/ui/gtk/menu_bar_helper.cc ('k') | chrome/browser/ui/gtk/tabs/tab_gtk.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/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
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 337
338 // Blit the rendered bitmap into a pixmap. Any pixel set in the pixmap will 338 // Blit the rendered bitmap into a pixmap. Any pixel set in the pixmap will
339 // be opaque in the container window. 339 // be opaque in the container window.
340 if (!attached_) 340 if (!attached_)
341 cairo_scale(cairo_context, kScalingFactor, kScalingFactor); 341 cairo_scale(cairo_context, kScalingFactor, kScalingFactor);
342 for (size_t i = 0; i < renderers_.size(); i++) { 342 for (size_t i = 0; i < renderers_.size(); i++) {
343 if (static_cast<int>(i) == 0) 343 if (static_cast<int>(i) == 0)
344 cairo_set_operator(cairo_context, CAIRO_OPERATOR_SOURCE); 344 cairo_set_operator(cairo_context, CAIRO_OPERATOR_SOURCE);
345 else 345 else
346 cairo_set_operator(cairo_context, CAIRO_OPERATOR_OVER); 346 cairo_set_operator(cairo_context, CAIRO_OPERATOR_OVER);
347 PaintTab(i, container_, cairo_context, container_->allocation.width); 347
348 GtkAllocation allocation;
349 gtk_widget_get_allocation(container_, &allocation);
350 PaintTab(i, container_, cairo_context, allocation.width);
348 } 351 }
349 352
350 if (!attached_) { 353 if (!attached_) {
351 // Make the render area depiction opaque (leaving enough room for the 354 // Make the render area depiction opaque (leaving enough room for the
352 // border). 355 // border).
353 cairo_identity_matrix(cairo_context); 356 cairo_identity_matrix(cairo_context);
354 // On Lucid running VNC, the X server will reject RGBA (1,1,1,1) as an 357 // On Lucid running VNC, the X server will reject RGBA (1,1,1,1) as an
355 // invalid value below in gdk_window_shape_combine_mask(). Using (0,0,0,1) 358 // invalid value below in gdk_window_shape_combine_mask(). Using (0,0,0,1)
356 // instead. The value doesn't really matter, as long as the alpha is not 0. 359 // instead. The value doesn't really matter, as long as the alpha is not 0.
357 cairo_set_source_rgba(cairo_context, 0.0f, 0.0f, 0.0f, 1.0f); 360 cairo_set_source_rgba(cairo_context, 0.0f, 0.0f, 0.0f, 1.0f);
(...skipping 18 matching lines...) Expand all
376 379
377 if (ui::IsScreenComposited()) 380 if (ui::IsScreenComposited())
378 SetContainerTransparency(); 381 SetContainerTransparency();
379 else 382 else
380 SetContainerShapeMask(); 383 SetContainerShapeMask();
381 384
382 // Only used when not attached. 385 // Only used when not attached.
383 int tab_height = static_cast<int>( 386 int tab_height = static_cast<int>(
384 kScalingFactor * renderers_[drag_data_->source_tab_index()]->height()); 387 kScalingFactor * renderers_[drag_data_->source_tab_index()]->height());
385 388
389 GtkAllocation allocation;
390 gtk_widget_get_allocation(widget, &allocation);
391
386 // Draw the render area. 392 // Draw the render area.
387 BackingStore* backing_store = drag_data_->GetSourceTabContents()-> 393 BackingStore* backing_store = drag_data_->GetSourceTabContents()->
388 render_view_host()->GetBackingStore(false); 394 render_view_host()->GetBackingStore(false);
389 if (backing_store && !attached_) { 395 if (backing_store && !attached_) {
390 // This leaves room for the border. 396 // This leaves room for the border.
391 static_cast<BackingStoreGtk*>(backing_store)->PaintToRect( 397 static_cast<BackingStoreGtk*>(backing_store)->PaintToRect(
392 gfx::Rect(kDragFrameBorderSize, tab_height, 398 gfx::Rect(kDragFrameBorderSize, tab_height,
393 widget->allocation.width - kTwiceDragFrameBorderSize, 399 allocation.width - kTwiceDragFrameBorderSize,
394 widget->allocation.height - tab_height - 400 allocation.height - tab_height -
395 kDragFrameBorderSize), 401 kDragFrameBorderSize),
396 GDK_DRAWABLE(widget->window)); 402 GDK_DRAWABLE(widget->window));
397 } 403 }
398 404
399 cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(widget->window)); 405 cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(widget->window));
400 // Draw the border. 406 // Draw the border.
401 if (!attached_) { 407 if (!attached_) {
402 cairo_set_line_width(cr, kDragFrameBorderSize); 408 cairo_set_line_width(cr, kDragFrameBorderSize);
403 cairo_set_source_rgb(cr, kDraggedTabBorderColor[0], 409 cairo_set_source_rgb(cr, kDraggedTabBorderColor[0],
404 kDraggedTabBorderColor[1], 410 kDraggedTabBorderColor[1],
405 kDraggedTabBorderColor[2]); 411 kDraggedTabBorderColor[2]);
406 // |offset| is the distance from the edge of the image to the middle of 412 // |offset| is the distance from the edge of the image to the middle of
407 // the border line. 413 // the border line.
408 double offset = kDragFrameBorderSize / 2.0 - 0.5; 414 double offset = kDragFrameBorderSize / 2.0 - 0.5;
409 double left_x = offset; 415 double left_x = offset;
410 double top_y = tab_height - kDragFrameBorderSize + offset; 416 double top_y = tab_height - kDragFrameBorderSize + offset;
411 double right_x = widget->allocation.width - offset; 417 double right_x = allocation.width - offset;
412 double bottom_y = widget->allocation.height - offset; 418 double bottom_y = allocation.height - offset;
413 419
414 cairo_move_to(cr, left_x, top_y); 420 cairo_move_to(cr, left_x, top_y);
415 cairo_line_to(cr, left_x, bottom_y); 421 cairo_line_to(cr, left_x, bottom_y);
416 cairo_line_to(cr, right_x, bottom_y); 422 cairo_line_to(cr, right_x, bottom_y);
417 cairo_line_to(cr, right_x, top_y); 423 cairo_line_to(cr, right_x, top_y);
418 cairo_line_to(cr, left_x, top_y); 424 cairo_line_to(cr, left_x, top_y);
419 cairo_stroke(cr); 425 cairo_stroke(cr);
420 } 426 }
421 427
422 // Draw the tab. 428 // Draw the tab.
423 if (!attached_) 429 if (!attached_)
424 cairo_scale(cr, kScalingFactor, kScalingFactor); 430 cairo_scale(cr, kScalingFactor, kScalingFactor);
425 // Painting all but the active tab first, from last to first. 431 // Painting all but the active tab first, from last to first.
426 for (int i = renderers_.size() - 1; i >= 0; i--) { 432 for (int i = renderers_.size() - 1; i >= 0; i--) {
427 if (i == drag_data_->source_tab_index()) 433 if (i == drag_data_->source_tab_index())
428 continue; 434 continue;
429 PaintTab(i, widget, cr, widget->allocation.width); 435 PaintTab(i, widget, cr, allocation.width);
430 } 436 }
431 // Painting the active tab last, so that it appears on top. 437 // Painting the active tab last, so that it appears on top.
432 PaintTab(drag_data_->source_tab_index(), widget, cr, 438 PaintTab(drag_data_->source_tab_index(), widget, cr,
433 widget->allocation.width); 439 allocation.width);
434 440
435 cairo_destroy(cr); 441 cairo_destroy(cr);
436 442
437 // We've already drawn the tab, so don't propagate the expose-event signal. 443 // We've already drawn the tab, so don't propagate the expose-event signal.
438 return TRUE; 444 return TRUE;
439 } 445 }
440 446
441 void DraggedViewGtk::PaintTab(int index, GtkWidget* widget, cairo_t* cr, 447 void DraggedViewGtk::PaintTab(int index, GtkWidget* widget, cairo_t* cr,
442 int widget_width) { 448 int widget_width) {
443 renderers_[index]->set_mini(drag_data_->get(index)->mini_); 449 renderers_[index]->set_mini(drag_data_->get(index)->mini_);
444 cairo_surface_t* surface = renderers_[index]->PaintToSurface(widget, cr); 450 cairo_surface_t* surface = renderers_[index]->PaintToSurface(widget, cr);
445 451
446 int paint_at = 0; 452 int paint_at = 0;
447 if (!base::i18n::IsRTL()) { 453 if (!base::i18n::IsRTL()) {
448 paint_at = std::max(GetWidthInTabStripFromTo(0, index) - 16, 0); 454 paint_at = std::max(GetWidthInTabStripFromTo(0, index) - 16, 0);
449 } else { 455 } else {
450 paint_at = GetTotalWidthInTabStrip() - 456 paint_at = GetTotalWidthInTabStrip() -
451 GetWidthInTabStripFromTo(0, index + 1); 457 GetWidthInTabStripFromTo(0, index + 1);
452 if (!attached_) { 458 if (!attached_) {
453 paint_at = widget_width / kScalingFactor - 459 paint_at = widget_width / kScalingFactor -
454 GetWidthInTabStripFromTo(0, index + 1); 460 GetWidthInTabStripFromTo(0, index + 1);
455 } 461 }
456 } 462 }
457 463
458 cairo_set_source_surface(cr, surface, paint_at, 0); 464 cairo_set_source_surface(cr, surface, paint_at, 0);
459 cairo_paint(cr); 465 cairo_paint(cr);
460 cairo_surface_destroy(surface); 466 cairo_surface_destroy(surface);
461 } 467 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/gtk/menu_bar_helper.cc ('k') | chrome/browser/ui/gtk/tabs/tab_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698