Почему этот фрагмент кода не перемещает курсор на последний символ записи?gtk entry set_position не перемещает курсор
use Gtk2 '-init';
my $window = Gtk2::Window->new;
my $entry = Gtk2::Entry->new;
my $handler;
$handler = $entry->signal_connect ('insert-text' =>
sub {
my (
$entry,
$chrs,
$len,
$pos_strange,
$handler,
) = @_;
$entry->signal_handler_block ($$handler);
$entry->set_text ('tryme');
$entry->signal_stop_emission_by_name ('insert-text');
$entry->signal_handler_unblock ($$handler);
$entry->set_position (-1);
},
\$handler
);
$window->set_size_request (200, 100);
$window->add ($entry);
$window->set_position ('center_always');
$window->show_all;
$window->signal_connect (delete_event => sub { Gtk2->main_quit; });
Gtk2->main;
Возможно, Gtk2 меняет положение после выполнения обработчика? Чтобы обойти это, вы можете попытаться отложить настройку положения, например. используя что-то вроде «Glib :: Idle-> add (sub {$ entry-> set_position (-1)});' –
Другая возможность: вместо вызова 'set_text' самостоятельно и защиты от inifinite петель в обработке сигналов, вы можете просто верните '($ new_text, $ new_position)'. По какой-то причине «-1», похоже, не работает, но работает следующее: '(« tryme », length ($ entry-> get_text.« Tryme »))' –