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

Unified Diff: chrome/browser/ui/cocoa/info_bubble_window.mm

Issue 10272035: [Mac] Give info bubble windows a gaussian blur and a smaller border radius. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/info_bubble_window.mm
diff --git a/chrome/browser/ui/cocoa/info_bubble_window.mm b/chrome/browser/ui/cocoa/info_bubble_window.mm
index aa4b5c982f949bfcc43a6268f624eb2211a51347..12ec98b0be1240e1326e906c0c4ba205f8860c84 100644
--- a/chrome/browser/ui/cocoa/info_bubble_window.mm
+++ b/chrome/browser/ui/cocoa/info_bubble_window.mm
@@ -6,6 +6,7 @@
#include "base/basictypes.h"
#include "base/logging.h"
+#include "base/mac/foundation_util.h"
#include "base/memory/scoped_nsobject.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
@@ -22,9 +23,29 @@ const NSTimeInterval kOrderOutAnimationDuration = 0.15;
// animation as quickly as possible.
const NSTimeInterval kMinimumTimeInterval =
std::numeric_limits<NSTimeInterval>::min();
-}
-
-@interface InfoBubbleWindow(Private)
+} // namespace
+
+// Forward declare private window server functions used to style the window.
+extern "C" {
+typedef int CGSConnection;
+typedef int CGSWindow;
+typedef void* CGSWindowFilterRef;
+
+OSStatus CGSNewConnection(const void** attr, CGSConnection* cid);
+OSStatus CGSReleaseConnection(CGSConnection cid);
+CGError CGSNewCIFilterByName(CGSConnection cid,
+ CFStringRef filterName,
+ CGSWindowFilterRef *outFilter);
+CGError CGSAddWindowFilter(CGSConnection cid,
+ CGSWindow wid,
+ CGSWindowFilterRef filter,
+ int flags);
+CGError CGSReleaseCIFilter(CGSConnection cid, CGSWindowFilterRef filter);
+CGError CGSSetCIFilterValuesFromDictionary(
+ CGSConnection cid, CGSWindowFilterRef filter, CFDictionaryRef filterValues);
+} // extern "C"
+
+@interface InfoBubbleWindow (Private)
- (void)appIsTerminating;
- (void)finishCloseAfterAnimation;
@end
@@ -202,6 +223,27 @@ class AppNotificationBridge : public content::NotificationObserver {
newOrigin.y += kOrderInSlideOffset;
[self setFrameOrigin:newOrigin];
+ // Add a gaussian blur to the window.
+ CGSConnection cgsConnection;
Nico 2012/05/01 20:02:41 = _CGSDefaultConnection(); ?
Robert Sesek 2012/05/01 20:08:12 Groovy.
+ if (CGSNewConnection(NULL, &cgsConnection) == noErr) {
+ CGSWindowFilterRef filter;
+ if (CGSNewCIFilterByName(cgsConnection, CFSTR("CIGaussianBlur"),
+ &filter) == kCGErrorSuccess) {
+ NSDictionary* blurOptions =
+ [NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:1.5]
+ forKey:@"inputRadius"];
+
+ if (CGSSetCIFilterValuesFromDictionary(cgsConnection, filter,
+ base::mac::NSToCFCast(blurOptions)) == kCGErrorSuccess) {
+ CGSAddWindowFilter(cgsConnection, [self windowNumber], filter, 1);
+ }
+
+ CGSReleaseCIFilter(cgsConnection, filter);
+ }
+
+ CGSReleaseConnection(cgsConnection);
+ }
+
// Apply animations to show and move self.
[NSAnimationContext beginGrouping];
// The star currently triggers on mouse down, not mouse up.

Powered by Google App Engine
This is Rietveld 408576698