Я вижу случайные (один раз из пяти), кратковременные (5-10 секунд) "зависания" при перетаскивании - возможно, как часть обратного вызова -startcommand
. Это никогда не происходит при первом перетаскивании.
Обратный вызов достаточно прост; он просто устанавливает текст перетаскиваемого курсора на значение, которое перетаскивается:
sub DragStart {
my( $token ) = @_;
my $w = $token->parent;
my $e = $w->XEvent;
my $idx = $w->nearest( $e->y );
if( defined $idx ) {
$token->configure( -text -> $w->get( $idx );
my( $X, $Y ) = ( $e->x, $e->y );
$token->MoveToplevelWindow( $X, $Y );
$token->raise;
$token->deiconify;
$token->FindSite( $X, $Y, $e );
}
}
Я не могу не задаться вопросом, не связана ли проблема с моим кодом, поэтому я хотел бы найти способ определить, какая подпрограмма вызывается в данный момент, когда происходит замораживание.
Есть ли такой инструмент? Что-то, что показывает стек вызовов в реальном времени, сделает это, если оно есть.