1 // Copyright 2014 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.
5 #ifndef UI_VIEWS_COCOA_VIEWS_NSWINDOW_DELEGATE_H_
6 #define UI_VIEWS_COCOA_VIEWS_NSWINDOW_DELEGATE_H_
8 #import <Cocoa/Cocoa.h>
10 #import "base/mac/scoped_nsobject.h"
11 #include "ui/views/views_export.h"
14 class NativeWidgetMac
;
15 class BridgedNativeWidget
;
18 // The delegate set on the NSWindow when a views::BridgedNativeWidget is
21 @interface ViewsNSWindowDelegate
: NSObject
<NSWindowDelegate
> {
23 views::BridgedNativeWidget
* parent_
; // Weak. Owns this.
24 base::scoped_nsobject
<NSCursor
> cursor_
;
27 // The NativeWidgetMac that created the window this is attached to. Returns
28 // NULL if not created by NativeWidgetMac.
29 @
property(nonatomic
, readonly
) views::NativeWidgetMac
* nativeWidgetMac
;
31 // If set, the cursor set in -[NSResponder updateCursor:] when the window is
32 // reached along the responder chain.
33 @
property(retain
, nonatomic
) NSCursor
* cursor
;
35 // Initialize with the given |parent|.
36 - (id
)initWithBridgedNativeWidget
:(views::BridgedNativeWidget
*)parent
;
38 // Notify that the window is about to be reordered on screen. This ensures a
39 // paint will occur, even if Cocoa has not yet updated the window visibility.
40 - (void)onWindowOrderWillChange
:(NSWindowOrderingMode
)orderingMode
;
42 // Notify that the window has been reordered in (or removed from) the window
43 // server's screen list. This is a substitute for -[NSWindowDelegate
44 // windowDidExpose:], which is only sent for nonretained windows (those without
45 // a backing store). |notification| is optional and can be set when redirecting
46 // a notification such as NSApplicationDidHideNotification.
47 - (void)onWindowOrderChanged
:(NSNotification
*)notification
;
49 // Notify when -[NSWindow display] is being called on the window.
50 - (void)onWindowWillDisplay
;
52 // Called on the delegate of a modal sheet when its modal session ends.
53 - (void)sheetDidEnd
:(NSWindow
*)sheet
54 returnCode
:(NSInteger
)returnCode
55 contextInfo
:(void*)contextInfo
;
57 // Redeclare methods defined in the protocol NSWindowDelegate which are only
58 // available on OSX 10.7+.
59 - (void)windowDidFailToEnterFullScreen
:(NSWindow
*)window
;
60 - (void)windowDidFailToExitFullScreen
:(NSWindow
*)window
;
62 // Called when the application receives a mouse-down, but before the event
63 // is processed by NSWindows. Returns NO if the event should be processed as-is,
64 // or YES if the event should be reposted to handle window dragging. Events are
65 // reposted at the CGSessionEventTap level because window dragging happens there
66 // before the application receives the event.
67 - (BOOL
)shouldRepostPendingLeftMouseDown
:(NSPoint
)locationInWindow
;
71 #endif // UI_VIEWS_COCOA_VIEWS_NSWINDOW_DELEGATE_H_