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!
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^5: Tkx g_bind to menu on listbox only for selected row
by Anonymous Monk on Jan 18, 2013 at 10:03 UTC | |
by v4169sgr (Sexton) on Jan 18, 2013 at 10:19 UTC | |
by Anonymous Monk on Jan 18, 2013 at 10:28 UTC | |
by v4169sgr (Sexton) on Jan 18, 2013 at 11:11 UTC | |
by Anonymous Monk on Jan 18, 2013 at 13:46 UTC | |
|
In Section
Seekers of Perl Wisdom