#define DALI_INTERNAL_WINDOWSYSTEM_TIZENWAYLAND_WINDOW_BASE_ECORE_WL2_H
/*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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 HEADERS
#include <Ecore.h>
#include <Ecore_Wl2.h>
+#include <input-method-client-protocol.h>
#include <tizen-extension-client-protocol.h>
#include <wayland-egl.h>
#include <xkbcommon/xkbcommon.h>
{
namespace Adaptor
{
-
class WindowRenderSurface;
class WindowRenderSurfaceEcoreWl2;
class WindowBaseEcoreWl2 : public WindowBase
{
public:
-
/**
* @brief Constructor
*/
- WindowBaseEcoreWl2( PositionSize positionSize, Any surface, bool isTransparent );
+ WindowBaseEcoreWl2(PositionSize positionSize, Any surface, bool isTransparent);
/**
* @brief Destructor
virtual ~WindowBaseEcoreWl2();
public:
-
/**
* @brief Called when the window iconify state is changed.
*/
- Eina_Bool OnIconifyStateChanged( void* data, int type, void* event );
+ Eina_Bool OnIconifyStateChanged(void* data, int type, void* event);
/**
* @brief Called when the window gains focus.
*/
- Eina_Bool OnFocusIn( void* data, int type, void* event );
+ Eina_Bool OnFocusIn(void* data, int type, void* event);
/**
* @brief Called when the window loses focus.
*/
- Eina_Bool OnFocusOut( void* data, int type, void* event );
+ Eina_Bool OnFocusOut(void* data, int type, void* event);
/**
* @brief Called when the output is transformed.
*/
- Eina_Bool OnOutputTransform( void* data, int type, void* event );
+ Eina_Bool OnOutputTransform(void* data, int type, void* event);
/**
* @brief Called when the output transform should be ignored.
*/
- Eina_Bool OnIgnoreOutputTransform( void* data, int type, void* event );
+ Eina_Bool OnIgnoreOutputTransform(void* data, int type, void* event);
/**
* @brief Called when a rotation event is recevied.
*/
- void OnRotation( void* data, int type, void* event );
+ void OnRotation(void* data, int type, void* event);
/**
* @brief Called when a configure event is recevied.
*/
- void OnConfiguration( void* data, int type, void* event );
+ void OnConfiguration(void* data, int type, void* event);
/**
* @brief Called when a touch down is received.
*/
- void OnMouseButtonDown( void* data, int type, void* event );
+ void OnMouseButtonDown(void* data, int type, void* event);
/**
* @brief Called when a touch up is received.
*/
- void OnMouseButtonUp( void* data, int type, void* event );
+ void OnMouseButtonUp(void* data, int type, void* event);
/**
* @brief Called when a touch motion is received.
*/
- void OnMouseButtonMove( void* data, int type, void* event );
+ void OnMouseButtonMove(void* data, int type, void* event);
/**
* @brief Called when a touch is canceled.
*/
- void OnMouseButtonCancel( void* data, int type, void* event );
+ void OnMouseButtonCancel(void* data, int type, void* event);
/**
* @brief Called when a mouse wheel is received.
*/
- void OnMouseWheel( void* data, int type, void* event );
+ void OnMouseWheel(void* data, int type, void* event);
/**
* @brief Called when a detent rotation event is recevied.
*/
- void OnDetentRotation( void* data, int type, void* event );
+ void OnDetentRotation(void* data, int type, void* event);
/**
* @brief Called when a key down is received.
*/
- void OnKeyDown( void* data, int type, void* event );
+ void OnKeyDown(void* data, int type, void* event);
/**
* @brief Called when a key up is received.
*/
- void OnKeyUp( void* data, int type, void* event );
+ void OnKeyUp(void* data, int type, void* event);
/**
* @brief Called when the source window notifies us the content in clipboard is selected.
*/
- void OnDataSend( void* data, int type, void* event );
+ void OnDataSend(void* data, int type, void* event);
/**
* @brief Called when the source window sends us about the selected content.
*/
- void OnDataReceive( void* data, int type, void* event );
+ void OnDataReceive(void* data, int type, void* event);
/**
* @brief Called when a font name is changed.
/**
* @brief Called when a transition effect-start/end event is received.
*/
- void OnTransitionEffectEvent( DevelWindow::EffectState state, DevelWindow::EffectType type );
+ void OnTransitionEffectEvent(WindowEffectState state, WindowEffectType type);
/**
* @brief Called when a keyboard repeat event is changed.
*/
void OnKeyboardRepeatSettingsChanged();
+ /**
+ * @brief Called when a window redraw is requested.
+ */
+ void OnEcoreEventWindowRedrawRequest();
+
+ /**
+ * @brief Called when window's auxiliary is changed then display server send the changed message.
+ *
+ * @param[in] auxiliary's message data. It has key, value and integer list data.
+ */
+ void OnEcoreEventWindowAuxiliaryMessage(void* event);
+
+
#ifdef DALI_ELDBUS_AVAILABLE
/**
* @brief Called when Ecore ElDBus accessibility event is received.
*/
- void OnEcoreElDBusAccessibilityNotification( void* context, const Eldbus_Message* message );
+ void OnEcoreElDBusAccessibilityNotification(void* context, const Eldbus_Message* message);
#endif
/**
* @brief Called when a keymap is changed.
*/
- void KeymapChanged(void *data, int type, void *event);
+ void KeymapChanged(void* data, int type, void* event);
/**
* @brief RegistryGlobalCallback
*/
- void RegistryGlobalCallback( void* data, struct wl_registry *registry, uint32_t name, const char* interface, uint32_t version );
+ void RegistryGlobalCallback(void* data, struct wl_registry* registry, uint32_t name, const char* interface, uint32_t version);
/**
* @brief RegistryGlobalCallbackRemove
*/
- void RegistryGlobalCallbackRemove( void* data, struct wl_registry* registry, uint32_t id );
+ void RegistryGlobalCallbackRemove(void* data, struct wl_registry* registry, uint32_t id);
/**
* @brief TizenPolicyNotificationChangeDone
*/
- void TizenPolicyNotificationChangeDone(void* data, struct tizen_policy* tizenPolicy, struct wl_surface* surface, int32_t level, uint32_t state );
+ void TizenPolicyNotificationChangeDone(void* data, struct tizen_policy* tizenPolicy, struct wl_surface* surface, int32_t level, uint32_t state);
/**
* @brief TizenPolicyScreenModeChangeDone
*/
- void TizenPolicyScreenModeChangeDone( void* data, struct tizen_policy* tizenPolicy, struct wl_surface* surface, uint32_t mode, uint32_t state );
+ void TizenPolicyScreenModeChangeDone(void* data, struct tizen_policy* tizenPolicy, struct wl_surface* surface, uint32_t mode, uint32_t state);
/**
* @brief DisplayPolicyBrightnessChangeDone
*/
- void DisplayPolicyBrightnessChangeDone( void* data, struct tizen_display_policy *displayPolicy, struct wl_surface* surface, int32_t brightness, uint32_t state );
-
+ void DisplayPolicyBrightnessChangeDone(void* data, struct tizen_display_policy* displayPolicy, struct wl_surface* surface, int32_t brightness, uint32_t state);
/**
* @brief Gets the key code by keyName.
*/
- void GetKeyCode( std::string keyName, int32_t& keyCode );
+ void GetKeyCode(std::string keyName, int32_t& keyCode);
public:
-
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetNativeWindow()
*/
- virtual Any GetNativeWindow() override;
+ Any GetNativeWindow() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetNativeWindowId()
*/
- virtual int GetNativeWindowId() override;
+ int GetNativeWindowId() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::CreateEglWindow()
*/
- virtual EGLNativeWindowType CreateEglWindow( int width, int height ) override;
+ EGLNativeWindowType CreateEglWindow(int width, int height) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::DestroyEglWindow()
*/
- virtual void DestroyEglWindow() override;
+ void DestroyEglWindow() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowRotation()
*/
- virtual void SetEglWindowRotation( int angle ) override;
+ void SetEglWindowRotation(int angle) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowBufferTransform()
*/
- virtual void SetEglWindowBufferTransform( int angle ) override;
+ void SetEglWindowBufferTransform(int angle) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetEglWindowTransform()
*/
- virtual void SetEglWindowTransform( int angle ) override;
+ void SetEglWindowTransform(int angle) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::ResizeEglWindow()
*/
- virtual void ResizeEglWindow( PositionSize positionSize ) override;
+ void ResizeEglWindow(PositionSize positionSize) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::IsEglWindowRotationSupported()
*/
- virtual bool IsEglWindowRotationSupported() override;
+ bool IsEglWindowRotationSupported() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::Move()
*/
- virtual void Move( PositionSize positionSize ) override;
+ void Move(PositionSize positionSize) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::Resize()
*/
- virtual void Resize( PositionSize positionSize ) override;
+ void Resize(PositionSize positionSize) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::MoveResize()
*/
- virtual void MoveResize( PositionSize positionSize ) override;
+ void MoveResize(PositionSize positionSize) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetClass()
*/
- virtual void SetClass( const std::string& name, const std::string& className ) override;
+ void SetClass(const std::string& name, const std::string& className) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::Raise()
*/
- virtual void Raise() override;
+ void Raise() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::Lower()
*/
- virtual void Lower() override;
+ void Lower() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::Activate()
*/
- virtual void Activate() override;
+ void Activate() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetAvailableAnlges()
*/
- virtual void SetAvailableAnlges( const std::vector< int >& angles ) override;
+ void SetAvailableAnlges(const std::vector<int>& angles) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetPreferredAngle()
*/
- virtual void SetPreferredAngle( int angle ) override;
+ void SetPreferredAngle(int angle) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetAcceptFocus()
*/
- virtual void SetAcceptFocus( bool accept ) override;
+ void SetAcceptFocus(bool accept) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::Show()
*/
- virtual void Show() override;
+ void Show() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::Hide()
*/
- virtual void Hide() override;
+ void Hide() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetSupportedAuxiliaryHintCount()
*/
- virtual unsigned int GetSupportedAuxiliaryHintCount() const override;
+ unsigned int GetSupportedAuxiliaryHintCount() const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetSupportedAuxiliaryHint()
*/
- virtual std::string GetSupportedAuxiliaryHint( unsigned int index ) const override;
+ std::string GetSupportedAuxiliaryHint(unsigned int index) const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::AddAuxiliaryHint()
*/
- virtual unsigned int AddAuxiliaryHint( const std::string& hint, const std::string& value ) override;
+ unsigned int AddAuxiliaryHint(const std::string& hint, const std::string& value) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::RemoveAuxiliaryHint()
*/
- virtual bool RemoveAuxiliaryHint( unsigned int id ) override;
+ bool RemoveAuxiliaryHint(unsigned int id) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetAuxiliaryHintValue()
*/
- virtual bool SetAuxiliaryHintValue( unsigned int id, const std::string& value ) override;
+ bool SetAuxiliaryHintValue(unsigned int id, const std::string& value) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetAuxiliaryHintValue()
*/
- virtual std::string GetAuxiliaryHintValue( unsigned int id ) const override;
+ std::string GetAuxiliaryHintValue(unsigned int id) const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetAuxiliaryHintId()
*/
- virtual unsigned int GetAuxiliaryHintId( const std::string& hint ) const override;
+ unsigned int GetAuxiliaryHintId(const std::string& hint) const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetInputRegion()
*/
- virtual void SetInputRegion( const Rect< int >& inputRegion ) override;
+ void SetInputRegion(const Rect<int>& inputRegion) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetType()
*/
- virtual void SetType( Dali::Window::Type type ) override;
+ void SetType(Dali::WindowType type) override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::GetType()
+ */
+ Dali::WindowType GetType() const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetNotificationLevel()
*/
- virtual bool SetNotificationLevel( Dali::Window::NotificationLevel::Type level ) override;
+ Dali::WindowOperationResult SetNotificationLevel(Dali::WindowNotificationLevel level) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetNotificationLevel()
*/
- virtual Dali::Window::NotificationLevel::Type GetNotificationLevel() const override;
+ Dali::WindowNotificationLevel GetNotificationLevel() const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetOpaqueState()
*/
- virtual void SetOpaqueState( bool opaque ) override;
+ void SetOpaqueState(bool opaque) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetScreenOffMode()
*/
- virtual bool SetScreenOffMode(Dali::Window::ScreenOffMode::Type screenOffMode) override;
+ Dali::WindowOperationResult SetScreenOffMode(WindowScreenOffMode screenOffMode) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetScreenOffMode()
*/
- virtual Dali::Window::ScreenOffMode::Type GetScreenOffMode() const override;
+ WindowScreenOffMode GetScreenOffMode() const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetBrightness()
*/
- virtual bool SetBrightness( int brightness ) override;
+ Dali::WindowOperationResult SetBrightness(int brightness) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetBrightness()
*/
- virtual int GetBrightness() const override;
+ int GetBrightness() const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GrabKey()
*/
- virtual bool GrabKey( Dali::KEY key, KeyGrab::KeyGrabMode grabMode ) override;
+ bool GrabKey(Dali::KEY key, KeyGrab::KeyGrabMode grabMode) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::UngrabKey()
*/
- virtual bool UngrabKey( Dali::KEY key ) override;
+ bool UngrabKey(Dali::KEY key) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GrabKeyList()
*/
- virtual bool GrabKeyList( const Dali::Vector< Dali::KEY >& key, const Dali::Vector< KeyGrab::KeyGrabMode >& grabMode, Dali::Vector< bool >& result ) override;
+ bool GrabKeyList(const Dali::Vector<Dali::KEY>& key, const Dali::Vector<KeyGrab::KeyGrabMode>& grabMode, Dali::Vector<bool>& result) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::UngrabKeyList()
*/
- virtual bool UngrabKeyList( const Dali::Vector< Dali::KEY >& key, Dali::Vector< bool >& result ) override;
+ bool UngrabKeyList(const Dali::Vector<Dali::KEY>& key, Dali::Vector<bool>& result) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetDpi()
*/
- virtual void GetDpi( unsigned int& dpiHorizontal, unsigned int& dpiVertical ) override;
+ void GetDpi(unsigned int& dpiHorizontal, unsigned int& dpiVertical) override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::GetOrientation()
+ */
+ int GetOrientation() const override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::GetScreenRotationAngle()
*/
- virtual int GetScreenRotationAngle() override;
+ int GetScreenRotationAngle() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetWindowRotationAngle()
*/
- virtual void SetWindowRotationAngle( int degree ) override;
+ void SetWindowRotationAngle(int degree) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::WindowRotationCompleted()
*/
- virtual void WindowRotationCompleted( int degree, int width, int height ) override;
+ void WindowRotationCompleted(int degree, int width, int height) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetTransparency()
*/
- virtual void SetTransparency( bool transparent ) override;
+ void SetTransparency(bool transparent) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::SetParent()
*/
- virtual void SetParent( WindowBase* parentWinBase ) override;
+ void SetParent(WindowBase* parentWinBase, bool belowParent) override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::CreateFrameRenderedSyncFence()
*/
- virtual int CreateFrameRenderedSyncFence() override;
+ int CreateFrameRenderedSyncFence() override;
/**
* @copydoc Dali::Internal::Adaptor::WindowBase::CreateFramePresentedSyncFence()
*/
- virtual int CreateFramePresentedSyncFence() override;
+ int CreateFramePresentedSyncFence() override;
-private:
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::SetPositionSizeWithAngle()
+ */
+ void SetPositionSizeWithAngle(PositionSize positionSize, int angle) override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::InitializeIme()
+ */
+ void InitializeIme() override;
/**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::ImeWindowReadyToRender()
+ */
+ void ImeWindowReadyToRender() override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::RequestMoveToServer()
+ */
+ void RequestMoveToServer() override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::RequestResizeToServer()
+ */
+ void RequestResizeToServer(WindowResizeDirection direction) override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::EnableFloatingMode()
+ */
+ void EnableFloatingMode(bool enable) override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::IsFloatingModeEnabled()
+ */
+ bool IsFloatingModeEnabled() const override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::IncludeInputRegion()
+ */
+ void IncludeInputRegion(const Rect<int>& inputRegion) override;
+
+ /**
+ * @copydoc Dali::Internal::Adaptor::WindowBase::ExcludeInputRegion()
+ */
+ void ExcludeInputRegion(const Rect<int>& inputRegion) override;
+
+private:
+ /**
* Second stage initialization
*/
- void Initialize( PositionSize positionSize, Any surface, bool isTransparent );
+ void Initialize(PositionSize positionSize, Any surface, bool isTransparent);
/**
* Initialize Ecore ElDBus
/**
* @brief Create window
*/
- void CreateWindow( PositionSize positionSize );
+ void CreateWindow(PositionSize positionSize);
protected:
-
// Undefined
WindowBaseEcoreWl2(const WindowBaseEcoreWl2&) = delete;
WindowBaseEcoreWl2& operator=(const WindowBaseEcoreWl2& rhs) = delete;
private:
-
- typedef std::vector< std::pair< std::string, std::string > > AuxiliaryHints;
-
- Dali::Vector< Ecore_Event_Handler* > mEcoreEventHandler;
-
- Ecore_Wl2_Window* mEcoreWindow;
- wl_surface* mWlSurface;
- wl_egl_window* mEglWindow;
- wl_display* mDisplay;
- wl_event_queue* mEventQueue;
- tizen_policy* mTizenPolicy;
- tizen_display_policy* mTizenDisplayPolicy;
- xkb_keymap* mKeyMap;
-
- std::vector< std::string > mSupportedAuxiliaryHints;
- AuxiliaryHints mAuxiliaryHints;
-
- int mNotificationLevel;
- uint32_t mNotificationChangeState;
- bool mNotificationLevelChangeDone;
-
- int mScreenOffMode;
- uint32_t mScreenOffModeChangeState;
- bool mScreenOffModeChangeDone;
-
- int mBrightness;
- uint32_t mBrightnessChangeState;
- bool mBrightnessChangeDone;
-
- bool mVisible:1;
- Dali::PositionSize mWindowPositionSize;
-
- bool mOwnSurface;
-
- volatile uint32_t mMoveResizeSerial;
- uint32_t mLastSubmittedMoveResizeSerial;
+ typedef std::vector<std::pair<std::string, std::string> > AuxiliaryHints;
+ Dali::Vector<Ecore_Event_Handler*> mEcoreEventHandler;
+ Ecore_Wl2_Window* mEcoreWindow;
+
+ wl_surface* mWlSurface;
+ wl_input_panel* mWlInputPanel;
+ wl_output* mWlOutput;
+ wl_input_panel_surface* mWlInputPanelSurface;
+
+ wl_egl_window* mEglWindow;
+ wl_display* mDisplay;
+ wl_event_queue* mEventQueue;
+ tizen_policy* mTizenPolicy;
+ tizen_display_policy* mTizenDisplayPolicy;
+ xkb_keymap* mKeyMap;
+
+ std::vector<std::string> mSupportedAuxiliaryHints;
+
+ Dali::PositionSize mWindowPositionSize;
+ AuxiliaryHints mAuxiliaryHints;
+
+ WindowType mType;
+ int mNotificationLevel;
+ int mScreenOffMode;
+ int mBrightness;
+ int mWindowRotationAngle;
+ int mScreenRotationAngle;
+ int mSupportedPreProtation;
+
+ uint32_t mNotificationChangeState;
+ uint32_t mScreenOffModeChangeState;
+ uint32_t mBrightnessChangeState;
+ uint32_t mLastSubmittedMoveResizeSerial;
+ volatile uint32_t mMoveResizeSerial;
+
+ bool mNotificationLevelChangeDone;
+ bool mScreenOffModeChangeDone;
+ bool mVisible : 1;
+ bool mOwnSurface;
+ bool mBrightnessChangeDone;
#ifdef DALI_ELDBUS_AVAILABLE
- Eldbus_Connection* mSystemConnection;
+ Eldbus_Connection* mSystemConnection;
#endif // DALI_ELDBUS_AVAILABLE
};
} // namespace Adaptor
-} // namespace internal
+} // namespace Internal
} // namespace Dali