On 19 Aug, 2014, at 14:12 , Stephan Witt <st.w...@gmx.net> wrote: > Am 17.08.2014 um 20:13 schrieb Patrick De Visschere <pdvissch...@edpnet.be>: > >> On 15 Aug, 2014, at 13:57 , Stephan Witt <st.w...@gmx.net> wrote: >> >>> Am 12.08.2014 um 22:07 schrieb pdv <pdvissch...@edpnet.be>: >>> >>>> As a follow-up on reports in the thread "LyX on OS X 10.9" from some >>>> months ago, I build LyX(master) + Qt5(stable) (CMake + XCode). >>>> >>>> I replaced the Q_WS_MACX macro by Q_OS_MACX and QMaxStyle by QProxyStyle >>>> and observed then (at least) 2 issues: >>>> >>>> 1) When starting up the menu bar is not visible; One must switch to >>>> another app and then bring lyx to the foreground to make the menu bar >>>> appear. >>>> 2) When closing the (last) window the menu bar disappears mostly, except >>>> for the LyX menu. This was also reported by Stephan Witt, but I did >>>> observe no crash. >>>> >>>> When closing the last window Qt5 should switch to the "default menu bar" >>>> but apparently it doesn't find one and creates it's own minimal default >>>> menu bar. >>>> The default menu bar is created by GlobalMenuBar() (in GuiApplication.cpp) >>>> which has a constructor GlobalMenuBar() : new QMenuBar(0); according to >>>> the Qt docs the first parent-less QMenuBar created will be used as the >>>> default menu bar. Apparently Qt5 does not detect the QMenuBar(0) created >>>> via a subclass; >>>> >>>> When replacing the GlobalMenuBar() by a base QMenuBar(0) problem 2) is >>>> solved. >>>> >>>> GlobalMenuBar() was introduced to override the event() function to handle >>>> QEvent::ShortcutOverride events but shortcuts seem to work without using >>>> the GlobalMenuBar (Cmd-Q and Cmd-, work as expected; Cmd-N and Cmd-O only >>>> work after first activating one of them via the menu, but the latter also >>>> happens in LyX211 and may not be related to Qt5). Building LyX + Qt4.8.6 >>>> confirms that GlobalMenuBar's event() is not called when issuing a >>>> shortcut with no window present. I assume that these standard >>>> mac-shortcuts are handled automatically by Qt. >>>> >>>> If someone wants to check this, see the attached patch, which includes all >>>> changes (but does not solve issue 1)). >>>> >>>> Patrick De Visschere >>>> <Qt5-fix-Q_WS_MACX+GlobalMenuBar.diff> >>> >>> Hi Patrick, >>> >>> the GlobalMenuBar() thing is a wonderful idea! I'm struggling since a while >>> with the Qt5 build and failed to solve this issue 2. This I did while being >>> on vacation, so I couldn't answer earlier. >>> >>> The issue 1 was solved by Benjamin Piwowar already, IMHO. It's caused by >>> Qt5 not showing a menu top item without any action attached. The latest >>> change is the dummy action has to be attached to the sub menu after the >>> addMenu(subMenu) method call. >> >> I’ve used commit 453ce611919ff66d8b00bda9a9dcc32f4d38a843, which does >> include this dummy action, if I’m not mistaken. > > Yes, me too. But this dummy action is added before the addMenu(menu) method > call. I've had to move it the addAction call after the addMenu call. > >>> Both issues are regressions of Qt5, IMO. >>> >>> The QMacStyle doesn't need to be replaced if LyX is linked with the >>> QMacExtras framework. >>> >>> Regarding the Q_WS_MACX macro replacement I'm not sure what should be done. >>> >>> 1. I'd prefer to simply replace Q_WS_MACX with Q_OS_MAC which is available >>> since 4.6.x at least. >>> 2. I'd prefer to replace Q_WS_X11 and Q_WS_WIN with Q_OS_X11 and Q_OS_WIN >>> at the same time but cannot test all platforms. >>> >>> This results in the attached patch. It contains some additional changes in >>> Menu.cpp I introduced while attacking the issue 2. Furthermore I changed >>> CMakeLists.txt because of some warnings from newer cmake. >>> >>> This patch should not be commit as is but in some separate steps. Please, >>> if someone can try it or comment on it, I'd like to hear other opinions. >>> >> >> With this patch I get basically the same behaviour as I described in my >> initial message. Without a window being present, Cmd-O and Cmd-N don’t work >> right away. And the application still starts without the menubar being >> visible (issue 1), but the shortcuts do work. > > Ok, that's not good. > > But on my system the menu bar is visible on startup. > > So, I'll give more details regarding my build environment: > * Mac OS X 10.8.5 > * Darwin Kernel Version 12.5.0 > * Qt 5.3.1 Cocoa built with: > $ configure -debug-and-release -opensource -silent -shared -confirm-license > -no-strip -no-kms -no-pkg-config -nomake examples -nomake tools -skip > qtquick1 -skip qtwebkit -skip qtconnectivity -skip qtquickcontrols -skip > qtdeclarative -skip qtscript -arch x86_64 -prefix > /Users/Shared/LyX/qt-5.3.1-frameworks-cocoa-x86_64 > > With autotools I build with > * gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) > > With cmake I build with > * AppleClang 5.1.0.5030040 (Apple LLVM 5.1) > > The LyX package I made on a Mac 10.6.8 works like the package build on 10.8.5.
My environment * Mac OS X 10.9.4 * Darwin Kernel Version 13.3.0 * Qt 5.3.1 (stable branch) (default Cocoa) ./configure -opensource -silent -shared -release -no-dbus -nomake examples -nomake tools -no-framework * I used cmake 3.0.0 and Xcode 5.1.1, compiler is the same as yours: Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn) Target: x86_64-apple-darwin13.3.0 Thread model: posix I’ve build for 10.8 with "compiler default” C++ settings, or for 10.9 with c++11 and libc++ settings, with the same result; Although I haven’t a clue where to start debugging issue 1, I think I'll start by building the -debug version of qt5. Or could it be a 10.9 issue? P. De Visschere