1 /* 2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 3 * Distributed under the MIT License 4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 5 */ 6 7 #ifndef MYGUI_ITEM_DROP_INFO_H_ 8 #define MYGUI_ITEM_DROP_INFO_H_ 9 10 #include "MyGUI_Prerequest.h" 11 #include "MyGUI_Macros.h" 12 13 namespace MyGUI 14 { 15 16 struct MYGUI_EXPORT DDItemState 17 { 18 enum Enum 19 { 20 None, 21 Start, /**< start drag */ 22 End, /**< end drag (drop) */ 23 Miss, /**< drag DDContainer over empty space or widgets that don't have drag'n'drop */ 24 Accept, /**< drag DDContainer over another DDContainer that accept dropping on it */ 25 Refuse /**< drag DDContainer over another DDContainer that refuse dropping on it */ 26 }; 27 28 DDItemState(Enum _value = None) : mValueDDItemState29 mValue(_value) 30 { 31 } 32 33 friend bool operator == (DDItemState const& a, DDItemState const& b) 34 { 35 return a.mValue == b.mValue; 36 } 37 38 friend bool operator != (DDItemState const& a, DDItemState const& b) 39 { 40 return a.mValue != b.mValue; 41 } 42 getValueDDItemState43 int getValue() const 44 { 45 return mValue; 46 } 47 48 private: 49 Enum mValue; 50 }; 51 52 // структура информации об индексах дропа 53 /** Inormation about drag'n'drop indexes */ 54 struct MYGUI_EXPORT DDItemInfo 55 { DDItemInfoDDItemInfo56 DDItemInfo() : 57 sender(nullptr), 58 sender_index(ITEM_NONE), 59 receiver(nullptr), 60 receiver_index(ITEM_NONE) 61 { 62 } 63 DDItemInfoDDItemInfo64 DDItemInfo(DDContainer* _sender, size_t _sender_index, DDContainer* _receiver, size_t _receiver_index) : 65 sender(_sender), 66 sender_index(_sender_index), 67 receiver(_receiver), 68 receiver_index(_receiver_index) 69 { 70 } 71 setDDItemInfo72 void set(DDContainer* _sender, size_t _sender_index, DDContainer* _receiver, size_t _receiver_index) 73 { 74 sender = _sender; 75 sender_index = _sender_index; 76 receiver = _receiver; 77 receiver_index = _receiver_index; 78 } 79 resetDDItemInfo80 void reset() 81 { 82 sender = nullptr; 83 sender_index = ITEM_NONE; 84 receiver = nullptr; 85 receiver_index = ITEM_NONE; 86 } 87 88 /** DDContainer that send this event (container from which we started drag) */ 89 DDContainer* sender; 90 /** Index of sender container */ 91 size_t sender_index; 92 93 /** DDContainer that receive dragged widget (container to which we want to drop) */ 94 DDContainer* receiver; 95 /** Index of receiver container */ 96 size_t receiver_index; 97 }; 98 99 struct MYGUI_EXPORT DDWidgetState 100 { DDWidgetStateDDWidgetState101 DDWidgetState(size_t _index) : 102 index(_index), 103 update(true), 104 accept(false), 105 refuse(false) 106 { 107 } 108 109 /** Index of element */ 110 size_t index; 111 /** State and internal data changed */ 112 bool update; 113 /** Is widget accept drop */ 114 bool accept; 115 /** Is widget refuse drop */ 116 bool refuse; 117 }; 118 119 } // namespace MyGUI 120 121 #endif // MYGUI_ITEM_DROP_INFO_H_ 122