#define DALI_INTERNAL_WINDOWSYSTEM_COMMON_WINDOW_IMPL_H
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
// EXTERNAL INCLUDES
#include <dali/public-api/actors/layer.h>
#include <dali/public-api/adaptor-framework/window-enumerations.h>
+#include <dali/public-api/events/touch-event.h>
#include <dali/public-api/object/base-object.h>
#include <dali/public-api/object/property-array.h>
#include <dali/public-api/object/ref-object.h>
typedef Dali::DevelWindow::TransitionEffectEventSignalType TransitionEffectEventSignalType;
typedef Dali::DevelWindow::KeyboardRepeatSettingsChangedSignalType KeyboardRepeatSettingsChangedSignalType;
typedef Dali::DevelWindow::AuxiliaryMessageSignalType AuxiliaryMessageSignalType;
+ typedef Dali::DevelWindow::AccessibilityHighlightSignalType AccessibilityHighlightSignalType;
+ typedef Dali::DevelWindow::MovedSignalType MovedSignalType;
+ typedef Dali::DevelWindow::OrientationChangedSignalType OrientationChangedSignalType;
typedef Signal<void()> SignalType;
/**
* @param[in] isTransparent Whether window is transparent
* @return A newly allocated Window
*/
- static Window* New(Any surface, const PositionSize& positionSize, const std::string& name, const std::string& className, Dali::WindowType type, bool isTransparent = false);
+ static Window* New(Any surface, const PositionSize& positionSize, const std::string& name, const std::string& className, Dali::WindowType type, bool isTransparent = false);
/**
* @copydoc Dali::Window::SetClass()
bool IsMaximized() const;
/**
+ * @copydoc Dali::DevelWindow::SetMaximumSize()
+ */
+ void SetMaximumSize(Dali::Window::WindowSize size);
+
+ /**
* @copydoc Dali::DevelWindow::Minimize()
*/
void Minimize(bool minimize);
bool IsMinimized() const;
/**
+ * @copydoc Dali::DevelWindow::SetMimimumSize()
+ */
+ void SetMimimumSize(Dali::Window::WindowSize size);
+
+ /**
* @copydoc Dali::Window::GetLayerCount()
*/
uint32_t GetLayerCount() const;
Dali::RenderTaskList GetRenderTaskList() const;
/**
+ * @brief Get window resource ID assigned by window manager
+ * @return The resource ID of the window
+ */
+ std::string GetNativeResourceId() const;
+
+ /**
* @copydoc Dali::Window::AddAvailableOrientation()
*/
void AddAvailableOrientation(WindowOrientation orientation);
PositionSize GetPositionSize() const;
/**
+ * @copydoc Dali::Window::SetLayout()
+ */
+ void SetLayout(unsigned int numCols, unsigned int numRows, unsigned int column, unsigned int row, unsigned int colSpan, unsigned int rowSpan);
+
+ /**
* @copydoc Dali::Window::GetRootLayer()
*/
Dali::Layer GetRootLayer() const;
*/
void SetPositionSizeWithOrientation(PositionSize positionSize, WindowOrientation orientation);
+ /**
+ * @brief Emit the accessibility highlight signal.
+ * The highlight indicates that it is an object to interact with the user regardless of focus.
+ * After setting the highlight on the object, you can do things that the object can do, such as
+ * giving or losing focus.
+ *
+ * @param[in] highlight If window needs to grab or clear highlight.
+ */
+ void EmitAccessibilityHighlightSignal(bool highlight);
+
public: // Dali::Internal::Adaptor::SceneHolder
/**
* @copydoc Dali::Internal::Adaptor::SceneHolder::GetNativeHandle
*/
void SendRotationCompletedAcknowledgement();
+ /**
+ * @copydoc Dali::DevelWindow::IsWindowRotating()
+ */
+ bool IsWindowRotating() const;
+
+ /**
+ * @copydoc Dali::DevelWindow::GetLastKeyEvent()
+ */
+ const Dali::KeyEvent& GetLastKeyEvent() const;
+
+ /**
+ * @copydoc Dali::DevelWindow::GetLastTouchEvent()
+ */
+ const Dali::TouchEvent& GetLastTouchEvent() const;
+
private:
/**
* @brief Enumeration for orietation mode.
void OnAccessibilityDisabled();
/**
+ * Called when the window rotation is finished.
+ *
+ * This signal is emmit when window rotation is finisehd and WindowRotationCompleted() is called.
+ */
+ void OnRotationFinished();
+
+ /**
* @brief Set available orientation to window base.
*/
void SetAvailableAnlges(const std::vector<int>& angles);
*/
bool IsOrientationAvailable(WindowOrientation orientation) const;
- /**
- * @brief Return the rect value to recalulate with the default system coordinates.
- *
- * Some native window APIs work the geometry value based on the default system coordinates.
- * IncludeInputRegion() and ExcludeInputRegion() are one of them.
- * When the window is rotated, current window's geometry already were set with the rotated angle.
- * If IncludeInputRegion() or ExcludeInputRegion() are called with rotated angle by application,
- * the rect's area should be re-calcuated on the default system coordinates.
- *
- * @param[in] rect the window's current position and size with current window rotation angle.
- * @return the re-calculated rect on the default system coordinates.
- */
- Rect<int> RecalculateRect(const Rect<int>& rect);
-
private: // Dali::Internal::Adaptor::SceneHolder
/**
* @copydoc Dali::Internal::Adaptor::SceneHolder::OnAdaptorSet
void OnResume() override;
/**
- * @copydoc Dali::Internal::Adaptor::SceneHolder::RecalculateTouchPosition
+ * @copydoc Dali::Internal::Adaptor::SceneHolder::RecalculatePosition
*/
- void RecalculateTouchPosition(Integration::Point& point) override;
+ Vector2 RecalculatePosition(const Vector2& position) override;
private: // Dali::Internal::Adaptor::EventHandler::Observer
/**
return mAuxiliaryMessageSignal;
}
+ /**
+ * @copydoc Dali::DevelWindow::AccessibilityHighlightSignal()
+ */
+ AccessibilityHighlightSignalType& AccessibilityHighlightSignal()
+ {
+ return mAccessibilityHighlightSignal;
+ }
+
+ /**
+ * @copydoc Dali::DevelWindow::MovedSignal()
+ */
+ MovedSignalType& MovedSignal()
+ {
+ return mMovedSignal;
+ }
+
+ /**
+ * @copydoc Dali::DevelWindow::OrientationChangedSignal()
+ */
+ OrientationChangedSignalType& OrientationChangedSignal()
+ {
+ return mOrientationChangedSignal;
+ }
+
private:
WindowRenderSurface* mWindowSurface; ///< The window rendering surface
WindowBase* mWindowBase;
std::string mName;
std::string mClassName;
- bool mIsTransparent : 1;
- bool mIsFocusAcceptable : 1;
- bool mIconified : 1;
- bool mOpaqueState : 1;
- bool mWindowRotationAcknowledgement : 1;
- bool mFocused : 1;
Dali::Window mParentWindow;
OrientationPtr mOrientation;
std::vector<int> mAvailableAngles;
int mPreferredAngle;
- int mRotationAngle; ///< The angle of the rotation
- int mWindowWidth; ///< The width of the window
- int mWindowHeight; ///< The height of the window
-
- EventHandlerPtr mEventHandler; ///< The window events handler
-
- OrientationMode mOrientationMode; ///< The physical screen mode is portrait or landscape
+ int mRotationAngle; ///< The angle of the rotation
+ int mWindowWidth; ///< The width of the window
+ int mWindowHeight; ///< The height of the window
+ int mNativeWindowId; ///< The Native Window Id
- int mNativeWindowId; ///< The Native Window Id
+ EventHandlerPtr mEventHandler; ///< The window events handler
+ OrientationMode mOrientationMode; ///< The physical screen mode is portrait or landscape
// Signals
SignalType mDeleteRequestSignal;
TransitionEffectEventSignalType mTransitionEffectEventSignal;
KeyboardRepeatSettingsChangedSignalType mKeyboardRepeatSettingsChangedSignal;
AuxiliaryMessageSignalType mAuxiliaryMessageSignal;
+ AccessibilityHighlightSignalType mAccessibilityHighlightSignal;
+ MovedSignalType mMovedSignal;
+ OrientationChangedSignalType mOrientationChangedSignal;
+
+ Dali::KeyEvent mLastKeyEvent;
+ Dali::TouchEvent mLastTouchEvent;
+
+ bool mIsTransparent : 1;
+ bool mIsFocusAcceptable : 1;
+ bool mIconified : 1;
+ bool mOpaqueState : 1;
+ bool mWindowRotationAcknowledgement : 1;
+ bool mFocused : 1;
+ bool mIsWindowRotating : 1; ///< The window rotating flag.
};
} // namespace Adaptor