Fix Tab key edition on the Equipment table [patch]
Tomaz Canabrava
tcanabrava at kde.org
Tue Oct 15 09:38:18 UTC 2013
dirk asked me for the diff, here it is.
On Tue, Oct 15, 2013 at 1:25 PM, Tomaz Canabrava <tcanabrava at kde.org> wrote:
> The following changes since commit
> e93f96a8ebfb38696c964f9a0af28eadccf8d1a2:
>
> Add test dive with tank pressure sensor information (2013-10-15 04:12:16
> -0700)
>
> are available in the git repository at:
>
> tabOnEquipmentEdit
>
> for you to fetch changes up to 28b458e8d9dd774b4d54d97788d7d00e650cc328:
>
> Fixed the Tab behavior on the QCombobox Delegate (2013-10-15 13:11:35
> -0300)
>
> ----------------------------------------------------------------
> Tomaz Canabrava (1):
> Fixed the Tab behavior on the QCombobox Delegate
>
> qt-ui/modeldelegates.cpp | 18 +++++++++++++++++-
> qt-ui/modeldelegates.h | 1 +
> 2 files changed, 18 insertions(+), 1 deletion(-)
>
> diff --git a/qt-ui/modeldelegates.cpp b/qt-ui/modeldelegates.cpp
> index a4f457f..d1e2839 100644
> --- a/qt-ui/modeldelegates.cpp
> +++ b/qt-ui/modeldelegates.cpp
> @@ -22,6 +22,7 @@
> // Gets the index of the model in the currentRow and column.
> // currCombo is defined below.
> #define IDX( XX ) mymodel->index(currCombo.currRow, XX)
> +static bool keyboardFinished = false;
>
> StarWidgetsDelegate::StarWidgetsDelegate(QWidget* parent):
> QStyledItemDelegate(parent),
> @@ -91,11 +92,12 @@ QWidget* ComboBoxDelegate::createEditor(QWidget*
> parent, const QStyleOptionViewI
> comboDelegate->lineEdit()->installEventFilter(
> const_cast<QObject*>(qobject_cast<const QObject*>(this)));
> comboDelegate->view()->installEventFilter(
> const_cast<QObject*>(qobject_cast<const QObject*>(this)));
> connect(comboDelegate, SIGNAL(highlighted(QString)), this,
> SLOT(testActivation(QString)));
> - connect(comboDelegate->lineEdit(), SIGNAL(editingFinished()),
> this, SLOT(testActivation()));
> connect(comboDelegate, SIGNAL(activated(QString)), this,
> SLOT(fakeActivation()));
> + connect(this,
> SIGNAL(closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)), this,
> SLOT(fixTabBehavior()));
> currCombo.comboEditor = comboDelegate;
> currCombo.currRow = index.row();
> currCombo.model = const_cast<QAbstractItemModel*>(index.model());
> + keyboardFinished = false;
>
> // Current display of things on Gnome3 looks like shit, so
> // let`s fix that.
> @@ -137,6 +139,16 @@ void ComboBoxDelegate::fakeActivation(){
> QStyledItemDelegate::eventFilter(currCombo.comboEditor, &ev);
> }
>
> +// This 'reverts' the model data to what we actually choosed,
> +// becaus e a TAB is being understood by Qt as 'cancel' while
> +// we are on a QComboBox ( but not on a QLineEdit.
> +void ComboBoxDelegate::fixTabBehavior()
> +{
> + if(keyboardFinished){
> + setModelData(0,0,QModelIndex());
> + }
> +}
> +
> bool ComboBoxDelegate::eventFilter(QObject* object, QEvent* event)
> {
> // Reacts on Key_UP and Key_DOWN to show the QComboBox - list of
> choices.
> @@ -147,6 +159,10 @@ bool ComboBoxDelegate::eventFilter(QObject* object,
> QEvent* event)
> currCombo.ignoreSelection = true;
> currCombo.comboEditor->showPopup();
> }
> + if(ev->key() == Qt::Key_Tab || ev->key() ==
> Qt::Key_Enter || ev->key() == Qt::Key_Return){
> + currCombo.activeText =
> currCombo.comboEditor->currentText();
> + keyboardFinished = true;
> + }
> }
> else{ // the 'Drop Down Menu' part.
> QKeyEvent *ev = static_cast<QKeyEvent*>(event);
> diff --git a/qt-ui/modeldelegates.h b/qt-ui/modeldelegates.h
> index a16e472..9fade15 100644
> --- a/qt-ui/modeldelegates.h
> +++ b/qt-ui/modeldelegates.h
> @@ -27,6 +27,7 @@ public slots:
> void testActivation(const QString& currString = QString());
> //HACK: try to get rid of this in the future.
> void fakeActivation();
> + void fixTabBehavior();
> virtual void revertModelData(QWidget* widget,
> QAbstractItemDelegate::EndEditHint hint) = 0;
> protected:
> QAbstractItemModel *model;
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hohndel.org/pipermail/subsurface/attachments/20131015/25867467/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tabOnEquipmentEdit.diff
Type: application/octet-stream
Size: 2925 bytes
Desc: not available
URL: <http://lists.hohndel.org/pipermail/subsurface/attachments/20131015/25867467/attachment.obj>
More information about the subsurface
mailing list