GNOME Bugzilla – Bug 377867
GtkNotebook now support tab DnD, use it instead of GossipNotebook
Last modified: 2006-11-26 10:14:21 UTC
Since we depend on GTK 2.10 we can use tab DnD with the new GTK API.
Created attachment 76989 [details] [review] proposed patch It seems DnD between 2 windows doesn't works everytime, is it a GTK bug or missed I something ?
committed. DnD of contact from the main window to the chat window was broken before this patch and still not work after :D
Dnd from one chat window to another is broken now.
Setting to blocker so that it is fixed before next release.
I have found the following issues: - Dragging to a target that isn't the right target should detach the tab automatically. - Dragging one tab to another window only works if you drop over the label of the tab, not anywhere in the GtkNotebook. - Dragging from the contact list to the chat window doesn't work. So technically, dragging from one chat window to another works, just not if you get the wrong target. Also there used to be target highlighting so you knew you could drop at the target, we should do that if possible.
(In reply to comment #5) > - Dragging one tab to another window only works if you drop over the label of > the tab, not anywhere in the GtkNotebook. Not always for me, it looks rather random when it works and when it doesn't. Unless you need to hit an exact spot that I keep missing...
Another regression: it doesn't restore the size anymore after dragging a chat out of a window.
(In reply to comment #6) > (In reply to comment #5) > > - Dragging one tab to another window only works if you drop over the label of > > the tab, not anywhere in the GtkNotebook. > > Not always for me, it looks rather random when it works and when it doesn't. > Unless you need to hit an exact spot that I keep missing... > Same here, I don't understand why. Maybe that's a GTK bug ? The only application using tab DnD with the new API is epiphany but they don't detach tabs... Does someone knows an application where it works ?
I have fixed this. The problem was that the GossipChatView assigns the widget->drag_motion function to an internal function (chat_view_drag_motion) so we can make sure we don't scroll the chat window when dragging items across it. Unfortunately, returning TRUE in this function disrupts the drag motion for tabs, so instead I just returned FALSE there. While here I fixed a crasher with ref counts when dragging group chat tabs out of a window to a new window. Also fixed a bug when dragging a tab back into the same window it was already in, where by it would disappear.