diff options
Diffstat (limited to 'layout/xul/PopupBoxObject.h')
-rw-r--r-- | layout/xul/PopupBoxObject.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/layout/xul/PopupBoxObject.h b/layout/xul/PopupBoxObject.h new file mode 100644 index 000000000..a660393b5 --- /dev/null +++ b/layout/xul/PopupBoxObject.h @@ -0,0 +1,115 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* 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_dom_PopupBoxObject_h +#define mozilla_dom_PopupBoxObject_h + +#include "mozilla/Attributes.h" +#include "mozilla/ErrorResult.h" +#include "nsCycleCollectionParticipant.h" +#include "nsWrapperCache.h" +#include "mozilla/dom/BoxObject.h" +#include "nsString.h" + +struct JSContext; +class nsPopupSetFrame; + +namespace mozilla { +namespace dom { + +class DOMRect; +class Element; +class Event; + +class PopupBoxObject final : public BoxObject +{ +public: + NS_DECL_ISUPPORTS_INHERITED + + // also in PopupBoxObject.webidl + static const uint32_t ROLLUP_DEFAULT = 0; /* widget/platform default */ + static const uint32_t ROLLUP_CONSUME = 1; /* consume the rollup event */ + static const uint32_t ROLLUP_NO_CONSUME = 2; /* don't consume the rollup event */ + + PopupBoxObject(); + + nsIContent* GetParentObject() const; + virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override; + + void ShowPopup(Element* aAnchorElement, + Element& aPopupElement, + int32_t aXPos, + int32_t aYPos, + const nsAString& aPopupType, + const nsAString& aAnchorAlignment, + const nsAString& aPopupAlignment); + + void HidePopup(bool aCancel); + + bool AutoPosition(); + + void SetAutoPosition(bool aShouldAutoPosition); + + void EnableKeyboardNavigator(bool aEnableKeyboardNavigator); + + void EnableRollup(bool aShouldRollup); + + void SetConsumeRollupEvent(uint32_t aConsume); + + void SizeTo(int32_t aWidth, int32_t aHeight); + + void MoveTo(int32_t aLeft, int32_t aTop); + + void OpenPopup(Element* aAnchorElement, + const nsAString& aPosition, + int32_t aXPos, + int32_t aYPos, + bool aIsContextMenu, bool aAttributesOverride, + Event* aTriggerEvent); + + void OpenPopupAtScreen(int32_t aXPos, + int32_t aYPos, + bool aIsContextMenu, + Event* aTriggerEvent); + + void OpenPopupAtScreenRect(const nsAString& aPosition, + int32_t aXPos, int32_t aYPos, + int32_t aWidth, int32_t aHeight, + bool aIsContextMenu, + bool aAttributesOverride, + Event* aTriggerEvent); + + void GetPopupState(nsString& aState); + + nsINode* GetTriggerNode() const; + + Element* GetAnchorNode() const; + + already_AddRefed<DOMRect> GetOuterScreenRect(); + + void MoveToAnchor(Element* aAnchorElement, + const nsAString& aPosition, + int32_t aXPos, + int32_t aYPos, + bool aAttributesOverride); + + void GetAlignmentPosition(nsString& positionStr); + + int32_t AlignmentOffset(); + + void SetConstraintRect(dom::DOMRectReadOnly& aRect); + +private: + ~PopupBoxObject(); + +protected: + nsPopupSetFrame* GetPopupSetFrame(); +}; + +} // namespace dom +} // namespace mozilla + +#endif // mozilla_dom_PopupBoxObject_h |