Alexandr Ciornii <alexcho...@gmail.com> writes:

> 2012/12/9 Johan Vromans <jvrom...@squirrel.nl>:
>> Alexandr Ciornii <alexcho...@gmail.com> writes:
>>
>>> I'm writing a program that uses Wx::TreeListCtrl. I want to show
>>> context menu on right click. But event has coordinates (0,0), so
>>> context menu is shown in the incorrect place.
>>
>> Have you tried:
>>
>>    my $point = $event->GetPoint;
>>    $self->PopupMenu( $menu, $point );
>
> Yes, with same result. $point is {x=>0, y=>0}.

Strange. I have code that does that (although I use GetPosition instead
of GetPoint. However, that should not make a difference...

Code (simplified):

  sub OnRightClick {
      my ($self, $event) = @_;
      my ($item, $flags) = $self->HitTest($event->GetPosition);
      return if $flags & wxTREE_HITTEST_NOWHERE;
      $self->SelectItem($item);
      my $data = $self->GetPlData($item);
      $data->ctxmenu( $event, $self, $item );
  }

  sub ctxmenu {
      my ($self, $event, $ctl, $item) = @_; # (this instance, click event, tree 
ctrl, tree item)
      my $ctxmenu = Wx::Menu->new("");
      $ctxmenu->Append(CTXMENU_OPEN,     "Details");
      ...
      $ctl->PopupMenu($ctxmenu, $event->GetPosition);
  }

-- Johan

Reply via email to