author Botond Ballo <botond@mozilla.com>
Thu, 25 Apr 2019 14:33:17 +0000
changeset 530341 4f70b98aa8705b6906b6bd2a3de66d374addb177
parent 511100 2d7f5838e68fbac83742ee5c52d3c7ebf2a7315b
child 556715 7eb6fa2d58d0cf3bee4bc10673f9c6500f35a30b
permissions -rw-r--r--
Bug 1546139 - Restore the call to AdjustFixedOrStickyLayer() for layers fixed to the RCD-RSF. r=kats This call served two purposes: (1) scroll the fixed layer by the eVisual transform, and (2) adjust it by the fixed margins. The first purpose is now served by applying the eVisual transform to the async zoom container, but we still need the call for the second purpose. Differential Revision: https://phabricator.services.mozilla.com/D28735

/* -*- 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 {
  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
  // 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
  // the popup appears on top of other windows, including those of other
  // applications

 * 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 {
      : mWindowType(eWindowType_child),
        mAlwaysOnTop(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;
  bool mHasRemoteContent;
  bool mAlwaysOnTop;

#endif  // nsWidgetInitData_h__