Am 01.03.2014 um 20:34 schrieb Stephan Witt <st.w...@gmx.net>:

> Am 28.02.2014 um 23:01 schrieb Georg Baum <georg.b...@post.rwth-aachen.de>:
> 
>> Benjamin Piwowarski wrote:
>> 
>>> Hi Georg,
>>> 
>>> here are some comments/answers on your questions:
>>> 
>>> On 27 Feb 2014, at 22:36 , Georg Baum <georg.b...@post.rwth-aachen.de>
>>> wrote:
>>> 
>>>> 
>>>> We do not use C-style casts. Could you please rewrite this, e.g. like
>>>> 
>>>> bool const success = (os << contents) ? true : false;
>>>> 
>>>> and add comments why it is needed? I could do that, but I can't test
>>>> whether it still fixes your problem, and the chance is extremely high
>>>> that I would break something.
>>> I am unsure the above solution would work, since in libc++ the conversion
>>> to bool() is marked as explicit - you have to either use the constuct
>>> bool(x) or (bool)x. Alternatively, we could also use bool const success =
>>> !(os << contents).failed()
>> 
>> Thanks for the updated patch (I got it privately). Before applying, I just 
>> want to reassure myself that this is always 100% equivalent.
>> 
>>>> I can't comment on the cmake part, but the C++ changes look good. To our
>>>> Mac expperts: Is there any reason why they are not already in?
>>> I guess this is because since QT_WS_MACX was not defined anymore in QT5,
>>> the mac specific parts were not compiled anymore and hence did not trigger
>>> any problem.
>> 
>> I researched a bit, and there are indeed subtle differences: Q_OS_MACX is 
>> also provided on the oldest qt release supported by LyX (4.5.0). However, 
>> with qt 4.x, Q_OS_MACX is not equivalent to Q_WS_MACX: If you build for X11 
>> you get Q_WS_X11 and Q_OS_MACX.
>> 
>> BTW, the other macros we use (Q_WS_WIN and Q_WS_X11) have no direct Q_OS 
>> equivalent either, but they need to be changed as well in qt5. I don't know 
>> where to go from here. AFAIK Vincent did compile already for windows with 
>> qt5. Why did that work without the changed macros? Also, the qt sources 
>> themselves still use the Q_WS macros, although I could not find any place 
>> where they are defined. Is that simply broken code? I can't believe. Should 
>> we define our own and not use the QT ones?
>> 
>>> Yes, it sets and unsets environment variables. I cannot judge for the
>>> fallback on the old code since I coded the tests for graceful error
>>> handling and in the same time the workaround. The bug is reported over
>>> there (for mac): https://trac.macports.org/ticket/38771 (see comment 9
>>> about the locale fix) and there (it is related to the error code of the
>>> regex library)
>>> http://osdir.com/ml/package-management.rpm.devel/2008-02/msg00121.html
>>> 
>>> it seems to affect only mac os though. I can modify the patch if needed to
>>> remove the workaround, since otherwise LyX crashes.
>> 
>> Thanks for the additional info. I submitted a slightly different version 
>> without the locale stuff. I am a bit reluctant to put this in, since it is a 
>> platform specific workaround, and I want to avoid side effects on other 
>> platforms. What do others think?
>> 
>> Concerning the fallback I can assure you that it is fine for most formats 
>> (and always used on windows). Using libmagic is more a long term project to 
>> get rid of it.
>> 
>>>>> With all this, I was able to have a "working" LyX application (that is,
>>>>> everything seems to work but the menu - known OS X bug)
>>>> 
>>>> Is it this one: http://www.lyx.org/trac/ticket/8925
>>>> 
>>> yes
>>> 
>>>> Do you have any pointers to documentation about this bug?
>>> no idea - I am quite unfamiliar with QT so it would take some time. I
>>> started though to debug the menu generation in LyX to understand how it is
>>> expected to work, but did not get far yet.
>> 
>> Many thanks for the patch in trac. I hope Stephan can test it and comment.
> 
> I'm at it now. Many thanks for the investigation Benjamin.
> 
> I've applied these patches:
> 
> 0003-Qt5-support-for-Mac.patch
> 0001-Fix-bug-8925-menubar-not-displayed-in-Mac-OS-10.9.2.patch 
> 
> First I tried these patches with cmake + Xcode - this worked with 4.8.5.
> Then I tried auto tools build with 4.8.5 and it works.
> The build with 5.1 failed because of missing QMacPasteboardMime header.
> The build with 5.2 succeeded after modifying config/qt4.m4. I had to
> add the QtMacExtras framework.
> 
> Thanks to Benjamin's patches the menu bar is shown completely now.
> But when closing the main window it disappears and I get a crash on exit.
> 
> Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
> 0   libsystem_kernel.dylib            0x00007fff91be1212 __pthread_kill + 10
> 1   libsystem_c.dylib                 0x00007fff903c0b24 pthread_kill + 90
> 2   libsystem_c.dylib                 0x00007fff90404f61 abort + 143
> 3   org.lyx.lyx                       0x00000001000eb469 0x100000000 + 963689
> 4   libsystem_c.dylib                 0x00007fff903ad90a _sigtramp + 26
> 5   libobjc.A.dylib                   0x00007fff8e8b8510 objc_msgSend_vtable5 
> + 16
> 6   com.apple.AppKit                  0x00007fff8ef3519d -[NSMenu 
> _enableItem:] + 650
> 7   com.apple.AppKit                  0x00007fff8ef92e92 -[NSCarbonMenuImpl 
> _carbonUpdateStatusEvent:handlerCallRef:] + 512
> 8   com.apple.AppKit                  0x00007fff8ef8f165 
> NSSLMMenuEventHandler + 342
> 9   com.apple.HIToolbox               0x00007fff90de3d1a 
> DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 
> 1206
> 10  com.apple.HIToolbox               0x00007fff90de31e9 
> SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, 
> HandlerCallRec*) + 410
> 11  com.apple.HIToolbox               0x00007fff90df8fc9 
> SendEventToEventTarget + 40
> 12  com.apple.HIToolbox               0x00007fff90e2fca9 
> SendHICommandEvent(unsigned int, HICommand const*, unsigned int, unsigned 
> int, unsigned char, void const*, OpaqueEventTargetRef*, 
> OpaqueEventTargetRef*, OpaqueEventRef**) + 443
> 13  com.apple.HIToolbox               0x00007fff90e2fae8 
> UpdateHICommandStatus + 62
> 14  com.apple.HIToolbox               0x00007fff90e2f999 
> EnableMenu(MenuData*, OpaqueEventTargetRef*, unsigned short, unsigned char, 
> CheckMenuData*, unsigned int, double) + 86
> 15  com.apple.HIToolbox               0x00007fff90e2c76e 
> Check1MenuForKeyEvent(MenuData*, CheckMenuData*) + 2049
> 16  com.apple.HIToolbox               0x00007fff90e2b937 
> CheckMenusForKeyEvent(MenuData*, CheckMenuData*) + 904
> 17  com.apple.HIToolbox               0x00007fff90e2b523 
> _IsMenuKeyEvent(MenuData*, OpaqueEventRef*, unsigned int, MenuData**, 
> unsigned short*) + 697
> 18  com.apple.HIToolbox               0x00007fff90e2b239 IsMenuKeyEvent + 120
> 19  com.apple.AppKit                  0x00007fff8ef8ef2c -[NSCarbonMenuImpl 
> _menuItemWithKeyEquivalentMatchingEventRef:] + 295
> 20  com.apple.AppKit                  0x00007fff8ef8ece8 
> _NSFindMenuItemMatchingCommandKeyEvent + 336
> 21  com.apple.AppKit                  0x00007fff8ee4e978 
> _NSHandleCarbonMenuEvent + 423
> 22  com.apple.AppKit                  0x00007fff8ed70a9f _DPSNextEvent + 2073
> 23  com.apple.AppKit                  0x00007fff8ed6fdf2 -[NSApplication 
> nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
> 24  com.apple.AppKit                  0x00007fff8ed671a3 -[NSApplication run] 
> + 517
> 25  libqcocoa.dylib                   0x0000000103f19ab4 
> QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 
> 2404
> 26  QtCore                            0x000000010115da7e 
> QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 398
> 27  QtCore                            0x0000000101160922 
> QCoreApplication::exec() + 354
> 28  org.lyx.lyx                       0x00000001000ef6f8 0x100000000 + 980728
> 29  org.lyx.lyx                       0x00000001000019a2 0x100000000 + 6562
> 30  org.lyx.lyx                       0x0000000100001954 0x100000000 + 6484
> 
> The crash doesn't happen with Qt4.8.5.
> 
> To summarize it:
> - Qt people did a major change with platform support when going to 5.0
> - The first usable release on Mac is 5.2
> - LyX is not ready for using it ATM. Some work is needed.
> 
> I'd prefer to get LyX 2.1 running on 10.9 with Qt4.8.5. 
> 
> So, I've build the two variations of the LyX-2.1.0dev packages.
> Now I'm uploading them…


I've put them here:

https://dl.dropboxusercontent.com/u/27842660/LyX-2.1.0dev%2Bqt4-cocoa.dmg
https://dl.dropboxusercontent.com/u/27842660/LyX-2.1.0dev%2Bqt4-cocoa.dmg.sig

https://dl.dropboxusercontent.com/u/27842660/LyX-2.1.0dev%2Bqt5-cocoa.dmg
https://dl.dropboxusercontent.com/u/27842660/LyX-2.1.0dev%2Bqt5-cocoa.dmg.sig

@Benjamin: At most I'm interested if the 4.8.5 build is working on 10.9.

Stephan

Reply via email to