The insert-text signal handler can optionally alter the text to be inserted. It may
Return no values for no change. Be sure to end with an empty
return.sub my_insert_text_handler { my ($widget, $text, $len, $pos, $userdata) = @_; print "inserting '$text' at char position '$pos'\n"; return; # no values }Return two values
($text, $pos)which are the new text and character position.sub my_insert_text_handler { my ($widget, $text, $len, $pos, $userdata) = @_; return (uc($text), $pos); # force to upper case }Return no values and modify the text in
$_[1]and/or position in$_[3]. For example,sub my_insert_text_handler { $_[1] = uc($_[1]); # force to upper case $_[3] = 0; # force position to the start return; # no values }
Note that currently in a Perl subclass of a Gtk2::Editable widget, a class closure (ie. class default signal handler) for insert-text does not work this way. It instead sees the C level ($text, $len, $pos_pointer), where $pos_pointer is a machine address and cannot be used easily. Hopefully this will change in the future. A signal_chain_from_overridden with the args as passed works, but for anything else the suggestion is to use a signal_connect instead.