Hi!
I've been working on add tooltips for a treeview. Those are the relevant
sections of code that performs the tooltips:
class LayerTree : public Gtk::Table
{
// The rest of the class is omited
private:
Gtk::TreeView* param_tree_view_;
bool on_param_tree_view_query_tooltip(int x, int y, bool keyboard_tooltip,
const Glib::RefPtr<Gtk::Tooltip>& tooltip);
public:
Gtk::TreeView& get_param_tree_view() { return *param_tree_view_; }
};
LayerTree::LayerTree()
{
param_tree_view_=new Gtk::TreeView;
// Here is the the code to add columns and model data to param_tree_view_
get_param_tree_view().signal_query_tooltip().connect(sigc::mem_fun(*this,
&studio::LayerTree::on_param_tree_view_query_tooltip));
get_param_tree_view().set_has_tooltip();
}
LayerTree::on_param_tree_view_query_tooltip(int x, int y, bool
/*keyboard_tooltip*/, const Glib::RefPtr<Gtk::Tooltip>& tooltip)
{
Gtk::TreeModel::Path path;
Gtk::TreeViewColumn *column;
int cell_x, cell_y;
int bx, by;
get_param_tree_view().convert_widget_to_bin_window_coords(x, y, bx, by);
if(!get_param_tree_view().get_path_at_pos(bx, by, path, column,
cell_x,cell_y))
return false;
Gtk::TreeIter iter(get_param_tree_view().get_model()->get_iter(path));
if(!iter)
return false;
Gtk::TreeRow row = *(iter);
Glib::ustring tooltip_string(row[param_model.tooltip]);
if(tooltip_string.empty())
return false;
tooltip->set_text(tooltip_string);
return true;
}
The result of this code is shown on this video:
http://www.youtube.com/watch?v=UQkP3z6dG7Y
As you can see, the tooltip window is shown in the place where the timeout
expired when the mouse hovered on the widget and not where the mouse is when
the text is changed.
How do I do to place the tooltip near the mouse?
Thanks!
Carlos_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list