fune/widget/InitData.h
Emilio Cobos Álvarez 6bfd255000 Bug 1884631 - Remove macOS native sheet support. r=mac-reviewers,aleca,kaie,bradwerth
Firefox never uses this. TB could use the same approach Firefox uses,
but for now on macOS the sheets become regular modal dialogs, which is
the same as on Windows and Linux.

See bug 1755330 and bug 1737489 for more context.

Differential Revision: https://phabricator.services.mozilla.com/D204209
2024-03-18 10:06:26 +00:00

107 lines
4 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 mozilla_widget_InitData_h__
#define mozilla_widget_InitData_h__
#include <cstdint>
#include "mozilla/TypedEnumBits.h"
#include "X11UndefineNone.h"
namespace mozilla::widget {
// Window types
enum class WindowType : uint8_t {
TopLevel, // default top level window
Dialog, // top level window but usually handled differently
// by the OS
Popup, // used for combo boxes, etc
Child, // child windows (contained inside a window on the
// desktop (has no border))
Invisible, // windows that are invisible or offscreen
};
// Popup types for WindowType::Popup
enum class PopupType : uint8_t {
Panel,
Menu,
Tooltip,
Any, // used only to pass to nsXULPopupManager::GetTopPopup
};
// Popup levels specify the window ordering behaviour.
enum class PopupLevel : uint8_t {
// The popup appears just above its parent and maintains its position
// relative to the parent.
Parent,
// The popup appears on top of other windows, including those of other
// applications.
Top,
};
// Border styles
enum class BorderStyle : int16_t {
None = 0, // no border, titlebar, etc.. opposite of all
All = 1 << 0, // all window decorations
Border = 1 << 1, // enables the border on the window. these
// are only for decoration and are not
// resize handles
ResizeH = 1 << 2, // enables the resize handles for the
// window. if this is set, border is
// implied to also be set
Title = 1 << 3, // enables the titlebar for the window
Menu = 1 << 4, // enables the window menu button on the
// title bar. this being on should force
// the title bar to display
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
Maximize = 1 << 6, // enables the maxmize button so the user
// can maximize the window
Close = 1 << 7, // show the close button
Default = -1 // whatever the OS wants... i.e. don't do anything
};
MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(BorderStyle)
enum class TransparencyMode : uint8_t {
Opaque = 0, // Fully opaque
Transparent, // Parts of the window may be transparent
// If you add to the end here, you must update the serialization code in
// WidgetMessageUtils.h
};
// Basic struct for widget initialization data.
// @see Create member function of nsIWidget
struct InitData {
WindowType mWindowType = WindowType::Child;
BorderStyle mBorderStyle = BorderStyle::Default;
PopupType mPopupHint = PopupType::Panel;
PopupLevel mPopupLevel = PopupLevel::Top;
TransparencyMode mTransparencyMode = TransparencyMode::Opaque;
// when painting exclude area occupied by child windows and sibling windows
bool mClipChildren = false;
bool mClipSiblings = false;
bool mRTL = false;
bool mNoAutoHide = false; // true for noautohide panels
bool mIsDragPopup = false; // true for drag feedback panels
// true if window creation animation is suppressed, e.g. for session restore
bool mIsAnimationSuppressed = false;
// true if the window should support an alpha channel, if available.
bool mHasRemoteContent = false;
bool mAlwaysOnTop = false;
// Whether we're a PictureInPicture window
bool mPIPWindow = false;
// True if the window is user-resizable.
bool mResizable = false;
bool mIsPrivate = false;
// True if the window is an alert / notification.
bool mIsAlert = false;
};
} // namespace mozilla::widget
#endif // mozilla_widget_InitData