SEE STACK BELOW -- PHIL, 9-30-2013, RW 6.4 Development -- Gnats 5284. Partial Fix: Flicker aspect of: Workspace File->Reopen Model menu selection ignored (5284) Bug Number: 5284 (partial) Release notes (y/n): No For Release Nums: 6.4 Gnats 5285 ("Workspace File->Reopen Model menu selection ignored") has not yet been solved. It is apparently caused by a special mechanism within Qt to make mousing around submenus less finicky. Google this Qt bug: "QTBUG-20094". This commit includes the following changes: (1) The flicker of the submenu no longer occurs. It had been caused by redundantly building the "Reopen Model" (history) submenu in the "about to show" processing for that menu. This is now done in ONLY the "about to show" processing for its parent menu (the File menu) -- and no longer in the "about to show" processing for the "Reopen Model" (history) submenu itself. (This should also simplify further analysis of the main defect of this bug). (2) A debug break point has been devised for the occurrence of this problem. See this method: Workspace::aboutToShow_ReopenModelMenu() ... Notes: //************************************** //*** Gnats 5284 Debug Diagnostics *** //************************************** // Note [Phil, RW 6.4, Qt 4.8.5, 9-2013]: The code below provides a // breakpoint for the Gnats 5284 disfunction. The reshowing of the // "Reopen Model" submenu is a result of a fixup related to "QTBUG-20094" // (Google that). A call to QMenuPrivate::setCurrentAction() is resulting // in the submenu being shown again, that is somehow hosing the processing // of the clicked history submenu item. // // The output will occur under normal operation if you show the "Reopen // Model" submenu, hover back to the File Menu, and then back into the // "Reopen Model" submenu. BUT the interesting point is that we also // get there without doing that in the somewhat rare occurance of the // Gnats 5284 bug. A stack is being aside under the bugs directory: bug5284stack.txt riverware.exe!Workspace::aboutToShow_ReopenModelMenu() Line 3390 riverware.exe!Workspace::qt_static_metacall(QObject* _o, QMetaObject::Call _c, int _id, void** _a) Line 267 + 0xa bytes QtCored4.dll!QMetaObject::activate(QObject* sender, const QMetaObject* m, int local_signal_index, void** argv) Line 3538 QtGuid4.dll!QMenu::aboutToShow() Line 160 QtGuid4.dll!QMenu::popup(const QPoint & p, QAction* atAction) Line 1823 QtGuid4.dll!QMenu::internalDelayedPopup() Line 3036 QtGuid4.dll!QMenuPrivate::popupAction(QAction* action, int delay, bool activateFirst) Line 502 + 0xa bytes QtGuid4.dll!QMenuPrivate::setCurrentAction(QAction* action, int popup, QMenuPrivate::SelectionReason reason, bool activateFirst) Line 595 QtGuid4.dll!QMenuPrivate::setCurrentAction(QAction* action, int popup, QMenuPrivate::SelectionReason reason, bool activateFirst) Line 566 QtGuid4.dll!QMenu::mousePressEvent(QMouseEvent* e) Line 2324 QtGuid4.dll!QWidget::event(QEvent* event) Line 8351 QtGuid4.dll!QMenu::event(QEvent* e) Line 2460 QtGuid4.dll!QApplicationPrivate::notify_helper(QObject* receiver, QEvent* e) Line 4542 + 0x15 bytes QtGuid4.dll!QApplication::notify(QObject* receiver, QEvent* e) Line 4085 + 0x51 bytes QtCored4.dll!QCoreApplication::notifyInternal(QObject* receiver, QEvent* event) Line 931 + 0x1d bytes QtCored4.dll!QCoreApplication::sendSpontaneousEvent(QObject* receiver, QEvent* event) Line 212 + 0x4c bytes QtGuid4.dll!QApplicationPrivate::sendMouseEvent(QWidget* receiver, QMouseEvent* event, QWidget* alienWidget, QWidget* nativeWidget, QWidget** buttonDown, QPointer & lastMouseReceiver, bool spontaneous) Line 3151 + 0x16 bytes QtGuid4.dll!QETWidget::translateMouseEvent(const tagMSG & msg) Line 3273 + 0x3f bytes QtGuid4.dll!QtWndProc(HWND__* hwnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 1687 + 0x15 bytes user32.dll!0000000076fb9bd1() [Frames below may be incorrect and/or missing, no symbols loaded for user32.dll] user32.dll!0000000076fb98da() QtCored4.dll!QEventDispatcherWin32::processEvents(QFlags* flags) Line 792 QtGuid4.dll!QGuiEventDispatcherWin32::processEvents(QFlags* flags) Line 1190 + 0x27 bytes QtCored4.dll!QEventLoop::processEvents(QFlags* flags) Line 128 QtCored4.dll!QEventLoop::exec(QFlags* flags) Line 178 + 0x45 bytes QtCored4.dll!QCoreApplication::exec() Line 1203 + 0x23 bytes QtGuid4.dll!QApplication::exec() Line 3804 riverware.exe!rwGUIExecute() Line 143 riverware.exe!interactiveMode(int argc, char** argv, bool isRunAllowed) Line 679 + 0x1a bytes riverware.exe!main(int argc, char** argv) Line 604 + 0x3a bytes riverware.exe!WinMain(HINSTANCE__* instance, HINSTANCE__* prevInstance, char* __formal, int cmdShow) Line 129 + 0x16 bytes riverware.exe!__tmainCRTStartup() Line 547 + 0x42 bytes C riverware.exe!WinMainCRTStartup() Line 371 C kernel32.dll!0000000076c8652d() ntdll.dll!000000007721c521() ---