Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

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

by v4169sgr (Novice)
on Jan 18, 2013 at 09:39 UTC ( #1013999=note: print w/ replies, xml ) Need Help??


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

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!


Comment on Re^4: Tkx g_bind to menu on listbox only for selected row
Download Code
Re^5: Tkx g_bind to menu on listbox only for selected row
by Anonymous Monk on Jan 18, 2013 at 10:03 UTC
    %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?

        $lb->g_bind( "<Enter>", [ sub { my ( $X, $Y, $y, $lb ) = @_; warn " $X,$Y,$y,$lb " }, Tkx::Ev(qw' %X %Y %y '), $lb, ], );

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1013999]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (8)
As of 2014-07-30 12:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (231 votes), past polls