Thanks for your explanation, I understand  this now.
And I could receive the gnome bugzilla confirmation email, so may
someone else file this bug on gtkmm bugzilla?

On 二, 2007-10-02 at 20:45 +0100, Chris Vine wrote:
> On Tue, 2007-10-02 at 22:34 +0800, Liangxu Wang wrote:
> > Hi,
> >     Sorry if I misunderstanding of these two function in treeview class,
> > from my understanding, the two function should get the path result, but
> > if I set the headers visible(this is the default behavior), the two
> > function return different path. So is this a bug or feature?
> >     Thanks.
> > 
> > code example:
> > ++++++++++++++++++
> >             Gtk::TreeModel::Path path;
> >             Gtk::TreeViewColumn* c=0;
> >             int cellx,celly;
> >             get_path_at_pos(x,y,path,c,cellx,celly);
> >             Gtk::TreeModel::iterator iter = refTreeModel->get_iter(path);
> >             std::cout<<"x,y:"<<x<<","<<y<<std::endl;
> >             if (iter)
> >             {
> >                     std::cout<<(*iter)[columns.name]<<std::endl;
> >             }
> >             Gtk::TreeViewDropPosition        pos;
> >             get_dest_row_at_pos(x,y,path,pos);
> >             iter = refTreeModel->get_iter(path);
> >             std::cout<<"x,y:"<<x<<","<<y<<std::endl;
> >             if (iter)
> >             {
> >                     std::cout<<(*iter)[columns.name]<<std::endl;
> 
> The GTK+ functions gtk_tree_view_get_dest_row_at_pos() takes widget
> co-ordinates, whereas gtk_tree_view_get_path_at_pos() takes GdkWindow
> (event) co-ordinates.  They will be different if your tree view has
> headers, as you have found.  If you want more information see
> file:///opt/gnome2/share/gtk-doc/html/gtk/GtkTreeView.html#gtk-tree-view-get-path-at-pos
> 
> Assuming that Gtk::TreeView::get_path_at_pos() just wraps
> gtk_treeview_get_path_at_pos() without carrying out co-ordinate
> translation, then the gtkmm documentation is wrong in saying that it
> takes widget co-ordinates (that is,
> http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/classGtk_1_1TreeView.html#71e5b97b84689b0dfd48426f440313dd
>  would be wrong).  I suggest you put a documentation bug in Bugzilla.
> 
> If you want widget co-ordinates in an event handler (such as when
> overriding Gtk::Widget::on_motion_notify_event() or attaching a callback
> to the Gtk::Widget::signal_motion_notify_event() signal) in order to
> call Gtk::TreeView::get_dest_row_at_pos(), you will need to use
> Gtk::Widget::get_pointer() in the handler to obtain them rather than use
> the co-ordinates passed as arguments to the callback.  If you want
> GdkWindow co-ordinates, then you should use the arguments which are
> passed to the callback.
> 
> Chris
> 
> 

_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to