Web lists-archives.com

Re: Tooltip for GtkTextView contents




Thanks for the response. It came down to a simple logic error. In this code:

    my $start_iter;

    if ( $iter->starts_word ) {
        $start_iter = $iter;
    } else {
        $iter->backward_word_start;
        $start_iter = $iter;
    }

    $iter->forward_word_end;

 ... I set $start_iter to be $iter. This *doesn't* make a copy of the
iter ... so when I call $iter->backward_word_start or
$iter->forward_word_end ... both $start_iter and $iter are pointing to
the same position. The correct method of getting 2 iters ( eg for
'start' and 'end' ) is to create them independently.

Dan

On Sat, Feb 18, 2017 at 6:51 AM,  <cecashon@xxxxxxx> wrote:
>
> Hi Dan,
>
> I am not very good with Perl but it looks like the iters aren't getting
> moved forward and backwards on the word the cursor is over. In C, the
> callback would look something like
>
> static gboolean query_tooltip(GtkWidget *textview, gint x, gint y, gboolean
> keyboard_mode, GtkTooltip *tooltip, gpointer user_data)
>   {
>     GtkTextIter start_iter;
>     GtkTextIter end_iter;
>     GtkTextBuffer *buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
>     gtk_text_view_get_iter_at_location(GTK_TEXT_VIEW(textview), &end_iter,
> x, y);
>     if(gtk_text_iter_inside_word(&end_iter))
>       {
>         start_iter=end_iter;
>         gtk_text_iter_forward_word_end(&end_iter);
>         gtk_text_iter_backward_word_start(&start_iter);
>         gchar *string=gtk_text_buffer_get_text(buffer, &start_iter,
> &end_iter, TRUE);
>         gtk_tooltip_set_text(tooltip, string);
>         g_free(string);
>         return TRUE;
>       }
>     return FALSE;
>   }
>
> Should be similar in Perl, right?
>
> Eric
>
>
_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
https://mail.gnome.org/mailman/listinfo/gtk-list