LineEdit no longer actually handles motion, it simply indicates which action was taken to cause it to lose focus (e.g. which key was pressed). It's up to the client code to determine what this means. This allows significant consolidation of keyboard-handling logic, and the implementation of more extensive keyboard navigation features. New keyboard shortcuts include a tab counter to implement auto-return, plus Ctrl->Arrow, End, Home, Ctrl-End, and Ctrl-Home, matching the behavior of OpenOffice, LibreOffice, etc. Block selection via keyboard has also been added by holding down the shift key during navigation with the arrow keys (this also works in combination with the Ctrl modifier for region navigation).
55 lines
2.1 KiB
C++
55 lines
2.1 KiB
C++
/***************************************************************************
|
|
* Copyright (c) 2015 Eivind Kvedalen <eivind@kvedalen.name> *
|
|
* *
|
|
* This file is part of the FreeCAD CAx development system. *
|
|
* *
|
|
* This library is free software; you can redistribute it and/or *
|
|
* modify it under the terms of the GNU Library General Public *
|
|
* License as published by the Free Software Foundation; either *
|
|
* version 2 of the License, or (at your option) any later version. *
|
|
* *
|
|
* This library is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU Library General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU Library General Public *
|
|
* License along with this library; see the file COPYING.LIB. If not, *
|
|
* write to the Free Software Foundation, Inc., 59 Temple Place, *
|
|
* Suite 330, Boston, MA 02111-1307, USA *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef LINEEDIT_H
|
|
#define LINEEDIT_H
|
|
|
|
#include <Gui/ExpressionCompleter.h>
|
|
#include <QWidget>
|
|
#include <QModelIndex>
|
|
|
|
namespace SpreadsheetGui {
|
|
|
|
class LineEdit : public Gui::ExpressionLineEdit
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit LineEdit(QWidget *parent = 0);
|
|
|
|
bool event(QEvent *event);
|
|
|
|
Q_SIGNALS:
|
|
void finishedWithKey(int key, Qt::KeyboardModifiers modifiers);
|
|
|
|
private:
|
|
bool eventFilter(QObject* object, QEvent* event);
|
|
|
|
|
|
private:
|
|
int lastKeyPressed;
|
|
Qt::KeyboardModifiers lastModifiers;
|
|
};
|
|
|
|
}
|
|
|
|
#endif // LINEEDIT_H
|