|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 #ifndef nsWindowMap_h_ |
|
7 #define nsWindowMap_h_ |
|
8 |
|
9 #import <Cocoa/Cocoa.h> |
|
10 |
|
11 // WindowDataMap |
|
12 // |
|
13 // In both mozilla and embedding apps, we need to have a place to put |
|
14 // per-top-level-window logic and data, to handle such things as IME |
|
15 // commit when the window gains/loses focus. We can't use a window |
|
16 // delegate, because an embeddor probably already has one. Nor can we |
|
17 // subclass NSWindow, again because we can't impose that burden on the |
|
18 // embeddor. |
|
19 // |
|
20 // So we have a global map of NSWindow -> TopLevelWindowData, and set |
|
21 // up TopLevelWindowData as a notification observer etc. |
|
22 |
|
23 @interface WindowDataMap : NSObject |
|
24 { |
|
25 @private |
|
26 NSMutableDictionary* mWindowMap; // dict of TopLevelWindowData keyed by address of NSWindow |
|
27 } |
|
28 |
|
29 + (WindowDataMap*)sharedWindowDataMap; |
|
30 |
|
31 - (void)ensureDataForWindow:(NSWindow*)inWindow; |
|
32 - (id)dataForWindow:(NSWindow*)inWindow; |
|
33 |
|
34 // set data for a given window. inData is retained (and any previously set data |
|
35 // is released). |
|
36 - (void)setData:(id)inData forWindow:(NSWindow*)inWindow; |
|
37 |
|
38 // remove the data for the given window. the data is released. |
|
39 - (void)removeDataForWindow:(NSWindow*)inWindow; |
|
40 |
|
41 @end |
|
42 |
|
43 @class ChildView; |
|
44 |
|
45 // TopLevelWindowData |
|
46 // |
|
47 // Class to hold per-window data, and handle window state changes. |
|
48 |
|
49 @interface TopLevelWindowData : NSObject |
|
50 { |
|
51 @private |
|
52 } |
|
53 |
|
54 - (id)initWithWindow:(NSWindow*)inWindow; |
|
55 + (void)activateInWindow:(NSWindow*)aWindow; |
|
56 + (void)deactivateInWindow:(NSWindow*)aWindow; |
|
57 + (void)activateInWindowViews:(NSWindow*)aWindow; |
|
58 + (void)deactivateInWindowViews:(NSWindow*)aWindow; |
|
59 |
|
60 @end |
|
61 |
|
62 #endif // nsWindowMap_h_ |