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/notifications/balloon_view_gtk.h" | 5 #include "chrome/browser/ui/gtk/notifications/balloon_view_gtk.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 void BalloonViewImpl::OnCloseButton(GtkWidget* widget) { | 408 void BalloonViewImpl::OnCloseButton(GtkWidget* widget) { |
409 Close(true); | 409 Close(true); |
410 } | 410 } |
411 | 411 |
412 // We draw black dots on the bottom left and right corners to fill in the | 412 // We draw black dots on the bottom left and right corners to fill in the |
413 // border. Otherwise, the border has a gap because the sharp corners of the | 413 // border. Otherwise, the border has a gap because the sharp corners of the |
414 // HTML view cut off the roundedness of the notification window. | 414 // HTML view cut off the roundedness of the notification window. |
415 gboolean BalloonViewImpl::OnContentsExpose(GtkWidget* sender, | 415 gboolean BalloonViewImpl::OnContentsExpose(GtkWidget* sender, |
416 GdkEventExpose* event) { | 416 GdkEventExpose* event) { |
417 TRACE_EVENT0("ui::gtk", "BalloonViewImpl::OnContentsExpose"); | 417 TRACE_EVENT0("ui::gtk", "BalloonViewImpl::OnContentsExpose"); |
418 cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(sender->window)); | 418 cairo_t* cr = gdk_cairo_create(gtk_widget_get_window(sender)); |
419 gdk_cairo_rectangle(cr, &event->area); | 419 gdk_cairo_rectangle(cr, &event->area); |
420 cairo_clip(cr); | 420 cairo_clip(cr); |
421 | 421 |
422 GtkAllocation allocation; | 422 GtkAllocation allocation; |
423 gtk_widget_get_allocation(sender, &allocation); | 423 gtk_widget_get_allocation(sender, &allocation); |
424 | 424 |
425 // According to a discussion on a mailing list I found, these degenerate | 425 // According to a discussion on a mailing list I found, these degenerate |
426 // paths are the officially supported way to draw points in Cairo. | 426 // paths are the officially supported way to draw points in Cairo. |
427 cairo_set_source_rgb(cr, 0, 0, 0); | 427 cairo_set_source_rgb(cr, 0, 0, 0); |
428 cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND); | 428 cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND); |
429 cairo_set_line_width(cr, 1.0); | 429 cairo_set_line_width(cr, 1.0); |
430 cairo_move_to(cr, 0.5, allocation.height - 0.5); | 430 cairo_move_to(cr, 0.5, allocation.height - 0.5); |
431 cairo_close_path(cr); | 431 cairo_close_path(cr); |
432 cairo_move_to(cr, allocation.width - 0.5, allocation.height - 0.5); | 432 cairo_move_to(cr, allocation.width - 0.5, allocation.height - 0.5); |
433 cairo_close_path(cr); | 433 cairo_close_path(cr); |
434 cairo_stroke(cr); | 434 cairo_stroke(cr); |
435 cairo_destroy(cr); | 435 cairo_destroy(cr); |
436 | 436 |
437 return FALSE; | 437 return FALSE; |
438 } | 438 } |
439 | 439 |
440 gboolean BalloonViewImpl::OnExpose(GtkWidget* sender, GdkEventExpose* event) { | 440 gboolean BalloonViewImpl::OnExpose(GtkWidget* sender, GdkEventExpose* event) { |
441 TRACE_EVENT0("ui::gtk", "BalloonViewImpl::OnExpose"); | 441 TRACE_EVENT0("ui::gtk", "BalloonViewImpl::OnExpose"); |
442 cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(sender->window)); | 442 cairo_t* cr = gdk_cairo_create(gtk_widget_get_window(sender)); |
443 gdk_cairo_rectangle(cr, &event->area); | 443 gdk_cairo_rectangle(cr, &event->area); |
444 cairo_clip(cr); | 444 cairo_clip(cr); |
445 | 445 |
446 gfx::Size content_size = balloon_->content_size(); | 446 gfx::Size content_size = balloon_->content_size(); |
447 gfx::Point offset = GetContentsOffset(); | 447 gfx::Point offset = GetContentsOffset(); |
448 | 448 |
449 // Draw a background color behind the shelf. | 449 // Draw a background color behind the shelf. |
450 cairo_set_source_rgb(cr, kShelfBackgroundColorR, | 450 cairo_set_source_rgb(cr, kShelfBackgroundColorR, |
451 kShelfBackgroundColorG, kShelfBackgroundColorB); | 451 kShelfBackgroundColorG, kShelfBackgroundColorB); |
452 cairo_rectangle(cr, kLeftMargin, kTopMargin + 0.5, | 452 cairo_rectangle(cr, kLeftMargin, kTopMargin + 0.5, |
(...skipping 29 matching lines...) Expand all Loading... |
482 weak_factory_.GetWeakPtr(), | 482 weak_factory_.GetWeakPtr(), |
483 false)); | 483 false)); |
484 } | 484 } |
485 } | 485 } |
486 | 486 |
487 gboolean BalloonViewImpl::OnDestroy(GtkWidget* widget) { | 487 gboolean BalloonViewImpl::OnDestroy(GtkWidget* widget) { |
488 frame_container_ = NULL; | 488 frame_container_ = NULL; |
489 Close(false); | 489 Close(false); |
490 return FALSE; // Propagate. | 490 return FALSE; // Propagate. |
491 } | 491 } |
OLD | NEW |