123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- /* -*- 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_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)
- eWindowType_sheet, // MacOSX sheet (special dialog class)
- };
- /**
- * 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),
- mUnicode(true),
- mRTL(false),
- mNoAutoHide(false),
- mIsDragPopup(false),
- mIsAnimationSuppressed(false),
- mSupportTranslucency(false),
- mMouseTransparent(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 mUnicode;
- 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;
- };
- #endif // nsWidgetInitData_h__
|