X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_PropertyPanel.cpp;h=762bde305e20d92063faad3d91103046076213a0;hb=59a007784d1e103bcb352c515eb6feafa170f1ff;hp=197f794424f226b9917b150e837027d3799d704d;hpb=f34fba2433c87ccdf824df0dc8c34099054b1715;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_PropertyPanel.cpp b/src/XGUI/XGUI_PropertyPanel.cpp index 197f79442..762bde305 100755 --- a/src/XGUI/XGUI_PropertyPanel.cpp +++ b/src/XGUI/XGUI_PropertyPanel.cpp @@ -16,6 +16,9 @@ #include #include +#include +#include + #include #include #include @@ -118,6 +121,9 @@ void XGUI_PropertyPanel::setModelWidgets(const QList& t this, SLOT(activateNextWidget(ModuleBase_ModelWidget*))); connect(aWidget, SIGNAL(keyReleased(QKeyEvent*)), this, SIGNAL(keyReleased(QKeyEvent*))); + connect(aWidget, SIGNAL(enterClicked()), + this, SIGNAL(enterClicked())); + } } @@ -154,12 +160,19 @@ void XGUI_PropertyPanel::activateNextWidget(ModuleBase_ModelWidget* theWidget) activateWidget(NULL); return; } + ModelAPI_ValidatorsFactory* aValidators = ModelAPI_Session::get()->validators(); + QList::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) { - if ((*anIt)->focusTo()) { + + if (!aValidators->isCase(aCurrentWidget->feature(), aCurrentWidget->attributeID())) + continue; // this attribute is not participated in the current case + + if (aCurrentWidget->focusTo()) { return; } } @@ -182,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 { @@ -204,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 { @@ -214,7 +227,7 @@ bool XGUI_PropertyPanel::focusNextPrevChild(bool theIsNext) aFirstControl = myWidgets[i]->getControlAcceptingFocus(true); if (aFirstControl && aFirstControl->hasFocus()) { QToolButton* aCancelBtn = findChild(PROP_PANEL_CANCEL); - aCancelBtn->setFocus(); + ModuleBase_Tools::setFocus(aCancelBtn, "XGUI_PropertyPanel::focusNextPrevChild()"); isChangedFocus = true; } } @@ -233,13 +246,15 @@ void XGUI_PropertyPanel::activateNextWidget() void XGUI_PropertyPanel::activateWidget(ModuleBase_ModelWidget* theWidget) { + std::string aPreviosAttributeID; + if(myActiveWidget) + aPreviosAttributeID = myActiveWidget->attributeID(); + // Avoid activation of already actve widget. It could happen on focusIn event many times if (setActiveWidget(theWidget)) { - if (myActiveWidget) { - emit widgetActivated(myActiveWidget); - } else if (!isEditingMode()) { - emit noMoreWidgets(); - //setFocusOnOkButton(); + emit widgetActivated(myActiveWidget); + if (!myActiveWidget && !isEditingMode()) { + emit noMoreWidgets(aPreviosAttributeID); } } } @@ -268,7 +283,7 @@ bool XGUI_PropertyPanel::setActiveWidget(ModuleBase_ModelWidget* theWidget) void XGUI_PropertyPanel::setFocusOnOkButton() { QToolButton* anOkBtn = findChild(PROP_PANEL_OK); - anOkBtn->setFocus(); + ModuleBase_Tools::setFocus(anOkBtn, "XGUI_PropertyPanel::setFocusOnOkButton()"); } void XGUI_PropertyPanel::setCancelEnabled(bool theEnabled)