#3076 Stop key press event in time step interval causing filtered dialog to close.

This commit is contained in:
Gaute Lindkvist 2018-06-21 14:51:42 +02:00
parent a888ab0160
commit 9e7dd7d4ea
3 changed files with 62 additions and 4 deletions

View File

@ -26,6 +26,7 @@
#include "RimReservoirCellResultsStorage.h" #include "RimReservoirCellResultsStorage.h"
#include "RimTools.h" #include "RimTools.h"
#include "cafPdmUiLineEditor.h"
#include "cafPdmUiListEditor.h" #include "cafPdmUiListEditor.h"
#include "cafPdmUiPushButtonEditor.h" #include "cafPdmUiPushButtonEditor.h"
@ -67,6 +68,7 @@ RimTimeStepFilter::RimTimeStepFilter()
CAF_PDM_InitField(&m_lastTimeStep, "LastTimeStep", 0, "Last Time Step", "", "", ""); CAF_PDM_InitField(&m_lastTimeStep, "LastTimeStep", 0, "Last Time Step", "", "", "");
CAF_PDM_InitField(&m_interval, "Interval", 1, "Interval", "", "", ""); CAF_PDM_InitField(&m_interval, "Interval", 1, "Interval", "", "", "");
m_interval.uiCapability()->setUiEditorTypeName(caf::PdmUiLineEditor::uiEditorTypeName());
CAF_PDM_InitField(&m_timeStepNamesFromFile, "TimeStepsFromFile", std::vector<QString>(), "TimeSteps From File", "", "", ""); CAF_PDM_InitField(&m_timeStepNamesFromFile, "TimeStepsFromFile", std::vector<QString>(), "TimeSteps From File", "", "", "");
CAF_PDM_InitField(&m_dateFormat, "DateFormat", QString("yyyy-MM-dd"), "Date Format", "", "", ""); CAF_PDM_InitField(&m_dateFormat, "DateFormat", QString("yyyy-MM-dd"), "Date Format", "", "", "");
@ -259,6 +261,14 @@ void RimTimeStepFilter::defineEditorAttribute(const caf::PdmFieldHandle* field,
attrib->m_buttonText = "Reload Case"; attrib->m_buttonText = "Reload Case";
} }
} }
else if (field == &m_interval)
{
caf::PdmUiLineEditorAttribute* attrib = dynamic_cast<caf::PdmUiLineEditorAttribute*>(attribute);
if (attrib)
{
attrib->avoidSendingEnterEventToParentWidget = true;
}
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -46,9 +46,9 @@
#include "cafSelectionManager.h" #include "cafSelectionManager.h"
#include <QApplication> #include <QApplication>
#include <QKeyEvent>
#include <QIntValidator> #include <QIntValidator>
#include <QLabel> #include <QLabel>
#include <QLineEdit>
#include <QMainWindow> #include <QMainWindow>
#include <QMessageBox> #include <QMessageBox>
#include <QPalette> #include <QPalette>
@ -195,6 +195,8 @@ void PdmUiLineEditor::configureAndUpdateUi(const QString& uiConfigName)
{ {
m_lineEdit->setValidator(new QIntValidator(leab.minValue, leab.maxValue, this)); m_lineEdit->setValidator(new QIntValidator(leab.minValue, leab.maxValue, this));
} }
m_lineEdit->setAvoidSendingEnterEventToParentWidget(leab.avoidSendingEnterEventToParentWidget);
} }
{ {
@ -259,7 +261,7 @@ void PdmUiLineEditor::configureAndUpdateUi(const QString& uiConfigName)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QWidget* PdmUiLineEditor::createEditorWidget(QWidget * parent) QWidget* PdmUiLineEditor::createEditorWidget(QWidget * parent)
{ {
m_lineEdit = new QLineEdit(parent); m_lineEdit = new PdmUiLineEdit(parent);
connect(m_lineEdit, SIGNAL(editingFinished()), this, SLOT(slotEditingFinished())); connect(m_lineEdit, SIGNAL(editingFinished()), this, SLOT(slotEditingFinished()));
@ -319,4 +321,37 @@ bool PdmUiLineEditor::isMultipleFieldsWithSameKeywordSelected(PdmFieldHandle* ed
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
PdmUiLineEdit::PdmUiLineEdit(QWidget* parent)
: QLineEdit(parent), m_avoidSendingEnterEvent(false)
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiLineEdit::setAvoidSendingEnterEventToParentWidget(bool avoidSendingEnterEvent)
{
m_avoidSendingEnterEvent = avoidSendingEnterEvent;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiLineEdit::keyPressEvent(QKeyEvent * event)
{
QLineEdit::keyPressEvent(event);
if (m_avoidSendingEnterEvent)
{
if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return)
{
// accept enter/return events so they won't
// be ever propagated to the parent dialog..
event->accept();
}
}
}
} // end namespace caf } // end namespace caf

View File

@ -58,12 +58,14 @@ class PdmUiLineEditorAttribute : public PdmUiEditorAttribute
public: public:
PdmUiLineEditorAttribute() PdmUiLineEditorAttribute()
{ {
avoidSendingEnterEventToParentWidget = false;
useRangeValidator = false; useRangeValidator = false;
minValue = 0; minValue = 0;
maxValue = 0; maxValue = 0;
} }
public: public:
bool avoidSendingEnterEventToParentWidget;
bool useRangeValidator; bool useRangeValidator;
int minValue; int minValue;
int maxValue; int maxValue;
@ -97,6 +99,17 @@ public:
QString m_displayString; QString m_displayString;
}; };
class PdmUiLineEdit : public QLineEdit
{
Q_OBJECT
public:
PdmUiLineEdit(QWidget* parent);
void setAvoidSendingEnterEventToParentWidget(bool avoidSendingEnter);
protected:
void keyPressEvent(QKeyEvent* event);
private:
bool m_avoidSendingEnterEvent;
};
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
@ -122,8 +135,8 @@ private:
bool isMultipleFieldsWithSameKeywordSelected(PdmFieldHandle* editorField) const; bool isMultipleFieldsWithSameKeywordSelected(PdmFieldHandle* editorField) const;
private: private:
QPointer<QLineEdit> m_lineEdit; QPointer<PdmUiLineEdit> m_lineEdit;
QPointer<QLabel> m_label; QPointer<QLabel> m_label;
}; };