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:
committed by
Vadim Zeitlin
parent
25c9bf9664
commit
1c5921f85a
@@ -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(
|
||||
|
Reference in New Issue
Block a user