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.

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.
>> 
>> Stephan
>> 
> 

Reply via email to