> On Sept. 24, 2014, 5:48 nachm., Thomas Lübking wrote: > > I assume you'd be better off altering KMenu::addTitle() - or even patch Qt > > (QMenu on mach cannot deal w/ widget actions, at least if used on the > > global menubar) > > René J.V. Bertin wrote: > I agree totally, but for that > > - I'd have to understand exactly what the addTitle does that makes Qt/Mac > crash > - Ideally I'd also know how to determine if the menu is in the global > menubar or e.g. in a popup menu, where addTitle works perfectly fine. I think > we'd want to preserve that because popup menus follow the selected style and > not necessarily the OS X style. > > There's also the point that the addTitle (and addSection, IIRC) in Qt5 > don't crash. They have other issues (IIRC you get just a separator, not the > title text) but until now I've preferred to handle these crashes on a > case-by-case basis. > > I admit, this RR was also made a bit with the idea of getting a > discussion going about this issue. ;) > > Thomas Lübking wrote: > Since KMenu is deprecated and the ::addTitle() implementation doesn't > differ in KF5, either the applications have simply been ported away from > KMenu or QWidgetAction was fixed in Qt5. > > To know why exactly this crashes for you, i'd need to see a backtrace > (paste.kde.org) - Qt4 claimed QWidgetAction support on OSX' global menu - > with some caveats. > If QMenu::menuAction() is in the action list of the global menu - > unfortunately, this menubar is parentless :-( > Also there's no guarantee that this assignment won't change at some point > in the future to any direction. > > > IIRC you get just a separator, not the title text > > What basically means that the QWidget(Action) reparenting doesn't work at > all in Qt5 anymore (at best the linked out widget is just hidden) > > > Disclaimer: I'm a bit biased here ;-) > Imo using a QWidgetAction as title was a wrong design itfp - I proposed a > Qt4 patch to use a leading and entitled separator instead, but it was > rejected because not all styles did/do support texted separators. No idea > whether that patch was revived for Qt5, never tested. (And, tbh, I don't know > whether the native styles, ie. Win and Mac, support texted separators) > > René J.V. Bertin wrote: > backtrace: http://paste.kde.org/pvnu8pgui > > If I recall correctly, Qt5.3's QMenu::addTitle and QMenu::addSection > indeed call for what I think you mean with texted separators. And OS X will > only render the separator for those. OS X 10.6 in any case, but I don't see > why that would have changed in later versions.
Thanks. QMenu::addTitle() does not exist in 5.3 and ::setTitle() refers to the menubar item text. ::addSection() might work (if the building loop was reversed, making a separator as first element possible ;-) On the crash: It occurs because QWidgetPrivate::setGeometry_sys_helper() in qwidget_mac.mm is not aware that the widget it operates on is a toplevel widget (and has no parent) This seems to be the "QMacNativeWidget(0);" "container" created in qmenu_mac.mm, QMenuPrivate::QMacMenuPrivate::addAction() Why it doesn't figure so, I don't know, but assume that in ```cpp bool QWidgetPrivate::isRealWindow() const { return q_func()->isWindow() && !topData()->embedded; } ``` "topData()->embedded" will be true (so the return be false) - Thomas ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://git.reviewboard.kde.org/r/120355/#review67379 ----------------------------------------------------------- On Sept. 25, 2014, 2 nachm., René J.V. Bertin wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://git.reviewboard.kde.org/r/120355/ > ----------------------------------------------------------- > > (Updated Sept. 25, 2014, 2 nachm.) > > > Review request for KDE Base Apps, KDE Software on Mac OS X, kdelibs, and Qt > KDE. > > > Repository: kde-baseapps > > > Description > ------- > > Mac OS X cannot handle the formatting used for title menu items when it > applies to items in the toplevel menu bar. An application calling > KMenu::addTitle on such a menu item will crash immediately, somewhere deep in > Qt. > > This patch works around that crash by emulating the addTitle effect. > > Curiously, the addTitle call that causes the crash when clicking on the Help > menu concerns a submenu of an item of the Tools menu... > > > Diffs > ----- > > konq-plugins/uachanger/uachangerplugin.cpp 5e2d094 > > Diff: https://git.reviewboard.kde.org/r/120355/diff/ > > > Testing > ------- > > OS X 10.6.8 with kdelibs 4.14.1 > > > Thanks, > > René J.V. Bertin > >