diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/sctablewidget.cpp | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/sctablewidget.cpp')
| -rw-r--r-- | scribus/sctablewidget.cpp | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/scribus/sctablewidget.cpp b/scribus/sctablewidget.cpp new file mode 100644 index 0000000..1edfac8 --- /dev/null +++ b/scribus/sctablewidget.cpp @@ -0,0 +1,96 @@ +/* +For general Scribus (>=1.3.2) copyright and licensing information please refer +to the COPYING file provided with the program. Following this notice may exist +a copyright and/or license notice that predates the release of Scribus 1.3.2 +for which a new license (GPL+exception) is in place. +*/ +#include "sctablewidget.h" + +//Widgets supported +#include <QComboBox> +#include <QCheckBox> +//Other includes + +ScTableWidget::ScTableWidget(QWidget *parent) : QTableWidget(parent) +{ +} + +ScTableWidget::ScTableWidget( int rows, int columns, QWidget *parent) : QTableWidget(rows, columns, parent) +{ +} + +ScTableWidget::~ScTableWidget() +{ +} + +bool ScTableWidget::eventFilter(QObject *obj, QEvent *event) +{ + if (event->type() == QEvent::FocusIn && obj->isWidgetType()) + { + QWidget* widget = qobject_cast<QWidget*>(obj); + if (widget) + { + QTableWidgetItem* item = itemAt(widget->pos()); + if (item) + { + setCurrentItem(item); + } + } + } + //emulation of cellChanged event from QTableWidget + if (event->type() == QEvent::FocusOut && obj->isWidgetType()) + { + int r=-1, c=-1; + QComboBox* combobox = qobject_cast<QComboBox*>(obj); + if (combobox) + { + if (widgetPositions.contains(combobox)) + { + r=widgetPositions.value(combobox).first; + c=widgetPositions.value(combobox).second; + } + } + else + { + QCheckBox* checkbox = qobject_cast<QCheckBox*>(obj); + if (checkbox) + { + if (widgetPositions.contains(checkbox)) + { + r=widgetPositions.value(checkbox).first; + c=widgetPositions.value(checkbox).second; + } + } + } + if (r!=-1 && c!=-1) + emit cellChanged(r,c); + } + return QTableWidget::eventFilter(obj, event); +} + +void ScTableWidget::setCellWidget(int row, int column, QWidget * widget) +{ + widget->installEventFilter(this); + QTableWidget::setCellWidget(row, column, widget); + widgetPositions.insert(widget, QPair<int, int>(row, column)); +} + +#if QT_VERSION >= 0x040300 +void ScTableWidget::removeCellWidget ( int row, int column ) +{ + QTableWidget::removeCellWidget(row, column); + QHash<QWidget*, QPair<int, int> >::const_iterator i = widgetPositions.constBegin(); + QWidget* t=NULL; + while (i != widgetPositions.constEnd()) + { + if (i.value().first==row && i.value().second==column) + { + t=i.key(); + break; + } + ++i; + } + if (t!=NULL) + widgetPositions.remove(t); +} +#endif |
