Available drop areas for DropOverlay can be configured via constructor

now.
Better visualization for edge-drops, always shown entire rect as active
drop area and only show a single drop icon.
This commit is contained in:
mfreiholz
2016-02-03 10:50:34 +01:00
parent 2a5849a266
commit 7123410bb1
6 changed files with 86 additions and 43 deletions

View File

@@ -26,13 +26,16 @@ ADS_NAMESPACE_BEGIN
enum DropArea
{
TopDropArea,
RightDropArea,
BottomDropArea,
LeftDropArea,
CenterDropArea,
InvalidDropArea
InvalidDropArea = 0,
TopDropArea = 1,
RightDropArea = 2,
BottomDropArea = 4,
LeftDropArea = 8,
CenterDropArea = 16,
AllAreas = TopDropArea | RightDropArea | BottomDropArea | LeftDropArea | CenterDropArea
};
Q_DECLARE_FLAGS(DropAreas, DropArea)
class InternalContentData
{
@@ -50,4 +53,4 @@ QSplitter* findParentSplitter(class QWidget* w);
QSplitter* findImmediateSplitter(class QWidget* w);
ADS_NAMESPACE_END
#endif
#endif

View File

@@ -15,8 +15,9 @@ class DropOverlay : public QFrame
Q_OBJECT
public:
DropOverlay(QWidget* parent);
DropOverlay(DropAreas areas, QWidget* parent);
virtual ~DropOverlay();
void setFullAreaDropEnabled(bool enabled) { _fullAreaDrop = enabled; }
DropArea cursorLocation() const;
protected:
@@ -26,6 +27,7 @@ protected:
private:
class DropSplitAreas* _splitAreas;
bool _fullAreaDrop;
};
// AbstractDropAreas is used as base for drop area indicator widgets.
@@ -42,7 +44,7 @@ class DropSplitAreas : public AbstractDropAreas
Q_OBJECT
public:
DropSplitAreas(QWidget* parent);
DropSplitAreas(DropAreas areas, QWidget* parent);
virtual DropArea cursorLocation() const;
private:
@@ -54,8 +56,8 @@ private:
};
DropArea showDropOverlay(QWidget* parent);
void showDropOverlay(QWidget* parent, const QRect& areaRect);
DropArea showDropOverlay(QWidget* parent, DropAreas areas = DropArea::AllAreas);
void showDropOverlay(QWidget* parent, const QRect& areaRect, DropAreas areas = DropArea::AllAreas);
void hideDropOverlay();
ADS_NAMESPACE_END