Salome HOME
Modification, Transformation. IDs of elements are missing, if selection with rectange...
authordmv <dmv@opencascade.com>
Tue, 28 Oct 2008 07:37:16 +0000 (07:37 +0000)
committerdmv <dmv@opencascade.com>
Tue, 28 Oct 2008 07:37:16 +0000 (07:37 +0000)
src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx
src/SMESHGUI/SMESHGUI_RotationDlg.cxx
src/SMESHGUI/SMESHGUI_SymmetryDlg.cxx
src/SMESHGUI/SMESHGUI_TranslationDlg.cxx

index 70614f5041b77031de0e2fcb4121be9c9fd4e38f..f889beffa7d2790b86eafeaf7dd93c6bc38cff8f 100644 (file)
@@ -827,8 +827,10 @@ void SMESHGUI_RevolutionDlg::SelectionIntoArgument()
   }
 
   myBusy = true;
-  if (myEditCurrentArgument == (QWidget*)LineEditElements)
+  if (myEditCurrentArgument == (QWidget*)LineEditElements) {
     LineEditElements->setText(aString);
+    LineEditElements->repaint();
+  }
   myBusy = false;
 
   // OK
index c41978db4beecf572b6d34f2514ebbbb96ba6905..6ac3770f8442f19f8c7d8fd5a6dd00f9a7f53d8c 100644 (file)
@@ -721,6 +721,7 @@ void SMESHGUI_RotationDlg::SelectionIntoArgument()
   myBusy = true;
   if (myEditCurrentArgument == (QWidget*)LineEditElements) {
     LineEditElements->setText(aString);
+    LineEditElements->repaint();
     setNewMeshName();
   }
   myBusy = false;
index 6eab435f8846ff069bb3c90edc0bc71f6a470b31..d733ee9ee7c68fe9a0caaccd33283a03010d2b1e 100644 (file)
@@ -788,6 +788,7 @@ void SMESHGUI_SymmetryDlg::SelectionIntoArgument()
   myBusy = true;
   if (myEditCurrentArgument == (QWidget*)LineEditElements) {
     LineEditElements->setText(aString);
+    LineEditElements->repaint();
     setNewMeshName();
   }
   myBusy = false;
index 9ab6ed909e507ec9da4ce6acb8b178510a169219..fbee1a0a2b1d81331258be3275826b40a26fc628 100644 (file)
@@ -82,6 +82,23 @@ using namespace std;
 
 enum { MOVE_ELEMS_BUTTON = 0, COPY_ELEMS_BUTTON, MAKE_MESH_BUTTON }; //!< action type
 
+/*!
+  \class BusyLocker
+  \brief Simple 'busy state' flag locker.
+  \internal
+*/
+
+class BusyLocker
+{
+public:
+  //! Constructor. Sets passed boolean flag to \c true.
+  BusyLocker( bool& busy ) : myBusy( busy ) { myBusy = true; }
+  //! Destructor. Clear external boolean flag passed as parameter to the constructor to \c false.
+  ~BusyLocker() { myBusy = false; }
+private:
+  bool& myBusy; //! External 'busy state' boolean flag
+};
+
 //=================================================================================
 // class    : SMESHGUI_TranslationDlg()
 // purpose  :
@@ -452,8 +469,9 @@ void SMESHGUI_TranslationDlg::ConstructorsClicked (int constructorId)
 //=================================================================================
 void SMESHGUI_TranslationDlg::ClickOnApply()
 {
-  if (mySMESHGUI->isActiveStudyLocked())
+  if (mySMESHGUI->isActiveStudyLocked() || myBusy )
     return;
+  BusyLocker lock( myBusy );
 
   if (myNbOkElements) {
     QStringList aListElementsId = QStringList::split(" ", myElementsId, false);
@@ -568,7 +586,7 @@ void SMESHGUI_TranslationDlg::onTextChange (const QString& theNewText)
   QLineEdit* send = (QLineEdit*)sender();
 
   if (myBusy) return;
-  myBusy = true;
+  BusyLocker lock( myBusy );
 
   if (send == LineEditElements)
     myNbOkElements = 0;
@@ -607,9 +625,8 @@ void SMESHGUI_TranslationDlg::onTextChange (const QString& theNewText)
   if (myNbOkElements) {
     buttonOk->setEnabled(true);
     buttonApply->setEnabled(true);
-  }
 
-  myBusy = false;
+  }
 }
 
 //=================================================================================
@@ -618,22 +635,22 @@ void SMESHGUI_TranslationDlg::onTextChange (const QString& theNewText)
 //=================================================================================
 void SMESHGUI_TranslationDlg::SelectionIntoArgument()
 {
-  if (myBusy) return;
+  if (myBusy)
+    return;
+  BusyLocker lock( myBusy );
 
   // clear
   myActor = 0;
   QString aString = "";
 
-  myBusy = true;
   if (myEditCurrentArgument == (QWidget*)LineEditElements) {
     LineEditElements->setText(aString);
     myNbOkElements = 0;
     buttonOk->setEnabled(false);
     buttonApply->setEnabled(false);
   }
-  myBusy = false;
 
-  if (!GroupButtons->isEnabled()) // inactive
+  if (!GroupButtons->isEnabled()) // inactive 
     return;
 
   // get selected mesh
@@ -748,12 +765,11 @@ void SMESHGUI_TranslationDlg::SelectionIntoArgument()
     }
   }
 
-  myBusy = true;
   if (myEditCurrentArgument == (QWidget*)LineEditElements) {
     LineEditElements->setText(aString);
+    LineEditElements->repaint();
     setNewMeshName();
   }
-  myBusy = false;
 
   // OK
   if (myNbOkElements) {
@@ -768,6 +784,9 @@ void SMESHGUI_TranslationDlg::SelectionIntoArgument()
 //=================================================================================
 void SMESHGUI_TranslationDlg::SetEditCurrentArgument()
 {
+  if (myBusy) return;
+  BusyLocker lock( myBusy );
+
   QPushButton* send = (QPushButton*)sender();
 
   disconnect(mySelectionMgr, 0, this, 0);
@@ -837,7 +856,7 @@ void SMESHGUI_TranslationDlg::ActivateThisDialog()
   if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
     aViewWindow->SetSelectionMode( CellSelection );
 
-  SelectionIntoArgument();
+  //  SelectionIntoArgument();
 }
 
 //=================================================================================