1 #ifndef DALI_INTERNAL_DRAG_AND_DROP_ECORE_WL2_H
2 #define DALI_INTERNAL_DRAG_AND_DROP_ECORE_WL2_H
5 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/internal/drag-and-drop/common/drag-and-drop-impl.h>
23 #include <dali/internal/system/linux/dali-ecore.h>
36 Dali::DragAndDrop::DragAndDropFunction callback;
42 * DragAndDrop Implementation
44 class DragAndDropEcoreWl : public Dali::Internal::Adaptor::DragAndDrop,
45 public Dali::ConnectionTracker
56 ~DragAndDropEcoreWl() override;
59 * @copydoc Dali::DragAndDrop::StartDragAndDrop()
61 bool StartDragAndDrop(Dali::Actor source, Dali::Window shadowWindow, const Dali::DragAndDrop::DragData& data, Dali::DragAndDrop::SourceFunction callback) override;
64 * @copydoc Dali::DragAndDrop::AddListener()
66 bool AddListener(Dali::Actor target, Dali::DragAndDrop::DragAndDropFunction callback) override;
69 * @copydoc Dali::DragAndDrop::RemoveListener()
71 bool RemoveListener(Dali::Actor target) override;
74 * @copydoc Dali::DragAndDrop::SendData()
76 void SendData(void* event) override;
79 * @copydoc Dali::DragAndDrop::ReceiveData()
81 void ReceiveData(void* event) override;
84 * @copydoc Dali::DragAndDrop::CalculateDragEvent()
86 bool CalculateDragEvent(void* event) override;
89 * @copydoc Dali::DragAndDrop::CalculateViewRegion()
91 bool CalculateViewRegion(void* event) override;
94 * @brief Call drag source events.
96 void CallSourceEvent(Dali::DragAndDrop::SourceEventType type);
99 * @brief Reset drop targets.
101 void ResetDropTargets();
105 * @brief Callback function to check whether listening target is scene on.
106 * Note that This signal will be called only if AddListener target is not scene on.
108 void DropTargetSceneOn(Dali::Actor target);
111 * @brief Recalculate cursor position by orientation.
113 * @param[in] x The x value of given position
114 * @param[in] y The y value of given position
115 * @param[in] window The window instance
116 * @return The recalculated position by orientation
118 Vector2 RecalculatePositionByOrientation(int x, int y, Dali::Window window);
121 DragAndDropEcoreWl(const DragAndDropEcoreWl&) = delete;
122 DragAndDropEcoreWl& operator=(DragAndDropEcoreWl&) = delete;
123 DragAndDropEcoreWl(DragAndDropEcoreWl&&) = delete;
124 DragAndDropEcoreWl& operator=(DragAndDropEcoreWl&&) = delete;
127 Dali::Window mDragWindow;
128 uint32_t mSerial{0u};
129 Ecore_Event_Handler* mSendHandler{nullptr};
130 Ecore_Event_Handler* mSourceEndHandler{nullptr};
131 Ecore_Event_Handler* mSourceDropHandler{nullptr};
132 Ecore_Event_Handler* mReceiveHandler{nullptr};
133 Ecore_Event_Handler* mMotionHandler{nullptr};
134 Ecore_Event_Handler* mDropHandler{nullptr};
135 Ecore_Event_Handler* mEnterHandler{nullptr};
136 Ecore_Event_Handler* mLeaveHandler{nullptr};
138 std::string mMimeType;
141 Dali::Vector2 mPosition;
142 Dali::DragAndDrop::SourceFunction mSourceCallback{nullptr};
143 std::vector<DropTarget> mDropTargets;
144 }; // class DragAndDropEcoreWl
146 } // namespace Adaptor
148 } // namespace Internal
152 #endif // DALI_INTERNAL_DRAG_AND_DROP_ECORE_WL2_H