Salome HOME
refs #618
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_PolylineOp.cxx
index 384fd865cb87e8e337350155d78f50003ba04264..745cf67dc6259e75a94b3978857d41d895e8e577 100755 (executable)
@@ -1,12 +1,8 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+// Copyright (C) 2014-2015  EDF-R&D
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -111,7 +107,8 @@ void HYDROGUI_PolylineOp::startOperation()
 {
   if( myIsEdit )
   {
-    myEditedObject = Handle(HYDROData_PolylineXY)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+    if ( isApplyAndClose() )
+         myEditedObject = Handle(HYDROData_PolylineXY)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
     if ( !myEditedObject.IsNull() && !myEditedObject->IsEditable() )
     {
       // Polyline is imported from GEOM module an is not recognized as
@@ -140,6 +137,9 @@ void HYDROGUI_PolylineOp::startOperation()
   aPanel->setOCCViewer( aViewManager ? aViewManager->getOCCViewer() : 0 );
   setPreviewManager( aViewManager );
 
+  if ( isApplyAndClose() )
+    setCursor();
+
   QString aPolylineName;
   if( !myEditedObject.IsNull() )
   {
@@ -186,6 +186,8 @@ void HYDROGUI_PolylineOp::startOperation()
 
 void HYDROGUI_PolylineOp::abortOperation()
 {
+  restoreCursor();
+
   HYDROGUI_PolylineDlg* aPanel = (HYDROGUI_PolylineDlg*)inputPanel();
   if ( aPanel )
     aPanel->setOCCViewer( 0 );
@@ -196,9 +198,15 @@ void HYDROGUI_PolylineOp::abortOperation()
 
 void HYDROGUI_PolylineOp::commitOperation()
 {
-  HYDROGUI_PolylineDlg* aPanel = (HYDROGUI_PolylineDlg*)inputPanel();
-  if ( aPanel )
-    aPanel->setOCCViewer( 0 );
+  if ( isApplyAndClose() )
+  {
+    restoreCursor();
+
+    HYDROGUI_PolylineDlg* aPanel = (HYDROGUI_PolylineDlg*)inputPanel();
+    if ( aPanel )
+      aPanel->setOCCViewer( 0 );
+  }
+
   erasePreview();
 
   HYDROGUI_Operation::commitOperation();