diff options
Diffstat (limited to 'chrome/browser/notifications/balloon_collection_linux.cc')
-rw-r--r-- | chrome/browser/notifications/balloon_collection_linux.cc | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/chrome/browser/notifications/balloon_collection_linux.cc b/chrome/browser/notifications/balloon_collection_linux.cc index c82b3c1..a499292 100644 --- a/chrome/browser/notifications/balloon_collection_linux.cc +++ b/chrome/browser/notifications/balloon_collection_linux.cc @@ -30,6 +30,38 @@ int BalloonCollectionImpl::Layout::VerticalEdgeMargin() const { return 5; } +void BalloonCollectionImpl::DidProcessEvent(GdkEvent* event) { + switch (event->type) { + case GDK_MOTION_NOTIFY: + case GDK_LEAVE_NOTIFY: + HandleMouseMoveEvent(); + break; + default: + break; + } +} + +bool BalloonCollectionImpl::IsCursorInBalloonCollection() const { + if (balloons_.empty()) + return false; + + gfx::Point upper_left = balloons_[balloons_.size() - 1]->GetPosition(); + gfx::Point lower_right = layout_.GetLayoutOrigin(); + + gfx::Rect bounds = gfx::Rect(upper_left.x(), + upper_left.y(), + lower_right.x() - upper_left.x(), + lower_right.y() - upper_left.y()); + + GdkScreen* screen = gdk_screen_get_default(); + GdkDisplay* display = gdk_screen_get_display(screen); + gint x, y; + gdk_display_get_pointer(display, NULL, &x, &y, NULL); + gfx::Point cursor(x, y); + + return bounds.Contains(cursor); +} + // static BalloonCollection* BalloonCollection::Create() { return new BalloonCollectionImpl(); |