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

Side by Side Diff: chrome/browser/ui/cocoa/notifications/balloon_view.mm

Issue 23361031: [Mac] Delete old balloon and Notification Center notification implementations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix DCHECK Created 7 years, 3 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/cocoa/notifications/balloon_view.h"
6
7 #import <Cocoa/Cocoa.h>
8
9 #include "base/basictypes.h"
10 #import "chrome/browser/ui/cocoa/notifications/balloon_controller.h"
11 #import "third_party/GTM/AppKit/GTMNSBezierPath+RoundRect.h"
12
13 namespace {
14
15 const int kRoundedCornerSize = 6;
16
17 } // namespace
18
19 @implementation BalloonWindow
20 - (id)initWithContentRect:(NSRect)contentRect
21 styleMask:(NSUInteger)aStyle
22 backing:(NSBackingStoreType)bufferingType
23 defer:(BOOL)flag {
24 self = [super initWithContentRect:contentRect
25 styleMask:NSBorderlessWindowMask
26 backing:NSBackingStoreBuffered
27 defer:NO];
28 // Using NSModalPanelWindowLevel (8) rather then NSStatusWindowLevel (25)
29 // ensures notification balloons on top of regular windows, but below
30 // popup menus which are at NSPopUpMenuWindowLevel (101) and Spotlight
31 // drop-out, which is at NSStatusWindowLevel-2 (23) for OSX 10.6/7.
32 // See http://crbug.com/59878.
33 if (self) {
34 [self setLevel:NSModalPanelWindowLevel];
35 [self setOpaque:NO];
36 [self setBackgroundColor:[NSColor clearColor]];
37 }
38 return self;
39 }
40
41 - (BOOL)canBecomeMainWindow {
42 return NO;
43 }
44 @end
45
46 @implementation BalloonShelfViewCocoa
47 - (void)drawRect:(NSRect)rect {
48 NSBezierPath* path =
49 [NSBezierPath gtm_bezierPathWithRoundRect:[self bounds]
50 topLeftCornerRadius:kRoundedCornerSize
51 topRightCornerRadius:kRoundedCornerSize
52 bottomLeftCornerRadius:0.0
53 bottomRightCornerRadius:0.0];
54
55 [[NSColor colorWithCalibratedWhite:0.957 alpha:1.0] set];
56 [path fill];
57
58 [[NSColor colorWithCalibratedWhite:0.8 alpha:1.0] set];
59 NSPoint origin = [self bounds].origin;
60 [NSBezierPath strokeLineFromPoint:origin
61 toPoint:NSMakePoint(origin.x + NSWidth([self bounds]), origin.y)];
62 }
63 @end
64
65 @implementation BalloonContentViewCocoa
66 - (void)drawRect:(NSRect)rect {
67 rect = NSInsetRect([self bounds], 0.5, 0.5);
68 NSBezierPath* path =
69 [NSBezierPath gtm_bezierPathWithRoundRect:rect
70 topLeftCornerRadius:0.0
71 topRightCornerRadius:0.0
72 bottomLeftCornerRadius:kRoundedCornerSize
73 bottomRightCornerRadius:kRoundedCornerSize];
74 [[NSColor whiteColor] set];
75 [path setLineWidth:3];
76 [path stroke];
77 }
78 @end
79
80 @implementation BalloonOverlayViewCocoa
81
82 // We do not want to bring chrome window to foreground when we click on any
83 // part of the notification balloon. To do this, we first postpone the window
84 // reorder here (shouldDelayWindowOrderingForEvent is called during mouseDown)
85 // and then complete canceling the reorder by [NSApp preventWindowOrdering] in
86 // mouseDown handler of this view.
87 - (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent*)theEvent {
88 return YES;
89 }
90
91 - (void)mouseDown:(NSEvent*)event {
92 [NSApp preventWindowOrdering];
93 // Continue bubbling the event up the chain of responders.
94 [super mouseDown:event];
95 }
96
97 - (BOOL)acceptsFirstMouse:(NSEvent*)event {
98 return YES;
99 }
100 @end
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/notifications/balloon_view.h ('k') | chrome/browser/ui/cocoa/notifications/balloon_view_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698