/work/obj-fuzz/dist/include/nsWidgetInitData.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* -*- Mode: C++; tab-width: 40; 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 nsWidgetInitData_h__ |
7 | | #define nsWidgetInitData_h__ |
8 | | |
9 | | /** |
10 | | * Window types |
11 | | * |
12 | | * Don't alter previously encoded enum values - 3rd party apps may look at |
13 | | * these. |
14 | | */ |
15 | | enum nsWindowType { |
16 | | eWindowType_toplevel, // default top level window |
17 | | eWindowType_dialog, // top level window but usually handled differently |
18 | | // by the OS |
19 | | eWindowType_sheet, // MacOSX sheet (special dialog class) |
20 | | eWindowType_popup, // used for combo boxes, etc |
21 | | eWindowType_child, // child windows (contained inside a window on the |
22 | | // desktop (has no border)) |
23 | | eWindowType_invisible, // windows that are invisible or offscreen |
24 | | eWindowType_plugin, // plugin window |
25 | | eWindowType_plugin_ipc_chrome, // chrome side native widget for plugins (e10s) |
26 | | eWindowType_plugin_ipc_content, // content side puppet widget for plugins (e10s) |
27 | | }; |
28 | | |
29 | | /** |
30 | | * Popup types |
31 | | * |
32 | | * For eWindowType_popup |
33 | | */ |
34 | | enum nsPopupType { |
35 | | ePopupTypePanel, |
36 | | ePopupTypeMenu, |
37 | | ePopupTypeTooltip, |
38 | | ePopupTypeAny = 0xF000 // used only to pass to |
39 | | // nsXULPopupManager::GetTopPopup |
40 | | }; |
41 | | |
42 | | /** |
43 | | * Popup levels specify the window ordering behaviour. |
44 | | */ |
45 | | enum nsPopupLevel { |
46 | | // the popup appears just above its parent and maintains its position |
47 | | // relative to the parent |
48 | | ePopupLevelParent, |
49 | | // the popup is a floating popup used for tool palettes. A parent window |
50 | | // must be specified, but a platform implementation need not use this. |
51 | | // On Windows, floating is generally equivalent to parent. On Mac, floating |
52 | | // puts the popup at toplevel, but it will hide when the application is deactivated |
53 | | ePopupLevelFloating, |
54 | | // the popup appears on top of other windows, including those of other applications |
55 | | ePopupLevelTop |
56 | | }; |
57 | | |
58 | | /** |
59 | | * Border styles |
60 | | */ |
61 | | enum nsBorderStyle { |
62 | | eBorderStyle_none = 0, // no border, titlebar, etc.. opposite of |
63 | | // all |
64 | | eBorderStyle_all = 1 << 0, // all window decorations |
65 | | eBorderStyle_border = 1 << 1, // enables the border on the window. these |
66 | | // are only for decoration and are not |
67 | | // resize handles |
68 | | eBorderStyle_resizeh = 1 << 2, // enables the resize handles for the |
69 | | // window. if this is set, border is |
70 | | // implied to also be set |
71 | | eBorderStyle_title = 1 << 3, // enables the titlebar for the window |
72 | | eBorderStyle_menu = 1 << 4, // enables the window menu button on the |
73 | | // title bar. this being on should force |
74 | | // the title bar to display |
75 | | eBorderStyle_minimize = 1 << 5, // enables the minimize button so the user |
76 | | // can minimize the window. turned off for |
77 | | // tranient windows since they can not be |
78 | | // minimized separate from their parent |
79 | | eBorderStyle_maximize = 1 << 6, // enables the maxmize button so the user |
80 | | // can maximize the window |
81 | | eBorderStyle_close = 1 << 7, // show the close button |
82 | | eBorderStyle_default = -1 // whatever the OS wants... i.e. don't do |
83 | | // anything |
84 | | }; |
85 | | |
86 | | /** |
87 | | * Basic struct for widget initialization data. |
88 | | * @see Create member function of nsIWidget |
89 | | */ |
90 | | |
91 | | struct nsWidgetInitData { |
92 | | nsWidgetInitData() : |
93 | | mWindowType(eWindowType_child), |
94 | | mBorderStyle(eBorderStyle_default), |
95 | | mPopupHint(ePopupTypePanel), |
96 | | mPopupLevel(ePopupLevelTop), |
97 | | mScreenId(0), |
98 | | clipChildren(false), |
99 | | clipSiblings(false), |
100 | | mDropShadow(false), |
101 | | mListenForResizes(false), |
102 | | mUnicode(true), |
103 | | mRTL(false), |
104 | | mNoAutoHide(false), |
105 | | mIsDragPopup(false), |
106 | | mIsAnimationSuppressed(false), |
107 | | mSupportTranslucency(false), |
108 | | mMouseTransparent(false), |
109 | | mHasRemoteContent(false) |
110 | 0 | { |
111 | 0 | } |
112 | | |
113 | | nsWindowType mWindowType; |
114 | | nsBorderStyle mBorderStyle; |
115 | | nsPopupType mPopupHint; |
116 | | nsPopupLevel mPopupLevel; |
117 | | // B2G multi-screen support. Screen ID is for differentiating screens of |
118 | | // windows, and due to the hardware limitation, it is platform-specific for |
119 | | // now, which align with the value of display type defined in HWC. |
120 | | uint32_t mScreenId; |
121 | | // when painting exclude area occupied by child windows and sibling windows |
122 | | bool clipChildren, clipSiblings, mDropShadow; |
123 | | bool mListenForResizes; |
124 | | bool mUnicode; |
125 | | bool mRTL; |
126 | | bool mNoAutoHide; // true for noautohide panels |
127 | | bool mIsDragPopup; // true for drag feedback panels |
128 | | // true if window creation animation is suppressed, e.g. for session restore |
129 | | bool mIsAnimationSuppressed; |
130 | | // true if the window should support an alpha channel, if available. |
131 | | bool mSupportTranslucency; |
132 | | // true if the window should be transparent to mouse events. Currently this is |
133 | | // only valid for eWindowType_popup widgets |
134 | | bool mMouseTransparent; |
135 | | bool mHasRemoteContent; |
136 | | }; |
137 | | |
138 | | #endif // nsWidgetInitData_h__ |