]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Debug information for setFocus/activateWindow methods.
authornds <nds@opencascade.com>
Mon, 7 Dec 2015 11:19:22 +0000 (14:19 +0300)
committerdbv <dbv@opencascade.com>
Tue, 8 Dec 2015 08:52:06 +0000 (11:52 +0300)
src/ModuleBase/ModuleBase_ModelWidget.cpp
src/ModuleBase/ModuleBase_Tools.cpp
src/ModuleBase/ModuleBase_Tools.h
src/ModuleBase/ModuleBase_WidgetChoice.cpp
src/ModuleBase/ModuleBase_WidgetEditor.cpp
src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp
src/PartSet/PartSet_WidgetSketchLabel.cpp
src/XGUI/XGUI_Displayer.cpp
src/XGUI/XGUI_ErrorDialog.cpp
src/XGUI/XGUI_PropertyPanel.cpp
src/XGUI/XGUI_Workshop.cpp

index 11a884722518389d0db509315038d050f7762423..ff7554f1dff06e840c764d1b6da435c2985129c7 100644 (file)
@@ -5,6 +5,7 @@
 // Author:      Natalia ERMOLAEVA
 
 #include "ModuleBase_ModelWidget.h"
+#include "ModuleBase_Tools.h"
 
 #include <ModelAPI_Data.h>
 #include <ModelAPI_Attribute.h>
@@ -136,7 +137,7 @@ bool ModuleBase_ModelWidget::focusTo()
   for (; anIt != aLast && !isFocusAccepted; anIt++) {
     QWidget* aWidget = *anIt;
     if (aWidget && aWidget->focusPolicy() != Qt::NoFocus) {
-      aWidget->setFocus();
+      ModuleBase_Tools::setFocus(aWidget, "ModuleBase_ModelWidget::focusTo()");
       isFocusAccepted = true;
     }
   }
index 7c9fced2b12acf88f2c79c362310e5d9e69f4d57..d33467c7e883cacdbf53e1a68fb6b07c31a90518 100755 (executable)
@@ -34,6 +34,8 @@
 
 const double tolerance = 1e-7;
 
+//#define DEBUG_ACTIVATE_WINDOW
+//#define DEBUG_SET_FOCUS
 
 namespace ModuleBase_Tools {
 
@@ -71,6 +73,24 @@ void zeroMargins(QLayout* theLayout)
   theLayout->setSpacing(5);
 }
 
