]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Fix the first item of the 0022387: EDF GUI: New behaviour of store position of window...
authorrnv <rnv@opencascade.com>
Tue, 21 Jan 2014 12:35:58 +0000 (12:35 +0000)
committerrnv <rnv@opencascade.com>
Tue, 21 Jan 2014 12:35:58 +0000 (12:35 +0000)
1) Bad initial position of windows in some modules with the option "store position of windows" unchecked.

src/LightApp/LightApp_Application.cxx
src/LightApp/LightApp_Application.h
src/LightApp/resources/LightApp.xml
src/SalomeApp/resources/SalomeApp.xml

index 1461178bc5a1dd770dce329664f633379986cfa5..8f67b53aae43739bf37f1171c2ba116e6d2a55fb 100644 (file)
@@ -3255,7 +3255,7 @@ void LightApp_Application::loadDockWindowsState()
   if ( aResMgr->hasValue("windows_geometry" ,modName ) ) {
     QByteArray arr;
     aResMgr->value("windows_geometry", modName , arr );
-    QByteArray aTargetArray = processState(arr, storeWin, storeTb, aDefaultState);
+    QByteArray aTargetArray = processState(arr, storeWin, storeTb, true, aDefaultState);
     desktop()->restoreState( aTargetArray );
   }
 
@@ -3336,7 +3336,7 @@ void LightApp_Application::saveDockWindowsState()
     modName = activeModule()->name();
 
   QByteArray arr = desktop()->saveState();
-  resourceMgr()->setValue( "windows_geometry", modName, processState(arr, storeWin, storeTb) );
+  resourceMgr()->setValue( "windows_geometry", modName, processState(arr, storeWin, storeTb, false) );
 
   QByteArray visArr;
   if ( myWinVis.contains( modName ) )
@@ -4135,12 +4135,27 @@ QList<QToolBar*> LightApp_Application::findToolBars() {
 /*!
   Internal method to parse toolbars and dockable windows state.
  */
-QByteArray LightApp_Application::processState(QByteArray& input, const bool processWin,const bool processTb, QByteArray defaultState) {
+QByteArray LightApp_Application::processState(QByteArray& input, 
+                                             const bool processWin, 
+                                             const bool processTb, 
+                                             const bool isRestoring, 
+                                             QByteArray defaultState) {
 
   QByteArray aRes;
   bool hasDefaultState  = !defaultState.isEmpty();
   bool isDockWinWriten = false;
-  if(processWin && processTb) {
+  int nbDocWin = -1;
+  //Write date from users settings
+  if(isRestoring){
+    QDataStream tmpInputData(&input, QIODevice::ReadOnly);
+    int marker, version;
+    uchar dockmarker;
+    tmpInputData >> marker;
+    tmpInputData >> version;
+    tmpInputData >> dockmarker;
+    tmpInputData >> nbDocWin;
+  }  
+  if(processWin && processTb && !isRestoring) {
     aRes = input;
   } else if(!processWin && !processTb ) {
     if(hasDefaultState)
@@ -4171,15 +4186,24 @@ QByteArray LightApp_Application::processState(QByteArray& input, const bool proc
     QDataStream* aTargetData = 0;
     int          aTargetIndex = -1;
 
-    if(processWin) {
-      //Write date from users settings
+    QByteArray currentArr = desktop()->saveState();
+    QDataStream anInputDataCur(&currentArr, QIODevice::ReadOnly);
+    bool useInputData = !isRestoring || (isRestoring && nbDocWin > 0);
+    if(processWin && useInputData) {
       aTargetData = &anInputData;
       aTargetIndex = toolBarMarkerIndex;
     } else {
       //Write date from default settings
       if(hasDefaultState) {
        aTargetData = &anInputDataDef;
-       aTargetIndex = toolBarMarkerIndexDef;   
+       aTargetIndex = toolBarMarkerIndexDef;
+      } else {
+       //If no default state, write current snapshot of the dockable windows
+       if(isRestoring) {
+         aTargetData = &anInputDataCur;
+         int toolBarMarkerIndexCur = getToolbarMarkerIndex(currentArr, aNames);
+         aTargetIndex = toolBarMarkerIndexCur;
+       }         
       }
     }
 
index 967676ef11f12849cc4bd6573aa0a43cd36054ac..d70f4015371c051d0ae534d49705a681469cc745 100644 (file)
@@ -288,7 +288,11 @@ private:
   void                                emptyPreferences( const QString& );
   QList<QToolBar*>                    findToolBars();
   
-  QByteArray                          processState(QByteArray& input, const bool processWin,const bool processTb, QByteArray defaultState = QByteArray());
+  QByteArray                          processState(QByteArray& input, 
+                                                  const bool processWin,
+                                                  const bool processTb,
+                                                  const bool isRestoring,
+                                                  QByteArray defaultState = QByteArray());
 
 protected:
   typedef QPointer<QWidget>         WinPtr;
index 4f93798f49669583b9052a14782e140ef31d9102..bc8ecd27206b349cb1c929e2edb8133868d61429 100644 (file)
     <!-- Additional help resources -->
     <parameter name="Developer resources"  value="${DOCUMENTATION_ROOT_DIR}/index.html" />
   </section>
+ <section name="windows_geometry">
+  <parameter value="#00 #00 #00 #FF #00 #00 #00 #00 #FD #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #88 #FC #02 #00 #00 #00 #01 #FC #00 #00 #00 #37 #00 #00 #02 #88 #00 #00 #00 #97 #01 #00 #00 #14 #FA #00 #00 #00 #00 #01 #00 #00 #00 #02 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #00 #C0 #00 #FF #FF #FF #00 #00 #00 #03 #00 #00 #05 #40 #00 #00 #00 #53 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #00 #00 #00 #05 #40 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #38 #00 #00 #02 #88 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #01 #00 #00 #00 #02 #00 #00 #00 #02 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #CE #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00" name=""/>
+ </section>
+ <section name="windows_visibility">
+  <parameter value="#00 #00 #00 #00 #02 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #01 #00 #00 #00 #03 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01" name=""/>
+ </section>
 </document>
index e4a353e9b21f1f2cd46552ee2ea8c00959ce3e3b..7349e8abf4abf76dfc0a8ab20282043242a427c7 100644 (file)
     <parameter name="multi_file_dump"     value="false" />
     <parameter name="pydump_save_gui"     value="false" />
   </section>
+ <section name="windows_geometry">
+  <parameter value="#00 #00 #00 #FF #00 #00 #00 #00 #FD #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #88 #FC #02 #00 #00 #00 #01 #FC #00 #00 #00 #37 #00 #00 #02 #88 #00 #00 #00 #97 #01 #00 #00 #14 #FA #00 #00 #00 #00 #01 #00 #00 #00 #02 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #46 #00 #FF #FF #FF #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #00 #C0 #00 #FF #FF #FF #00 #00 #00 #03 #00 #00 #05 #40 #00 #00 #00 #53 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #00 #00 #00 #05 #40 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #38 #00 #00 #02 #88 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #01 #00 #00 #00 #02 #00 #00 #00 #02 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #CE #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00" name=""/>
+ </section>
+ <section name="windows_visibility">
+  <parameter value="#00 #00 #00 #00 #02 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #01 #00 #00 #00 #03 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01" name=""/>
+ </section>
 </document>