Attached is a patch to work around a bug with crash on view close on Mac OSX. See also https://bugreports.qt-project.org/browse/QTBUG-25399
Is anyone able to verify or comment it? Stephan Am 15.01.2014 um 18:22 schrieb Richard Heck <rgh...@lyx.org>: > On 01/15/2014 10:14 AM, Stephan Witt wrote: >> Am 15.01.2014 um 16:04 schrieb Richard Heck <rgh...@lyx.org>: >> >>> Where do we stand now with 2.0.7 on Mac? >> I'd appreciate some feedback for by patch. Without this patch LyX >> (Cocoa-build) >> crashes while closing the 2nd GuiView instance. >> >> LyX 2.0.6 was Cocoa based and I don't want to change that. > > I'm too uninformed. But can you post the patch again, with an appropriate > subject line? > > rh >> >> Stephan >> >>> On 01/07/2014 03:30 AM, Stephan Witt wrote: >>>> Am 06.01.2014 um 16:58 schrieb Richard Heck <rgh...@lyx.org>: >>>> >>>>> On 01/06/2014 02:37 AM, Stephan Witt wrote: >>>>>> Am 05.01.2014 um 22:28 schrieb Jean-Marc Lasgouttes <lasgout...@lyx.org>: >>>>>> >>>>>>> Le 05/01/2014 21:35, Stephan Witt a écrit : >>>>>>>> This looks interesting - from the Qt docs: >>>>>>>> >>>>>>>> "If you want all windows in a Mac application to share one menu bar, >>>>>>>> you must create a menu bar that does not have a parent. >>>>>>>> Create a parent-less menu bar this way: >>>>>>>> QMenuBar *menuBar = new QMenuBar(0); >>>>>>>> Note: Do not call QMainWindow::menuBar() to create the shared menu >>>>>>>> bar, because that menu bar will have theQMainWindow as its parent. >>>>>>>> That menu bar would only be displayed for the parent QMainWindow." >>>>>>>> >>>>>>>> This is the relevant code from LyX: >>>>>>>> >>>>>>>> GuiView.cpp, lines 434 and 435: >>>>>>>> >>>>>>>> // Fill up the menu bar. >>>>>>>> guiApp->menus().fillMenuBar(menuBar(), this, true); >>>>>>>> >>>>>>>> So, it's done exactly the wrong way. >>>>>>> This is indeed quite interesting, but might be for master only for now. >>>>>>> OTOH, having Reconfigure inserted only once might be good for 2.0.7. I >>>>>>> cannot test it myself, unfortunately. Maybe the static array could have >>>>>>> a bool member indicating whether the said entry has already been >>>>>>> handled and in this case one would skip it. >>>>>> I tried this already and it didn't help. It crashes nevertheless. >>>>>> The QMenuBar has to be without view parent or the move to the >>>>>> Application menu shouldn't happen, IMHO. >>>>>> >>>>>> The attached patch (for trunk) improves the situation. There are only 2 >>>>>> global QMenuBar instances on Mac then. >>>>>> >>>>>> But there are related problems: see bug 6902 >>>>>> (http://www.lyx.org/trac/ticket/6902) >>>>>> IMHO, LyX isn't aware of the situation when having no view open. Is this >>>>>> a possible scenario on Linux too? >>>>>> >>>>>> With this patch there is no crash and the Reconfigure menu is an >>>>>> Application menu item. >>>>>> But the dialog actions for About and Preferences are usable only while >>>>>> having any view open. >>>>>> Perhaps the LFUN code has to be moved to the GuiApplication class >>>>>> somehow too. >>>>>> >>>>>> This all looks like stuff for master and too adventurous for 2.0.x >>>>>> indeed. >>>>>> >>>>>> I'll try to find a less intrusive solution for branch. >>>>> OK. I will wait. >>>> I cannot find any other solution instead of using the static global >>>> QMenuBar instance on Mac. >>>> >>>> The attached patch does: >>>> * enable the About and Preferences dialog application wide on Mac >>>> * use static global QMenuBar instead of view related instance on Mac >>>> * do the Mac specific menu bar init only the first time >>>> >>>> All changes are inside #ifdef Q_WS_MACX blocks. >>>> >>>> This works for me and nothing else. >>>> >>>> One drawback I can see: the About and Preferences dialog don't show up if >>>> there is no view.
macMenuBar-3.patch
Description: Binary data