Hello...


When I use following option of the TK::Tree:
------------------------------
Name: browseCmd
Class: BrowseCmd
Switch: -browsecmd
Specifies a callback to call whenever the user browses on an entry (usually by 
single-clicking on the entry). The callback is called with one argument, the pathname 
of the entry.
-------------------------- 

Following is my code.
.....

$r_tv->configure( -opencmd => sub { open_node( $$r_tv,$$r_tb,@_ ); } ,
                           -command => sub { command_act($$r_tv,@_);},
                           -browsecmd => sub {view_attr($tf2,$$r_tb,@_);}
                         );

....
sub view_attr {
    my ($tb,$address) = @_;
    my $node = $tb->address($address);
    my %attrs = $node->all_external_attr();
    if ($node->tag eq '~text') {
        .....
    }
    else {
        my ($key,$val);
        while (($key,$val) = each (%attrs)) {
            print "$key : $val\n";
        }
    }
}    

I found that everytime when I clicked the node on the Tree widget, the view_attr 
subroutine was invoked twice, the "$key : $val\n" were printed twice.
Why ????
If I just want to invoke the view_attr subroutine only once (especially there is a 
complex work in this subroutine) when I click the tree node, how can I implement this?


Thanks in advance!



Reply via email to