Ian
Many thanks for the suggestion. I swapped the functions round and found that it worked for every row when the list was not scrolled horizontally. However, when I did scroll to the right, the tooltip x-axis alignment did not correspond to the columns. In fact it appeared to approximately double the effect of moving to the right and halfway through the horizontal scroll, it was out of range.
The list is packed as... GtkScrolledWindow->GtkTreeView
Any ideas?
Nigel
On 2 May 2011, at 14:10, Ian Liu Rodrigues wrote: 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 <nigel stuckey systemgarden com> 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
gtk-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-list
-- Nigel Stuckey System Garden Ltd +44 (0)7710 439986
|