@@ -2775,6 +2775,10 @@ void ModelWidget::reDrawModelWidget()
27752775 mDiagramViewLoaded = true ;
27762776 mConnectionsLoaded = true ;
27772777 }
2778+ // if documentation view is visible then update it
2779+ if (mpModelWidgetContainer->getMainWindow ()->getDocumentationDockWidget ()->isVisible ()) {
2780+ mpModelWidgetContainer->getMainWindow ()->getDocumentationWidget ()->showDocumentation (getLibraryTreeItem ());
2781+ }
27782782 // clear the undo stack
27792783 mpUndoStack->clear ();
27802784 // announce the change.
@@ -3638,7 +3642,8 @@ void ModelWidget::showIconView(bool checked)
36383642 if (pSubWindow) {
36393643 pSubWindow->setWindowIcon (QIcon (" :/Resources/icons/model.svg" ));
36403644 }
3641- mpIconGraphicsView->setFocus ();
3645+ mpModelWidgetContainer->currentModelWidgetChanged (mpModelWidgetContainer->getCurrentMdiSubWindow ());
3646+ mpIconGraphicsView->setFocus (Qt::ActiveWindowFocusReason);
36423647 if (!checked || (checked && mpIconGraphicsView->isVisible ())) {
36433648 return ;
36443649 }
@@ -3669,7 +3674,8 @@ void ModelWidget::showDiagramView(bool checked)
36693674 if (pSubWindow) {
36703675 pSubWindow->setWindowIcon (QIcon (" :/Resources/icons/modeling.png" ));
36713676 }
3672- mpDiagramGraphicsView->setFocus ();
3677+ mpModelWidgetContainer->currentModelWidgetChanged (mpModelWidgetContainer->getCurrentMdiSubWindow ());
3678+ mpDiagramGraphicsView->setFocus (Qt::ActiveWindowFocusReason);
36733679 if (!checked || (checked && mpDiagramGraphicsView->isVisible ())) {
36743680 return ;
36753681 }
@@ -3696,11 +3702,12 @@ void ModelWidget::showTextView(bool checked)
36963702 if (!checked || (checked && mpEditor->isVisible ())) {
36973703 return ;
36983704 }
3705+ mpModelWidgetContainer->currentModelWidgetChanged (mpModelWidgetContainer->getCurrentMdiSubWindow ());
36993706 mpViewTypeLabel->setText (StringHandler::getViewType (StringHandler::ModelicaText));
37003707 mpIconGraphicsView->hide ();
37013708 mpDiagramGraphicsView->hide ();
37023709 mpEditor->show ();
3703- mpEditor->getPlainTextEdit ()->setFocus ();
3710+ mpEditor->getPlainTextEdit ()->setFocus (Qt::ActiveWindowFocusReason );
37043711 mpModelWidgetContainer->setPreviousViewType (StringHandler::ModelicaText);
37053712 updateUndoRedoActions ();
37063713}
@@ -3863,7 +3870,7 @@ void ModelWidgetContainer::addModelWidget(ModelWidget *pModelWidget, bool checkP
38633870 }
38643871 // get the preferred view to display
38653872 QString preferredView = pModelWidget->getLibraryTreeItem ()->mClassInformation .preferredView ;
3866- if (preferredView.isEmpty ()) {
3873+ if (! preferredView.isEmpty ()) {
38673874 if (preferredView.compare (" info" ) == 0 ) {
38683875 pModelWidget->showDocumentationView ();
38693876 loadPreviousViewType (pModelWidget);
@@ -3946,6 +3953,17 @@ bool ModelWidgetContainer::eventFilter(QObject *object, QEvent *event)
39463953 if (!object || isHidden () || qApp->activeWindow () != mpMainWindow) {
39473954 return QMdiArea::eventFilter (object, event);
39483955 }
3956+ if ((event->type () == QEvent::MouseButtonPress && qobject_cast<QMenuBar*>(object)) ||
3957+ (event->type () == QEvent::FocusIn && (qobject_cast<LibraryTreeView*>(object) || qobject_cast<DocumentationViewer*>(object)))) {
3958+ ModelWidget *pModelWidget = getCurrentModelWidget ();
3959+ if (pModelWidget && pModelWidget->getLibraryTreeItem ()) {
3960+ LibraryTreeItem *pLibraryTreeItem = pModelWidget->getLibraryTreeItem ();
3961+ /* if Model text is changed manually by user then validate it. */
3962+ if (!pModelWidget->validateText (&pLibraryTreeItem)) {
3963+ return true ;
3964+ }
3965+ }
3966+ }
39493967 // Global key events with Ctrl modifier.
39503968 if (event->type () == QEvent::KeyPress || event->type () == QEvent::KeyRelease) {
39513969 if (subWindowList (QMdiArea::ActivationHistoryOrder).size () > 0 ) {
@@ -3979,7 +3997,9 @@ bool ModelWidgetContainer::eventFilter(QObject *object, QEvent *event)
39793997 }
39803998 } else {
39813999 if (!mpRecentModelsList->selectedItems ().isEmpty ()) {
3982- openRecentModelWidget (mpRecentModelsList->selectedItems ().at (0 ));
4000+ if (!openRecentModelWidget (mpRecentModelsList->selectedItems ().at (0 ))) {
4001+ return true ;
4002+ }
39834003 }
39844004 mpModelSwitcherDialog->hide ();
39854005 }
@@ -4088,12 +4108,32 @@ void ModelWidgetContainer::loadPreviousViewType(ModelWidget *pModelWidget)
40884108 }
40894109}
40904110
4091- void ModelWidgetContainer::openRecentModelWidget (QListWidgetItem *pItem)
4111+ /* !
4112+ * \brief ModelWidgetContainer::openRecentModelWidget
4113+ * Slot activated when mpRecentModelsList itemClicked SIGNAL is raised.\n
4114+ * Before switching to new ModelWidget try to update the class contents if user has changed anything.
4115+ * \param pListWidgetItem
4116+ */
4117+ bool ModelWidgetContainer::openRecentModelWidget (QListWidgetItem *pListWidgetItem)
40924118{
4093- LibraryTreeItem *pLibraryTreeItem = mpMainWindow->getLibraryWidget ()->getLibraryTreeModel ()->findLibraryTreeItem (pItem->data (Qt::UserRole).toString ());
4119+ /* if Model text is changed manually by user then validate it before opening recent ModelWidget. */
4120+ ModelWidget *pModelWidget = getCurrentModelWidget ();
4121+ if (pModelWidget && pModelWidget->getLibraryTreeItem ()) {
4122+ LibraryTreeItem *pLibraryTreeItem = pModelWidget->getLibraryTreeItem ();
4123+ if (!pModelWidget->validateText (&pLibraryTreeItem)) {
4124+ return false ;
4125+ }
4126+ }
4127+ LibraryTreeItem *pLibraryTreeItem = mpMainWindow->getLibraryWidget ()->getLibraryTreeModel ()->findLibraryTreeItem (pListWidgetItem->data (Qt::UserRole).toString ());
40944128 addModelWidget (pLibraryTreeItem->getModelWidget (), false );
4129+ return true ;
40954130}
40964131
4132+ /* !
4133+ * \brief ModelWidgetContainer::currentModelWidgetChanged
4134+ * Updates the toolbar and menus items depending on what kind of ModelWidget is activated.
4135+ * \param pSubWindow
4136+ */
40974137void ModelWidgetContainer::currentModelWidgetChanged (QMdiSubWindow *pSubWindow)
40984138{
40994139 bool enabled, modelica, text, metaModel;
@@ -4129,17 +4169,17 @@ void ModelWidgetContainer::currentModelWidgetChanged(QMdiSubWindow *pSubWindow)
41294169 getMainWindow ()->getSaveAsAction ()->setEnabled (enabled);
41304170 // getMainWindow()->getSaveAllAction()->setEnabled(enabled);
41314171 getMainWindow ()->getSaveTotalAction ()->setEnabled (enabled && modelica);
4132- getMainWindow ()->getShowGridLinesAction ()->setEnabled (enabled && !pModelWidget->getLibraryTreeItem ()->isSystemLibrary ());
4133- getMainWindow ()->getResetZoomAction ()->setEnabled (enabled && modelica);
4134- getMainWindow ()->getZoomInAction ()->setEnabled (enabled && modelica);
4135- getMainWindow ()->getZoomOutAction ()->setEnabled (enabled && modelica);
4136- getMainWindow ()->getLineShapeAction ()->setEnabled (enabled && modelica);
4137- getMainWindow ()->getPolygonShapeAction ()->setEnabled (enabled && modelica);
4138- getMainWindow ()->getRectangleShapeAction ()->setEnabled (enabled && modelica);
4139- getMainWindow ()->getEllipseShapeAction ()->setEnabled (enabled && modelica);
4140- getMainWindow ()->getTextShapeAction ()->setEnabled (enabled && modelica);
4141- getMainWindow ()->getBitmapShapeAction ()->setEnabled (enabled && modelica);
4142- getMainWindow ()->getConnectModeAction ()->setEnabled (enabled && modelica);
4172+ getMainWindow ()->getShowGridLinesAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () && !pModelWidget->getLibraryTreeItem ()->isSystemLibrary ());
4173+ getMainWindow ()->getResetZoomAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4174+ getMainWindow ()->getZoomInAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4175+ getMainWindow ()->getZoomOutAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4176+ getMainWindow ()->getLineShapeAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4177+ getMainWindow ()->getPolygonShapeAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4178+ getMainWindow ()->getRectangleShapeAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4179+ getMainWindow ()->getEllipseShapeAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4180+ getMainWindow ()->getTextShapeAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4181+ getMainWindow ()->getBitmapShapeAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
4182+ getMainWindow ()->getConnectModeAction ()->setEnabled (enabled && modelica && !pModelWidget-> getTextViewToolButton ()-> isChecked () );
41434183 getMainWindow ()->getSimulateModelAction ()->setEnabled (enabled && modelica && pLibraryTreeItem->isSimulationAllowed ());
41444184 getMainWindow ()->getSimulateWithTransformationalDebuggerAction ()->setEnabled (enabled && modelica && pLibraryTreeItem->isSimulationAllowed ());
41454185 getMainWindow ()->getSimulateWithAlgorithmicDebuggerAction ()->setEnabled (enabled && modelica && pLibraryTreeItem->isSimulationAllowed ());
0 commit comments