summaryrefslogtreecommitdiffstats
path: root/widget/nsIBaseWindow.idl
diff options
context:
space:
mode:
Diffstat (limited to 'widget/nsIBaseWindow.idl')
-rw-r--r--widget/nsIBaseWindow.idl230
1 files changed, 230 insertions, 0 deletions
diff --git a/widget/nsIBaseWindow.idl b/widget/nsIBaseWindow.idl
new file mode 100644
index 000000000..7da3fe1dc
--- /dev/null
+++ b/widget/nsIBaseWindow.idl
@@ -0,0 +1,230 @@
+/* -*- Mode: C++; tab-width: 2; 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/. */
+
+#include "nsISupports.idl"
+#include "nsrootidl.idl"
+/*#include "nsIWidget.idl" Boy this would be nice.*/
+
+[ptr] native nsIWidget(nsIWidget);
+%{ C++
+class nsIWidget;
+%}
+
+typedef voidPtr nativeWindow;
+
+/**
+ * The nsIBaseWindow describes a generic window and basic operations that
+ * can be performed on it. This is not to be a complete windowing interface
+ * but rather a common set that nearly all windowed objects support.
+ */
+
+[scriptable, uuid(ca635529-a977-4552-9b8a-66187e54d882)]
+interface nsIBaseWindow : nsISupports
+{
+ /*
+ Allows a client to initialize an object implementing this interface with
+ the usually required window setup information.
+ It is possible to pass null for both parentNativeWindow and parentWidget,
+ but only docshells support this.
+
+ @param parentNativeWindow - This allows a system to pass in the parenting
+ window as a native reference rather than relying on the calling
+ application to have created the parent window as an nsIWidget. This
+ value will be ignored (should be nullptr) if an nsIWidget is passed in to
+ the parentWidget parameter.
+
+ @param parentWidget - This allows a system to pass in the parenting widget.
+ This allows some objects to optimize themselves and rely on the view
+ system for event flow rather than creating numerous native windows. If
+ one of these is not available, nullptr should be passed.
+
+ @param x - This is the x co-ordinate relative to the parent to place the
+ window.
+
+ @param y - This is the y co-ordinate relative to the parent to place the
+ window.
+
+ @param cx - This is the width for the window to be.
+
+ @param cy - This is the height for the window to be.
+
+ @return NS_OK - Window Init succeeded without a problem.
+ NS_ERROR_UNEXPECTED - Call was unexpected at this time. Most likely
+ due to you calling it after create() has been called.
+ NS_ERROR_INVALID_ARG - controls that require either a parentNativeWindow
+ or a parentWidget may return invalid arg when they do not
+ receive what they are needing.
+ */
+ [noscript]void initWindow(in nativeWindow parentNativeWindow,
+ in nsIWidget parentWidget, in long x, in long y, in long cx, in long cy);
+
+ /*
+ Tells the window that intialization and setup is complete. When this is
+ called the window can actually create itself based on the setup
+ information handed to it.
+
+ @return NS_OK - Creation was successfull.
+ NS_ERROR_UNEXPECTED - This call was unexpected at this time.
+ Perhaps create() had already been called or not all
+ required initialization had been done.
+ */
+ void create();
+
+ /*
+ Tell the window that it should destroy itself. This call should not be
+ necessary as it will happen implictly when final release occurs on the
+ object. If for some reaons you want the window destroyed prior to release
+ due to cycle or ordering issues, then this call provides that ability.
+
+ @return NS_OK - Everything destroyed properly.
+ NS_ERROR_UNEXPECTED - This call was unexpected at this time.
+ Perhaps create() has not been called yet.
+ */
+ void destroy();
+
+ /*
+ Sets the current x and y coordinates of the control. This is relative to
+ the parent window.
+ */
+ void setPosition(in long x, in long y);
+
+ /*
+ Ditto, with arguments in global desktop pixels rather than (potentially
+ ambiguous) device pixels
+ */
+ void setPositionDesktopPix(in long x, in long y);
+
+ /*
+ Gets the current x and y coordinates of the control. This is relatie to the
+ parent window.
+ */
+ void getPosition(out long x, out long y);
+
+ /*
+ Sets the width and height of the control.
+ */
+ void setSize(in long cx, in long cy, in boolean fRepaint);
+
+ /*
+ Gets the width and height of the control.
+ */
+ void getSize(out long cx, out long cy);
+
+ /**
+ * The 'flags' argument to setPositionAndSize is a set of these bits.
+ */
+ const unsigned long eRepaint = 1;
+ const unsigned long eDelayResize = 2;
+
+ /*
+ Convenience function combining the SetPosition and SetSize into one call.
+ Also is more efficient than calling both.
+ */
+ void setPositionAndSize(in long x, in long y, in long cx, in long cy,
+ in unsigned long flags);
+
+ /*
+ Convenience function combining the GetPosition and GetSize into one call.
+ Also is more efficient than calling both.
+ */
+ void getPositionAndSize(out long x, out long y, out long cx, out long cy);
+
+ /**
+ * Tell the window to repaint itself
+ * @param aForce - if true, repaint immediately
+ * if false, the window may defer repainting as it sees fit.
+ */
+ void repaint(in boolean force);
+
+ /*
+ This is the parenting widget for the control. This may be null if the
+ native window was handed in for the parent during initialization.
+ If this is returned, it should refer to the same object as
+ parentNativeWindow.
+
+ Setting this after Create() has been called may not be supported by some
+ implementations.
+
+ On controls that don't support widgets, setting this will return a
+ NS_ERROR_NOT_IMPLEMENTED error.
+ */
+ [noscript] attribute nsIWidget parentWidget;
+
+ /*
+ This is the native window parent of the control.
+
+ Setting this after Create() has been called may not be supported by some
+ implementations.
+
+ On controls that don't support setting nativeWindow parents, setting this
+ will return a NS_ERROR_NOT_IMPLEMENTED error.
+ */
+ attribute nativeWindow parentNativeWindow;
+
+ /*
+ This is the handle (HWND, GdkWindow*, ...) to the native window of the
+ control, exposed as a DOMString.
+
+ @return DOMString in hex format with "0x" prepended, or empty string if
+ mainWidget undefined
+
+ @throws NS_ERROR_NOT_IMPLEMENTED for non-XULWindows
+ */
+ readonly attribute DOMString nativeHandle;
+
+ /*
+ Attribute controls the visibility of the object behind this interface.
+ Setting this attribute to false will hide the control. Setting it to
+ true will show it.
+ */
+ attribute boolean visibility;
+
+ /*
+ a disabled window should accept no user interaction; it's a dead window,
+ like the parent of a modal window.
+ */
+ attribute boolean enabled;
+
+ /*
+ Allows you to find out what the widget is of a given object. Depending
+ on the object, this may return the parent widget in which this object
+ lives if it has not had to create its own widget.
+ */
+ [noscript] readonly attribute nsIWidget mainWidget;
+
+ /*
+ The number of device pixels per CSS pixel used on this window's current
+ screen at the default zoom level.
+ This is the value returned by GetDefaultScale() of the underlying widget.
+ Note that this may change if the window is moved between screens with
+ differing resolutions.
+ */
+ readonly attribute double unscaledDevicePixelsPerCSSPixel;
+
+ /*
+ The number of device pixels per display pixel on this window's current
+ screen. (The meaning of "display pixel" varies across OS environments;
+ it is the pixel units used by the desktop environment to manage screen
+ real estate and window positioning, which may correspond to (per-screen)
+ device pixels, or may be a virtual coordinate space that covers a multi-
+ monitor, mixed-dpi desktop space.)
+ This is the value returned by DevicePixelsPerDesktopPixel() of the underlying
+ widget.
+ Note that this may change if the window is moved between screens with
+ differing resolutions.
+ */
+ readonly attribute double devicePixelsPerDesktopPixel;
+
+ /**
+ * Give the window focus.
+ */
+ void setFocus();
+
+ /*
+ Title of the window.
+ */
+ attribute wstring title;
+};