Fix wxTreeCtrl right click and middle click events for wxQt

This fixes the issue in the sample with the context menu not appearing
when the user right clicks on an item.

Closes https://github.com/wxWidgets/wxWidgets/pull/1379
This commit is contained in:
Graham Dawes
2019-07-01 12:43:23 +01:00
committed by Vadim Zeitlin
parent 25c9bf9664
commit 1c5921f85a

View File

@@ -138,8 +138,6 @@ public:
this, &wxQTreeWidget::OnCurrentItemChanged);
connect(this, &QTreeWidget::itemActivated,
this, &wxQTreeWidget::OnItemActivated);
connect(this, &QTreeWidget::itemClicked,
this, &wxQTreeWidget::OnItemClicked);
connect(this, &QTreeWidget::itemCollapsed,
this, &wxQTreeWidget::OnItemCollapsed);
connect(this, &QTreeWidget::itemExpanded,
@@ -160,6 +158,48 @@ public:
QTreeWidget::paintEvent(event);
}
virtual void mouseReleaseEvent(QMouseEvent * event) wxOVERRIDE
{
const QPoint qPos = event->pos();
QTreeWidgetItem *item = itemAt(qPos);
if ( item != NULL )
{
const wxPoint pos(qPos.x(), qPos.y());
switch ( event->button() )
{
case Qt::RightButton:
{
wxTreeEvent treeEvent(wxEVT_TREE_ITEM_RIGHT_CLICK,
GetHandler(),
wxQtConvertTreeItem(item));
treeEvent.SetPoint(pos);
EmitEvent(treeEvent);
wxTreeEvent menuEvent(wxEVT_TREE_ITEM_MENU,
GetHandler(),
wxQtConvertTreeItem(item));
menuEvent.SetPoint(pos);
EmitEvent(menuEvent);
break;
}
case Qt::MiddleButton:
{
wxTreeEvent treeEvent(wxEVT_TREE_ITEM_MIDDLE_CLICK,
GetHandler(),
wxQtConvertTreeItem(item));
treeEvent.SetPoint(pos);
EmitEvent(treeEvent);
break;
}
default:
break;
}
}
return wxQtEventSignalHandler<QTreeWidget, wxTreeCtrl>::mouseReleaseEvent(event);
}
wxTextCtrl *GetEditControl()
{
return m_item_delegate.GetEditControl();
@@ -342,22 +382,6 @@ private:
EmitEvent(event);
}
void OnItemClicked(QTreeWidgetItem *item)
{
wxMouseState mouseState = wxGetMouseState();
wxEventType eventType;
if ( mouseState.RightIsDown() )
eventType = wxEVT_TREE_ITEM_RIGHT_CLICK;
else if ( mouseState.MiddleIsDown() )
eventType = wxEVT_TREE_ITEM_MIDDLE_CLICK;
else
return;
wxTreeEvent event(eventType, GetHandler(), wxQtConvertTreeItem(item));
EmitEvent(event);
}
void OnItemCollapsed(QTreeWidgetItem *item)
{
wxTreeEvent collapsingEvent(