summaryrefslogtreecommitdiffstats
path: root/layout/xul/PopupBoxObject.h
diff options
context:
space:
mode:
Diffstat (limited to 'layout/xul/PopupBoxObject.h')
-rw-r--r--layout/xul/PopupBoxObject.h115
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