6e8fbca745
match the genesis editor version 1.3.0.653.
131 lines
3.1 KiB
C++
131 lines
3.1 KiB
C++
/*!
|
||
@file
|
||
@author Albert Semenov
|
||
@date 01/2008
|
||
*/
|
||
/*
|
||
This file is part of MyGUI.
|
||
|
||
MyGUI is free software: you can redistribute it and/or modify
|
||
it under the terms of the GNU Lesser General Public License as published by
|
||
the Free Software Foundation, either version 3 of the License, or
|
||
(at your option) any later version.
|
||
|
||
MyGUI is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
GNU Lesser General Public License for more details.
|
||
|
||
You should have received a copy of the GNU Lesser General Public License
|
||
along with MyGUI. If not, see <http://www.gnu.org/licenses/>.
|
||
*/
|
||
#ifndef __MYGUI_ITEM_DROP_INFO_H__
|
||
#define __MYGUI_ITEM_DROP_INFO_H__
|
||
|
||
#include "MyGUI_Prerequest.h"
|
||
|
||
namespace MyGUI
|
||
{
|
||
|
||
struct MYGUI_EXPORT DDItemState
|
||
{
|
||
enum Enum
|
||
{
|
||
None,
|
||
Start, /**< start drag */
|
||
End, /**< end drag (drop) */
|
||
Miss, /**< drag DDContainer over empty space or widgets that don't have drag'n'drop */
|
||
Accept, /**< drag DDContainer over another DDContainer that accept dropping on it */
|
||
Refuse /**< drag DDContainer over another DDContainer that refuse dropping on it */
|
||
};
|
||
|
||
DDItemState(Enum _value = None) :
|
||
value(_value)
|
||
{
|
||
}
|
||
|
||
friend bool operator == (DDItemState const& a, DDItemState const& b)
|
||
{
|
||
return a.value == b.value;
|
||
}
|
||
|
||
friend bool operator != (DDItemState const& a, DDItemState const& b)
|
||
{
|
||
return a.value != b.value;
|
||
}
|
||
|
||
private:
|
||
Enum value;
|
||
};
|
||
|
||
// структура информации об индексах дропа
|
||
/** Inormation about drag'n'drop indexes */
|
||
struct MYGUI_EXPORT DDItemInfo
|
||
{
|
||
DDItemInfo() :
|
||
sender(nullptr),
|
||
sender_index(ITEM_NONE),
|
||
receiver(nullptr),
|
||
receiver_index(ITEM_NONE)
|
||
{
|
||
}
|
||
|
||
DDItemInfo(DDContainer* _sender, size_t _sender_index, DDContainer* _receiver, size_t _receiver_index) :
|
||
sender(_sender),
|
||
sender_index(_sender_index),
|
||
receiver(_receiver),
|
||
receiver_index(_receiver_index)
|
||
{
|
||
}
|
||
|
||
void set(DDContainer* _sender, size_t _sender_index, DDContainer* _receiver, size_t _receiver_index)
|
||
{
|
||
sender = _sender;
|
||
sender_index = _sender_index;
|
||
receiver = _receiver;
|
||
receiver_index = _receiver_index;
|
||
}
|
||
|
||
void reset()
|
||
{
|
||
sender = nullptr;
|
||
sender_index = ITEM_NONE;
|
||
receiver = nullptr;
|
||
receiver_index = ITEM_NONE;
|
||
}
|
||
|
||
/** DDContainer that send this event (container from which we started drag) */
|
||
DDContainer* sender;
|
||
/** Index of sender container */
|
||
size_t sender_index;
|
||
|
||
/** DDContainer that receive dragged widget (container to which we want to drop) */
|
||
DDContainer* receiver;
|
||
/** Index of receiver container */
|
||
size_t receiver_index;
|
||
};
|
||
|
||
struct MYGUI_EXPORT DDWidgetState
|
||
{
|
||
DDWidgetState(size_t _index) :
|
||
index(_index),
|
||
update(true),
|
||
accept(false),
|
||
refuse(false)
|
||
{
|
||
}
|
||
|
||
/** Index of element */
|
||
size_t index;
|
||
/** State and internal data changed */
|
||
bool update;
|
||
/** Is widget accept drop */
|
||
bool accept;
|
||
/** Is widget refuse drop */
|
||
bool refuse;
|
||
};
|
||
|
||
} // namespace MyGUI
|
||
|
||
#endif // __MYGUI_ITEM_DROP_INFO_H__
|