I'm trying to work around a problem on Macintosh where Qt 5.6 leaves the menu 
bar and menu items in a disabled state (Qt mistakenly believes a modal window 
exists, apparently).

I'd like to try calling QCocoaMenuBar::updateMenuBarImmediately() in the Qt 
library, implemented here:

/qtbuild5/qt/qtbase/src/plugins/platforms/cocoa/qcocoamenubar.mm:

void QCocoaMenuBar::updateMenuBarImmediately()
{
        ...

Not sure if/how the QPlatform API can be used from application code to call 
QCocoaMenuBar::updateMenuBarImmediately.

I also seem to remember stumbling upon source that used QCocoaNativeInterface 
to call platform code from application source:

.../qt/qtbase/src/plugins/platforms/cocoa/qcocoanativeinterface.mm:

void QCocoaNativeInterface::onAppFocusWindowChanged(QWindow *window)
{
    Q_UNUSED(window);
    QCocoaMenuBar::updateMenuBarImmediately();
}


Or would we need to patch Qt to add onAppFocusWindowChanged to 
QCocoaNativeInterface::platformFunction? 

QFunctionPointer QCocoaNativeInterface::platformFunction(const QByteArray 
&function) const
{
    if (function == 
QCocoaWindowFunctions::bottomLeftClippedByNSWindowOffsetIdentifier())
        return 
QFunctionPointer(QCocoaWindowFunctions::BottomLeftClippedByNSWindowOffset(QCocoaWindow::bottomLeftClippedByNSWindowOffsetStatic));

    return Q_NULLPTR;
}

Any pointers on how to either call updateMenuBarImmediately or use the 
QPlatform API from application code would be appreciated.

--Jim

===============================================

Jim Prouty

Voice: (503) 620-3001, FAX: (503) 620-6754
Makers of IGOR Pro, scientific data analysis and graphing for Mac and PC
http://www.wavemetrics.com



_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to