I guess the function to transform the X, Y coordinates is wrong. Try
changing

gtk_tree_view_convert_bin_window_to_tree_coords
to gtk_tree_view_convert_widget_to_bin_window_coords

Ian L.

On Fri, Apr 29, 2011 at 12:08 PM, Nigel Stuckey <
[email protected]> wrote:

> I'm about to launch a Gtk2/3 version of a data collector/viewer and
> performance monitor, a port from a Gtk1 app made a number of years ago.
>
> I've got a number of problems outstanding with the GUI part that I would
> like some help with and possibly some advice with some horrid code!
>
> My first problem: I have tooltips in a tabular view of data, contained in a
> GtkTreeView with a GtkListStore as model, which can grow to be quite big.
> Unfortunately, the tooltips are only successfully produced in the top half
> of the GtkTreeView. The lower half doesn't work -- the effect being
> proportional to the size of the list rather than an absolute numeric limit.
>
> The code is:-
>
>     /* get the tooltip details */
>     if (!gtk_tree_view_get_tooltip_context (tree_view, &x, &y,
>                                             keyboard_tip,
>                                             &model, &path, &iter))
>          return FALSE;
>
>     /* find time data and the row number (path) */
>     gtk_tree_model_get (model, &iter, uitable_timecol, &samptime, -1);
>     pathstring = gtk_tree_path_to_string (path);
>
>     /* find the column tooltip - if keyboard_tip==FALSE, then (x,y) are
>      * converted to bin_window coords; else treat as a widget coords.
>      * We want tree coords. */
>     if (keyboard_tip)
>          gtk_tree_view_convert_widget_to_tree_coords(tree_view, x, y,
>                                                      &treex, &treey);
>     else
>          gtk_tree_view_convert_bin_window_to_tree_coords(tree_view, x, y,
>                                                          &treex, &treey);
>
>     /* get the column, so I can get the title and the tip */
>     if (gtk_tree_view_get_path_at_pos(tree_view, treex, treey, NULL,
>                                       &column, NULL, NULL)) {
>
>          /* valid row, compose tooltip string in tip (snip, snip) */
>
>          g_object_get (column->button, "tooltip-text", &tip, NULL); /* A */
>     } else {
>          g_snprintf (buffer, 511, "Row does not exist (path %s)",
> pathstring); /* B */
>     }
>
> Following the call to gtk_tree_view_get_path_at_pos(), the first set of
> rows runs code path A and I get the tooltip I want, the bottom half runs B
> and I report an error.
>
> Can anyone help shed some light on this?
>
> Many thanks
>
> Nigel
>
> _______________________________________________
> gtk-list mailing list
> [email protected]
> http://mail.gnome.org/mailman/listinfo/gtk-list
>
_______________________________________________
gtk-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to