Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re^3: Tkx g_bind to menu on listbox only for selected row

by Anonymous Monk
on Jan 18, 2013 at 08:38 UTC ( #1013983=note: print w/replies, xml ) Need Help??

in reply to Re^2: Tkx g_bind to menu on listbox only for selected row
in thread Tkx g_bind to menu on listbox only for selected row

I don't actually want to do that. What I want to do is only have the event trigger on mouseover the already selected row, and not the entire listbox. Does that make sense?

sure, you have the nearest, just check to see if it is selected

  • Comment on Re^3: Tkx g_bind to menu on listbox only for selected row

Replies are listed 'Best First'.
Re^4: Tkx g_bind to menu on listbox only for selected row
by v4169sgr (Sexton) on Jan 18, 2013 at 09:39 UTC

    Thanks for the reply again. I've almost made it work. My problem now is that the y-coordinate returned gets interpreted by nearest() in a way that I don't expect: nearest() seems to expect a y-coordinate relative to the top of the listbox widget, but the y-coordinate given is actually the absolute, screen, coordinate.

    Here's my code snippet:

    $list->g_bind("<Motion>", [sub { my($x,$y) = @_; my @sel_list = $list->curselection(); my $on_target = 0; my $current_index = $list->nearest($y); print "y = " . $y . "current_index = " . $current_index . "\n"; # +test if (length($sel_list[0]) > 0) { my @sel_list_items = split(/ /,$sel_list[0]); if (scalar(@sel_list_items) > 1) { foreach my $sel_list_item (@sel_list_items) { print "sel_list_item = " . $sel_list_item . "\n"; # te +st if ($sel_list_item eq $current_index) { $on_target = 1; } } } } print "on_target = " . $on_target . "\n"; # test if ($on_target == 1) { $listmenu->g_tk___popup($x,$y) } }, Tkx::Ev("%X", "%Y")]);

    I can see that the current_index is always larger than I would expect it to be. Apologies if I am missing something simple!

      %X and %Y are not %x and %y, you want %y

        Thanks. I am sure you are right, but I need %X and %Y to get the position of the context menu right. How do I go about getting both sets of coordinates bound to the same Motion event?

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1013983]
[Corion]: I have a rough plan to release an ImageNet classifier in Perl (well, using pretrained data, but still a nice toy)
Discipulus is going mad with the new win10 client.. tried mv Cortana /dev/null but no succes
[Corion]: Ouch - another pretrained set is available, using images from IMDB and Wikipedia. So I expect interesting results for non-PR images where people are pictured that are not made up
[Corion]: Discipulus: Yeah, from my investigations, you can somewhat silence+disable Cortana, but some services of it remain always running unfortunately. What a waste of resources :-/
[Corion]: I hope you had a good weekend still ;)
choroba had a workshop with the band
[choroba]: which counts as a good weekend
[Discipulus]: yes, (at least until Sun afternoon...): Saturday we got splendid birthday party in a park: lot of eat, drink and children amusement: bag running, magnetic fishing, rope and that big pot full of candies to smash with a club

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (6)
As of 2017-09-25 08:33 GMT
Find Nodes?
    Voting Booth?
    During the recent solar eclipse, I:

    Results (277 votes). Check out past polls.