#define DALI_INTERNAL_WINDOWSYSTEM_COMMON_WINDOW_BASE_H
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include <vector>
// INTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/mouse-in-out-event.h>
#include <dali/devel-api/adaptor-framework/window-devel.h>
#include <dali/internal/graphics/gles/egl-implementation.h>
#include <dali/internal/window-system/common/damage-observer.h>
};
// Window
- typedef Signal<void(bool)> IconifySignalType;
- typedef Signal<void(bool)> MaximizeSignalType;
- typedef Signal<void(bool)> FocusSignalType;
- typedef Signal<void()> OutputSignalType;
- typedef Signal<void()> DeleteSignalType;
- typedef Signal<void(const DamageArea&)> DamageSignalType;
- typedef Signal<void(const RotationEvent&)> RotationSignalType;
- typedef Signal<void(WindowEffectState, WindowEffectType)> TransitionEffectEventSignalType;
- typedef Signal<void()> KeyboardRepeatSettingsChangedSignalType;
- typedef Signal<void()> WindowRedrawRequestSignalType;
- typedef Signal<void(Dali::PositionSize&)> UpdatePositionSizeType;
- typedef Signal<void(const std::string&, const std::string&, const Property::Array&)> AuxiliaryMessageSignalType;
+ typedef Signal<void(bool)> IconifySignalType;
+ typedef Signal<void(bool)> MaximizeSignalType;
+ typedef Signal<void(bool)> FocusSignalType;
+ typedef Signal<void()> OutputSignalType;
+ typedef Signal<void()> DeleteSignalType;
+ typedef Signal<void(const DamageArea&)> DamageSignalType;
+ typedef Signal<void(const RotationEvent&)> RotationSignalType;
+ typedef Signal<void(WindowEffectState, WindowEffectType)> TransitionEffectEventSignalType;
+ typedef Signal<void()> KeyboardRepeatSettingsChangedSignalType;
+ typedef Signal<void()> WindowRedrawRequestSignalType;
+ typedef Signal<void(Dali::PositionSize&)> UpdatePositionSizeType;
+ typedef Signal<void(const std::string&, const std::string&, const Property::Array&)> AuxiliaryMessageSignalType;
+ typedef Signal<void(const Dali::DevelWindow::MouseInOutEvent&)> MouseInOutEventSignalType;
+ typedef Signal<void(const Dali::DevelWindow::MouseRelativeEvent&)> MouseRelativeEventSignalType;
+ typedef Signal<void(Dali::Int32Pair&)> MoveCompletedSignalType;
+ typedef Signal<void(Dali::Uint16Pair&)> ResizeCompletedSignalType;
+ typedef Signal<void(WindowInsetsPartType, WindowInsetsPartState, const Extents&)> InsetsChangedSignalType;
+ typedef Signal<void(const Dali::Int32Pair&, bool, bool)> PointerConstraintsSignalType;
// Input events
typedef Signal<void(Integration::Point&, uint32_t)> TouchEventSignalType;
typedef Signal<void(void*)> SelectionSignalType;
// Accessibility
- typedef Signal<void(StyleChange::Type)> StyleSignalType;
+ typedef Signal<void(StyleChange::Type)> StyleSignalType;
/**
* @brief Default constructor
virtual void MoveResize(Dali::PositionSize positionSize) = 0;
/**
+ * @copydoc Dali::Window::SetLayout()
+ */
+ virtual void SetLayout(unsigned int numCols, unsigned int numRows, unsigned int column, unsigned int row, unsigned int colSpan, unsigned int rowSpan) = 0;
+
+ /**
* @copydoc Dali::Window::SetClass()
*/
virtual void SetClass(const std::string& name, const std::string& className) = 0;
*/
virtual void ExcludeInputRegion(const Rect<int>& inputRegion) = 0;
+ /**
+ * @brief Sets the pointer constraints lock.
+ * @return Returns true if PointerConstraintsLock succeeds.
+ */
+ virtual bool PointerConstraintsLock() = 0;
+
+ /**
+ * @brief Sets the pointer constraints unlock.
+ * @return Returns true if PointerConstraintsUnlock succeeds.
+ */
+ virtual bool PointerConstraintsUnlock() = 0;
+
+ /**
+ * @brief Sets the locked pointer region
+ *
+ * @param[in] x The x position.
+ * @param[in] y The y position.
+ * @param[in] width The width.
+ * @param[in] height The height
+ */
+ virtual void LockedPointerRegionSet(int32_t x, int32_t y, int32_t width, int32_t height) = 0;
+
+ /**
+ * @brief Sets the locked pointer cursor position hintset
+ *
+ * @param[in] x The x position.
+ * @param[in] y The y position.
+ */
+ virtual void LockedPointerCursorPositionHintSet(int32_t x, int32_t y) = 0;
+
+ /**
+ * @brief Sets the pointer warp. The pointer moves to the set coordinates.
+ *
+ * @param[in] x The x position.
+ * @param[in] y The y position.
+ * @return Returns true if PointerWarp succeeds.
+ */
+ virtual bool PointerWarp(int32_t x, int32_t y) = 0;
+
+ /**
+ * @brief Sets visibility on/off of cursor
+ *
+ * @param[in] visible The visibility of cursor
+ */
+ virtual void CursorVisibleSet(bool visible) = 0;
+
+ /**
+ * @brief Requests grab key events according to the requested device subtype
+ *
+ * @param[in] deviceSubclass The deviceSubclass type.
+ * @return Returns true if KeyboardGrab succeeds.
+ */
+ virtual bool KeyboardGrab(Device::Subclass::Type deviceSubclass) = 0;
+
+ /**
+ * @brief Requests ungrab key events
+ *
+ * @param[in] window The window instance.
+ * @return Returns true if KeyboardUnGrab succeeds.
+ */
+ virtual bool KeyboardUnGrab() = 0;
+
// Signals
/**
WindowRedrawRequestSignalType& WindowRedrawRequestSignal();
/**
- * @brief This signal is emitted when the window is resized or moved by display server.
+ * @brief This signal is emitted when the window's geometry data is changed by display server or client.
+ * It is based on configure noification event.
*/
UpdatePositionSizeType& UpdatePositionSizeSignal();
*/
AuxiliaryMessageSignalType& AuxiliaryMessageSignal();
+ /**
+ * @brief This signal is emitted when a mouse in or out event is recevied.
+ */
+ MouseInOutEventSignalType& MouseInOutEventSignal();
+
+ /**
+ * @brief This signal is emitted when a mouse relative event is recevied.
+ */
+ MouseRelativeEventSignalType& MouseRelativeEventSignal();
+
+ /**
+ * @brief This signal is emitted when window has been moved by then display server.
+ * To be moved the window by display server, RequestMoveToServer() should be called.
+ * After the moving job is finished, this function will be called.
+ */
+ MoveCompletedSignalType& MoveCompletedSignal();
+
+ /**
+ * @brief This signal is emitted when window has been resized by then display server.
+ * To be resized the window by display server, RequestResizeToServer() should be called.
+ * After the resizing job is finished, this function will be called.
+ */
+ ResizeCompletedSignalType& ResizeCompletedSignal();
+
+ /**
+ * @brief This signal is emitted when window insets are changed by appearing or disappearing indicator, virtual keyboard, or clipboard.
+ */
+ InsetsChangedSignalType& InsetsChangedSignal();
+
+ /**
+ * @brief This signal is emitted when window pointer is locked/unlocked
+ */
+ PointerConstraintsSignalType& PointerConstraintsSignal();
+
protected:
// Undefined
WindowBase(const WindowBase&) = delete;
WindowRedrawRequestSignalType mWindowRedrawRequestSignal;
UpdatePositionSizeType mUpdatePositionSizeSignal;
AuxiliaryMessageSignalType mAuxiliaryMessageSignal;
+ MouseInOutEventSignalType mMouseInOutEventSignal;
+ MouseRelativeEventSignalType mMouseRelativeEventSignal;
+ MoveCompletedSignalType mMoveCompletedSignal;
+ ResizeCompletedSignalType mResizeCompletedSignal;
+ InsetsChangedSignalType mInsetsChangedSignal;
+ PointerConstraintsSignalType mPointerConstraintsSignal;
};
} // namespace Adaptor