+void activateWindow(QWidget* theWidget, const QString& theInfo)
+{
+  theWidget->activateWindow();
+
+#ifdef DEBUG_ACTIVATE_WINDOW
+  qDebug(QString("activateWindow: %1").arg(theInfo).toStdString().c_str());
+#endif
+}
+
+void setFocus(QWidget* theWidget, const QString& theInfo)
+{
+  theWidget->setFocus();
+
+#ifdef DEBUG_SET_FOCUS
+  qDebug(QString("setFocus: %1").arg(theInfo).toStdString().c_str());
+#endif
+}
+
 QPixmap composite(const QString& theAdditionalIcon, const QString& theIcon)
 {
   QImage anIcon(theIcon);
index 8c2a00db188d014b7a4df066bea842537de278d3..7aa9f9d647ed3fb71fc71110976eb40b9eae6a1d 100755 (executable)
@@ -37,6 +37,23 @@ MODULEBASE_EXPORT void adjustMargins(QLayout* theLayout);
 MODULEBASE_EXPORT void zeroMargins(QWidget* theWidget);
 MODULEBASE_EXPORT void zeroMargins(QLayout* theLayout);
 
+/*
+ * Calls the same-named Qt method for the given widget.
+ * It sets the top-level widget containing this widget to be the active window.
+ * An active window is a visible top-level window that has the keyboard input focus.
+ * \param theWidget a widget to be activated
+ * \param theIndo a debug information
+ */
+MODULEBASE_EXPORT void activateWindow(QWidget* theWidget, const QString& theInfo = QString());
+
+/*
+ * Calls the same-named Qt method for the given widget.
+ * Gives the keyboard input focus to this widget (or its focus proxy) if this widget or
+ * one of its parents is the active window.
+ * \param theWidget a widget to be activated
+ * \param theIndo a debug information
+ */
+MODULEBASE_EXPORT void setFocus(QWidget* theWidget, const QString& theInfo = QString());
 
 /**
  * \ingroup GUI
index ea35a3f827b057d204bfb577ff6acbb33e0ac506..024b736788cdc5962c2c5ad6559c6b569635a706 100644 (file)
@@ -139,7 +139,7 @@ bool ModuleBase_WidgetChoice::restoreValueCustom()
 bool ModuleBase_WidgetChoice::focusTo()
 {
   if (myCombo)
-    myCombo->setFocus();
+    ModuleBase_Tools::setFocus(myCombo, "ModuleBase_WidgetChoice::focusTo()");
   else
     return false;
   return true;
index 20e83607242da69c1ed71c729f31b6bf67318fbd..6ef0847abd9c093426fb7d12bebb5a00ce01640e 100644 (file)
@@ -65,7 +65,7 @@ void ModuleBase_WidgetEditor::editedValue(double& outValue, QString& outText)
 
   aLay->addWidget(anEditor);
 
-  anEditor->setFocus();
+  ModuleBase_Tools::setFocus(anEditor, "ModuleBase_WidgetEditor::editedValue");
   anEditor->selectAll();
   QObject::connect(anEditor, SIGNAL(editingFinished()), &aDlg, SLOT(accept()));
 
index 0d8d976fa9cf1d0f8b7661800f0cbc4a3c364ade..95dfd185fde18a941bfab9e8e5a3c1cc04ddb9e4 100755 (executable)
@@ -329,7 +329,8 @@ void ModuleBase_WidgetMultiSelector::updateFocus()
   // Set focus to List control in order to make possible 
   // to use Tab key for transfer the focus to next widgets
   myListControl->setCurrentRow(myListControl->model()->rowCount() - 1);
-  myListControl->setFocus();
+  ModuleBase_Tools::setFocus(myListControl,
+                             "ModuleBase_WidgetMultiSelector::onSelectionTypeChanged()");
 }
 
 //********************************************************************
index b167f5a47d31f3afc287d0df3afee39e6442c80b..846ea999912627927bcb51f7f773e210c490991d 100644 (file)
@@ -235,7 +235,7 @@ std::shared_ptr<GeomAPI_Pln> PartSet_WidgetSketchLabel::plane() const
 
 bool PartSet_WidgetSketchLabel::focusTo()
 {
-  myStackWidget->setFocus();
+  ModuleBase_Tools::setFocus(myStackWidget, "PartSet_WidgetSketchLabel::focusTo()");
   return true;
 }
 
index 9aba5dfddcaa2a6d066413f8b171f92b2bc14f2d..4fb6a729bdba4c794c1beda317f8bda876aeb36f 100644 (file)
@@ -57,8 +57,6 @@
 
 const int MOUSE_SENSITIVITY_IN_PIXEL = 10;  ///< defines the local context mouse selection sensitivity
 
-//#define WORKAROUND_691
-
 //#define DEBUG_ACTIVATE_OBJECTS
 //#define DEBUG_DEACTIVATE
 //#define DEBUG_ACTIVATE_AIS
@@ -318,15 +316,7 @@ bool XGUI_Displayer::redisplay(ObjectPtr theObject, bool theUpdateViewer)
         arg(!isEqualShapes || isCustomized).arg(isEqualShapes).arg(isCustomized).toStdString().c_str());
     #endif
     if (!isEqualShapes || isCustomized) {
-#ifdef WORKAROUND_691
-      // this is a workaround for OCCT 6.9.1, selection area is wrong
-      // on sketch and 3D features
-      aContext->RecomputePrsOnly (aAISIO, false);
-      aContext->SelectionManager()->RecomputeSelection (aAISIO, true);
-      aContext->LocalContext()->ClearOutdatedSelection (aAISIO, false);
-#else
       aContext->Redisplay(aAISIO, false);
-#endif
       aRedisplayed = true;
       #ifdef DEBUG_FEATURE_REDISPLAY
         qDebug("  Redisplay happens");
index ee076f1c4796c30840d58e5b5de55f207efdb139..d389e3b3f73d6a04ae35581c56f058acd5fe8ad2 100644 (file)
@@ -8,6 +8,8 @@
  */
 #include <XGUI_ErrorDialog.h>
 
+#include <ModuleBase_Tools.h>
+
 #include <QDialogButtonBox>
 #include <QHBoxLayout>
 #include <QLabel>
@@ -61,7 +63,7 @@ void XGUI_ErrorDialog::addError(const QString& theError)
   if (!isVisible()) {
     show();
     raise();
-    activateWindow();
+    ModuleBase_Tools::activateWindow(this, "XGUI_ErrorDialog::addError");
   }
 }
 
