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/. */
6 #ifndef nsWidgetInitData_h__
7 #define nsWidgetInitData_h__
12 * Don't alter previously encoded enum values - 3rd party apps may look at
16 eWindowType_toplevel
, // default top level window
17 eWindowType_dialog
, // top level window but usually handled differently
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)
32 * For eWindowType_popup
38 ePopupTypeAny
= 0xF000 // used only to pass to
39 // nsXULPopupManager::GetTopPopup
43 * Popup levels specify the window ordering behaviour.
46 // the popup appears just above its parent and maintains its position
47 // relative to the parent
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
54 // the popup appears on top of other windows, including those of other applications
62 eBorderStyle_none
= 0, // no border, titlebar, etc.. opposite of
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
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
87 * Basic struct for widget initialization data.
88 * @see Create member function of nsIWidget
91 struct nsWidgetInitData
{
93 mWindowType(eWindowType_child
),
94 mBorderStyle(eBorderStyle_default
),
95 mPopupHint(ePopupTypePanel
),
96 mPopupLevel(ePopupLevelTop
),
101 mListenForResizes(false),
106 mIsAnimationSuppressed(false),
107 mSupportTranslucency(false),
108 mMouseTransparent(false),
109 mHasRemoteContent(false)
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.
121 // when painting exclude area occupied by child windows and sibling windows
122 bool clipChildren
, clipSiblings
, mDropShadow
;
123 bool mListenForResizes
;
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
;
138 #endif // nsWidgetInitData_h__