summaryrefslogtreecommitdiffstats
path: root/widget/nsWidgetInitData.h
diff options
context:
space:
mode:
Diffstat (limited to 'widget/nsWidgetInitData.h')
-rw-r--r--widget/nsWidgetInitData.h149
1 files changed, 149 insertions, 0 deletions
diff --git a/widget/nsWidgetInitData.h b/widget/nsWidgetInitData.h
new file mode 100644
index 0000000000..acda84ef7e
--- /dev/null
+++ b/widget/nsWidgetInitData.h
@@ -0,0 +1,149 @@
+/* -*- Mode: C++; tab-width: 40; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsWidgetInitData_h__
+#define nsWidgetInitData_h__
+
+/**
+ * Window types
+ *
+ * Don't alter previously encoded enum values - 3rd party apps may look at
+ * these.
+ */
+enum nsWindowType {
+ eWindowType_toplevel, // default top level window
+ eWindowType_dialog, // top level window but usually handled differently
+ // by the OS
+ eWindowType_sheet, // MacOSX sheet (special dialog class)
+ eWindowType_popup, // used for combo boxes, etc
+ eWindowType_child, // child windows (contained inside a window on the
+ // desktop (has no border))
+ eWindowType_invisible, // windows that are invisible or offscreen
+ eWindowType_plugin, // plugin window
+ eWindowType_plugin_ipc_chrome, // chrome side native widget for plugins
+ // (e10s)
+ eWindowType_plugin_ipc_content, // content side puppet widget for plugins
+ // (e10s)
+};
+
+/**
+ * Popup types
+ *
+ * For eWindowType_popup
+ */
+enum nsPopupType {
+ ePopupTypePanel,
+ ePopupTypeMenu,
+ ePopupTypeTooltip,
+ ePopupTypeAny = 0xF000 // used only to pass to
+ // nsXULPopupManager::GetTopPopup
+};
+
+/**
+ * Popup levels specify the window ordering behaviour.
+ */
+enum nsPopupLevel {
+ // the popup appears just above its parent and maintains its position
+ // relative to the parent
+ ePopupLevelParent,
+ // the popup is a floating popup used for tool palettes. A parent window
+ // must be specified, but a platform implementation need not use this.
+ // On Windows, floating is generally equivalent to parent. On Mac, floating
+ // puts the popup at toplevel, but it will hide when the application is
+ // deactivated
+ ePopupLevelFloating,
+ // the popup appears on top of other windows, including those of other
+ // applications
+ ePopupLevelTop
+};
+
+/**
+ * Border styles
+ */
+enum nsBorderStyle {
+ eBorderStyle_none = 0, // no border, titlebar, etc.. opposite of
+ // all
+ eBorderStyle_all = 1 << 0, // all window decorations
+ eBorderStyle_border = 1 << 1, // enables the border on the window. these
+ // are only for decoration and are not
+ // resize handles
+ eBorderStyle_resizeh = 1 << 2, // enables the resize handles for the
+ // window. if this is set, border is
+ // implied to also be set
+ eBorderStyle_title = 1 << 3, // enables the titlebar for the window
+ eBorderStyle_menu = 1 << 4, // enables the window menu button on the
+ // title bar. this being on should force
+ // the title bar to display
+ eBorderStyle_minimize = 1 << 5, // enables the minimize button so the user
+ // can minimize the window. turned off for
+ // tranient windows since they can not be
+ // minimized separate from their parent
+ eBorderStyle_maximize = 1 << 6, // enables the maxmize button so the user
+ // can maximize the window
+ eBorderStyle_close = 1 << 7, // show the close button
+ eBorderStyle_default = -1 // whatever the OS wants... i.e. don't do
+ // anything
+};
+
+/**
+ * Basic struct for widget initialization data.
+ * @see Create member function of nsIWidget
+ */
+
+struct nsWidgetInitData {
+ nsWidgetInitData()
+ : mWindowType(eWindowType_child),
+ mBorderStyle(eBorderStyle_default),
+ mPopupHint(ePopupTypePanel),
+ mPopupLevel(ePopupLevelTop),
+ mScreenId(0),
+ clipChildren(false),
+ clipSiblings(false),
+ mDropShadow(false),
+ mListenForResizes(false),
+ mRTL(false),
+ mNoAutoHide(false),
+ mIsDragPopup(false),
+ mIsAnimationSuppressed(false),
+ mSupportTranslucency(false),
+ mMouseTransparent(false),
+ mHasRemoteContent(false),
+ mAlwaysOnTop(false),
+ mPIPWindow(false),
+ mFissionWindow(false),
+ mResizable(false) {}
+
+ nsWindowType mWindowType;
+ nsBorderStyle mBorderStyle;
+ nsPopupType mPopupHint;
+ nsPopupLevel mPopupLevel;
+ // B2G multi-screen support. Screen ID is for differentiating screens of
+ // windows, and due to the hardware limitation, it is platform-specific for
+ // now, which align with the value of display type defined in HWC.
+ uint32_t mScreenId;
+ // when painting exclude area occupied by child windows and sibling windows
+ bool clipChildren, clipSiblings, mDropShadow;
+ bool mListenForResizes;
+ bool mRTL;
+ bool mNoAutoHide; // true for noautohide panels
+ bool mIsDragPopup; // true for drag feedback panels
+ // true if window creation animation is suppressed, e.g. for session restore
+ bool mIsAnimationSuppressed;
+ // true if the window should support an alpha channel, if available.
+ bool mSupportTranslucency;
+ // true if the window should be transparent to mouse events. Currently this is
+ // only valid for eWindowType_popup widgets
+ bool mMouseTransparent;
+ bool mHasRemoteContent;
+ bool mAlwaysOnTop;
+ // Is PictureInPicture window
+ bool mPIPWindow;
+ // True if fission is enabled for this window
+ bool mFissionWindow;
+ // True if the window is user-resizable.
+ bool mResizable;
+};
+
+#endif // nsWidgetInitData_h__