GNOME Bugzilla – Bug 744385
Detaching tab cause crash in Windows
Last modified: 2015-02-13 17:36:51 UTC
GTK 3.14.8 With MyPaint as Application. referenced bugreport: https://github.com/mypaint/mypaint/issues/194 When detaching a tab into floating window, mypaint crashed with: Gtk-CRITICAL **: gtk_widget_get_frame_clock: assertion 'GTK_IS_WIDGET (widget)' failed backtrace also there in mypaint bugreport (not useful I think). I suspect https://bugzilla.gnome.org/show_bug.cgi?id=732051 bugfix cause this new issue. Reverting the change in gtknotebook.c to 3.14.7 enough to prevent crash although the error message also relate to changes in gtkdnd.c
However I can't reproduce this with testnotebookdnd.c which came with gtk's tests
There's something going wrong here, causing the drag cancel animation to be triggered in a case when it shouldn't. I see the animation also when dragging tabs between windows in gedit.
I can't even figure out how to open multiple tabs in mypaint, so reproducing this may be a challenge...
Try Menu Layer > Layer Window Right pane will show layer stacks window, there you could try drag the icon (tab) out from pane.
Arr, the mypaint in Fedora is using gtk2, so that won't reproduce your problem anyway.
I'm sorry can't help you with Fedora packaging (not a linux user at all) but one of mypaint dev said that Ubuntu PPA is working with latest mypaint-git.
Sadly, building mypaint didn't succeed here either. So, I can only give some advice from glancing at the code. I found this in gui/workspace.py: def _create_window_cb(self, notebook, page, x, y): # Dragging into empty space creates a new stack in a new window, # and stashes the page there. win = ToolStackWindow() self._toolstack.workspace.floating_window_created(win) win.stack.workspace = self._toolstack.workspace self.remove(page) w, h = page.__prev_size new_nb = win.stack._get_first_notebook() tool_widget = page.get_child() page.remove(tool_widget) new_nb.append_tool_widget_page(tool_widget) new_placeholder = win.stack._append_new_placeholder(new_nb) new_paned = new_placeholder.get_parent() new_paned.set_position(h) # Initial position. Hopefully this will work. win.move(x, y) win.set_default_size(w, h) win.show_all() This is suspicious, and does not quite follow the intended semantics of create-window: * A handler for this signal can create a window containing * a notebook where the tab will be attached. It is also * responsible for moving/resizing the window and adding the * necessary properties to the notebook (e.g. the * #GtkNotebook:group-name ). The idea is that the signal handler creates a window with a notebook in it, and returns the notebook, but doesn't actually move the tab over itself. If you want to keep doing the moving of the tab yourself, you might have more luck using the new gtk_notebook_detach_tab() function instead of gtk_container_remove().
forgot to mention: I just added gtk_notebok_detach_tab() an hour ago...
so that new function won't help you in 3.14.x