mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 05:41:12 +00:00
814c293c0a
This is done differently depending on whether the Private Browsing window is the initial one, or if it's a new window from a running application. In the former case, we're still not setting it up early enough -- the window will initially show up in one icon, and then switch to the other one after we've adjusted the AUMID. Regardless, the fact that we're doing it for every new window appears to mean that other places that require it (such as GeckoChildProcessHost.cpp) will Do The Right Thing (because they'll pull the cached version that `GetAppUserModelID` finds). This behind a pref for now both because of the issue noted above, as well as the fact that we're waiting on finalized branding for this. Differential Revision: https://phabricator.services.mozilla.com/D138194
145 lines
5.3 KiB
C
145 lines
5.3 KiB
C
/* -*- 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
|
|
};
|
|
|
|
/**
|
|
* 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),
|
|
mRTL(false),
|
|
mNoAutoHide(false),
|
|
mIsDragPopup(false),
|
|
mIsAnimationSuppressed(false),
|
|
mSupportTranslucency(false),
|
|
mMouseTransparent(false),
|
|
mHasRemoteContent(false),
|
|
mAlwaysOnTop(false),
|
|
mPIPWindow(false),
|
|
mFissionWindow(false),
|
|
mResizable(false),
|
|
mIsPrivate(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 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;
|
|
bool mIsPrivate;
|
|
};
|
|
|
|
#endif // nsWidgetInitData_h__
|