Merge branch 'qt_tree_control' of https://github.com/GeoTeric/wxWidgets into qt_tree_control
This commit is contained in:
@@ -170,7 +170,7 @@ protected:
|
|||||||
|
|
||||||
QTreeWidget::drawBranches(painter, rect, index);
|
QTreeWidget::drawBranches(painter, rect, index);
|
||||||
const int imageIndex = ChooseBestImage(item);
|
const int imageIndex = ChooseBestImage(item);
|
||||||
if (imageIndex != -1 )
|
if ( imageIndex != -1 )
|
||||||
{
|
{
|
||||||
wxImageList *imageList = GetHandler()->GetImageList();
|
wxImageList *imageList = GetHandler()->GetImageList();
|
||||||
wxBitmap bitmap = imageList->GetBitmap(imageIndex);
|
wxBitmap bitmap = imageList->GetBitmap(imageIndex);
|
||||||
@@ -194,8 +194,10 @@ private:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//QT doesnt update the selection until this singal has been processed. //Defering this event ensures
|
// QT doesn't update the selection until this signal has been
|
||||||
//that wxTreeCtrl::GetSelection returns the new selection in the wx event handler.
|
// processed. Deferring this event ensures that
|
||||||
|
// wxTreeCtrl::GetSelection returns the new selection in the
|
||||||
|
// wx event handler.
|
||||||
wxTreeEvent changedEvent(wxEVT_TREE_SEL_CHANGED, treeCtrl, wxQtConvertTreeItem(current));
|
wxTreeEvent changedEvent(wxEVT_TREE_SEL_CHANGED, treeCtrl, wxQtConvertTreeItem(current));
|
||||||
wxPostEvent(treeCtrl, changedEvent);
|
wxPostEvent(treeCtrl, changedEvent);
|
||||||
}
|
}
|
||||||
@@ -256,19 +258,19 @@ private:
|
|||||||
EmitEvent(expandedEvent);
|
EmitEvent(expandedEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void OnItemChanged(QTreeWidgetItem *item, int WXUNUSED(column))
|
void OnItemChanged(QTreeWidgetItem *item, int WXUNUSED(column))
|
||||||
{
|
{
|
||||||
wxTreeEvent event(wxEVT_TREE_END_LABEL_EDIT, GetHandler(), wxQtConvertTreeItem(item));
|
wxTreeEvent event(wxEVT_TREE_END_LABEL_EDIT, GetHandler(), wxQtConvertTreeItem(item));
|
||||||
EmitEvent(event);
|
EmitEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void dragEnterEvent(QDragEnterEvent* event) wxOVERRIDE
|
void tryStartDrag(const QMouseEvent *event)
|
||||||
{
|
{
|
||||||
wxEventType command = (event->mouseButtons() & Qt::RightButton)
|
wxEventType command = (event->buttons() & Qt::RightButton)
|
||||||
? wxEVT_TREE_BEGIN_RDRAG
|
? wxEVT_TREE_BEGIN_RDRAG
|
||||||
: wxEVT_TREE_BEGIN_DRAG;
|
: wxEVT_TREE_BEGIN_DRAG;
|
||||||
|
|
||||||
|
|
||||||
QTreeWidgetItem *hitItem = itemAt(event->pos());
|
QTreeWidgetItem *hitItem = itemAt(event->pos());
|
||||||
|
|
||||||
wxTreeEvent tree_event(
|
wxTreeEvent tree_event(
|
||||||
@@ -284,16 +286,17 @@ private:
|
|||||||
|
|
||||||
EmitEvent(tree_event);
|
EmitEvent(tree_event);
|
||||||
|
|
||||||
if ( tree_event.IsAllowed() )
|
if ( !tree_event.IsAllowed() )
|
||||||
{
|
{
|
||||||
event->accept();
|
setState(DragSelectingState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void dropEvent(QDropEvent* event) wxOVERRIDE
|
void endDrag(QPoint position)
|
||||||
{
|
{
|
||||||
const wxPoint pos = wxQtConvertPoint(event->pos());
|
const wxPoint pos = wxQtConvertPoint(position);
|
||||||
QTreeWidgetItem *hitItem = itemAt(event->pos());
|
QTreeWidgetItem *hitItem = itemAt(position);
|
||||||
|
OutputDebugStringA(hitItem->text(0).toUtf8().data());
|
||||||
|
|
||||||
wxTreeEvent tree_event(
|
wxTreeEvent tree_event(
|
||||||
wxEVT_TREE_END_DRAG,
|
wxEVT_TREE_END_DRAG,
|
||||||
@@ -301,11 +304,31 @@ private:
|
|||||||
wxQtConvertTreeItem(hitItem)
|
wxQtConvertTreeItem(hitItem)
|
||||||
);
|
);
|
||||||
|
|
||||||
tree_event.SetPoint(wxQtConvertPoint(event->pos()));
|
tree_event.SetPoint(wxQtConvertPoint(position));
|
||||||
|
|
||||||
EmitEvent(tree_event);
|
EmitEvent(tree_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual void dropEvent(QDropEvent* event) wxOVERRIDE
|
||||||
|
{
|
||||||
|
endDrag(event->pos());
|
||||||
|
|
||||||
|
// We don't want Qt to actually do the drop.
|
||||||
|
event->ignore();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void mouseMoveEvent(QMouseEvent *event) wxOVERRIDE
|
||||||
|
{
|
||||||
|
const bool wasDragging = state() == DraggingState;
|
||||||
|
wxQtEventSignalHandler<QTreeWidget, wxTreeCtrl>::mouseMoveEvent(event);
|
||||||
|
|
||||||
|
const bool nowDragging = state() == DraggingState;
|
||||||
|
if ( !wasDragging && nowDragging )
|
||||||
|
{
|
||||||
|
tryStartDrag(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int ChooseBestImage(QTreeWidgetItem *item) const
|
int ChooseBestImage(QTreeWidgetItem *item) const
|
||||||
{
|
{
|
||||||
int imageIndex = -1;
|
int imageIndex = -1;
|
||||||
|
Reference in New Issue
Block a user