index c91596ec1cf14702b339cad8ff32e52b0aa080fe..762bde305e20d92063faad3d91103046076213a0 100755 (executable)
@@ -164,7 +164,7 @@ void XGUI_PropertyPanel::activateNextWidget(ModuleBase_ModelWidget* theWidget)
 
   QList<ModuleBase_ModelWidget*>::const_iterator anIt = myWidgets.begin(), aLast = myWidgets.end();
   bool isFoundWidget = false;
-  activateWindow();
+  ModuleBase_Tools::activateWindow(this, "XGUI_PropertyPanel::activateNextWidget()");
   for (; anIt != aLast; anIt++) {
     ModuleBase_ModelWidget* aCurrentWidget = *anIt;
     if (isFoundWidget || !theWidget) {
@@ -195,7 +195,7 @@ bool XGUI_PropertyPanel::focusNextPrevChild(bool theIsNext)
       for (int i = 0, aSize = myWidgets.size(); i < aSize && !aFirstControl; i++)
         aFirstControl = myWidgets[i]->getControlAcceptingFocus(true);
       if (aFirstControl)
-        aFirstControl->setFocus();
+        ModuleBase_Tools::setFocus(aFirstControl, "XGUI_PropertyPanel::focusNextPrevChild()");
         isChangedFocus = true;
     }
     else {
@@ -217,7 +217,7 @@ bool XGUI_PropertyPanel::focusNextPrevChild(bool theIsNext)
       for (int i = myWidgets.size()-1; i >= 0 && !aLastControl; i--)
         aLastControl = myWidgets[i]->getControlAcceptingFocus(false);
       if (aLastControl)
-        aLastControl->setFocus();
+        ModuleBase_Tools::setFocus(aLastControl, "XGUI_PropertyPanel::focusNextPrevChild()");
         isChangedFocus = true;
     }
     else {
@@ -227,7 +227,7 @@ bool XGUI_PropertyPanel::focusNextPrevChild(bool theIsNext)
         aFirstControl = myWidgets[i]->getControlAcceptingFocus(true);
       if (aFirstControl && aFirstControl->hasFocus()) {
         QToolButton* aCancelBtn = findChild<QToolButton*>(PROP_PANEL_CANCEL);
-        aCancelBtn->setFocus();
+        ModuleBase_Tools::setFocus(aCancelBtn, "XGUI_PropertyPanel::focusNextPrevChild()");
         isChangedFocus = true;
       }
     }
@@ -283,7 +283,7 @@ bool XGUI_PropertyPanel::setActiveWidget(ModuleBase_ModelWidget* theWidget)
 void XGUI_PropertyPanel::setFocusOnOkButton()
 {
   QToolButton* anOkBtn = findChild<QToolButton*>(PROP_PANEL_OK);
-  anOkBtn->setFocus();
+  ModuleBase_Tools::setFocus(anOkBtn, "XGUI_PropertyPanel::setFocusOnOkButton()");
 }
 
 void XGUI_PropertyPanel::setCancelEnabled(bool theEnabled)
index f8a81b03f701a6753fbb71fbde764f8fbfa7109e..145ddd36709e752b93dcbafcde9fe65f9cea503d 100755 (executable)
@@ -1079,8 +1079,8 @@ void XGUI_Workshop::showPropertyPanel()
   // in order to operation manager could process key events of the panel.
   // otherwise they are ignored. It happens only if the same(activateWindow) is
   // not happened by property panel activation(e.g. resume operation of Sketch)
-  myPropertyPanel->activateWindow();
-  myPropertyPanel->setFocus();
+  ModuleBase_Tools::activateWindow(myPropertyPanel, "XGUI_Workshop::showPropertyPanel()");
+  ModuleBase_Tools::setFocus(myPropertyPanel, "XGUI_Workshop::showPropertyPanel()");
 }
 
 //******************************************************
@@ -1099,8 +1099,8 @@ void XGUI_Workshop::hidePropertyPanel()
   // are processed by this console. For example Undo actions.
   // It is possible that this code is to be moved to NewGeom package
   QMainWindow* aDesktop = desktop();
-  aDesktop->activateWindow();
-  aDesktop->setFocus();
+  ModuleBase_Tools::activateWindow(aDesktop, "XGUI_Workshop::hidePropertyPanel()");
+  ModuleBase_Tools::setFocus(aDesktop, "XGUI_Workshop::showPropertyPanel()");
 }
 
 //******************************************************