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