Allow panning with space on function sheet (#409)
This commit is contained in:
parent
d055d38243
commit
82324fdcb5
3 changed files with 38 additions and 10 deletions
|
@ -300,6 +300,7 @@ class DVAPI SpreadsheetViewer : public QDialog {
|
||||||
// QRect m_selectedCells; // x=col, y=row
|
// QRect m_selectedCells; // x=col, y=row
|
||||||
bool m_isComputingSize;
|
bool m_isComputingSize;
|
||||||
// const Orientation *m_orientation;
|
// const Orientation *m_orientation;
|
||||||
|
bool m_panningArmed = false;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Spreadsheet::FrameScroller m_frameScroller;
|
Spreadsheet::FrameScroller m_frameScroller;
|
||||||
|
@ -386,6 +387,8 @@ public:
|
||||||
bool isAutoPanning() const {
|
bool isAutoPanning() const {
|
||||||
return m_autoPanSpeed.x() != 0 || m_autoPanSpeed.y() != 0;
|
return m_autoPanSpeed.x() != 0 || m_autoPanSpeed.y() != 0;
|
||||||
}
|
}
|
||||||
|
void setPanningArmed(bool panningArmed) { m_panningArmed = panningArmed; }
|
||||||
|
bool getPanningArmed() { return m_panningArmed; }
|
||||||
|
|
||||||
int xToColumn(int x) const;
|
int xToColumn(int x) const;
|
||||||
int yToRow(int y) const;
|
int yToRow(int y) const;
|
||||||
|
@ -433,8 +436,11 @@ protected:
|
||||||
void hideEvent(QHideEvent *) override;
|
void hideEvent(QHideEvent *) override;
|
||||||
void resizeEvent(QResizeEvent *event) override;
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
void keyPressEvent(QKeyEvent *event) override;
|
void keyPressEvent(QKeyEvent *event) override;
|
||||||
|
void keyReleaseEvent(QKeyEvent *event) override;
|
||||||
void wheelEvent(QWheelEvent *event) override;
|
void wheelEvent(QWheelEvent *event) override;
|
||||||
void timerEvent(QTimerEvent *) override;
|
void timerEvent(QTimerEvent *) override;
|
||||||
|
void enterEvent(QEvent *) override;
|
||||||
|
void leaveEvent(QEvent *) override;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setRowCount(int rowCount);
|
void setRowCount(int rowCount);
|
||||||
|
|
|
@ -615,7 +615,9 @@ public:
|
||||||
|
|
||||||
bool hasVisibleChildColumn(const TStageObject *obj, const TXsheet *xsh) {
|
bool hasVisibleChildColumn(const TStageObject *obj, const TXsheet *xsh) {
|
||||||
if (!obj->getId().isColumn()) return false; // just in case
|
if (!obj->getId().isColumn()) return false; // just in case
|
||||||
if (xsh->getColumn(obj->getId().getIndex())->isCamstandVisible()) return true;
|
if (xsh->getColumn(obj->getId().getIndex()) &&
|
||||||
|
xsh->getColumn(obj->getId().getIndex())->isCamstandVisible())
|
||||||
|
return true;
|
||||||
for (const auto child : obj->getChildren()) {
|
for (const auto child : obj->getChildren()) {
|
||||||
if (hasVisibleChildColumn(child, xsh)) return true;
|
if (hasVisibleChildColumn(child, xsh)) return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -247,7 +247,7 @@ void GenericPanel::paintEvent(QPaintEvent *e) {
|
||||||
|
|
||||||
void GenericPanel::mousePressEvent(QMouseEvent *e) {
|
void GenericPanel::mousePressEvent(QMouseEvent *e) {
|
||||||
assert(!m_dragTool);
|
assert(!m_dragTool);
|
||||||
if (e->button() == Qt::MidButton)
|
if (e->button() == Qt::MidButton || m_viewer->getPanningArmed())
|
||||||
m_dragTool = new PanTool(this);
|
m_dragTool = new PanTool(this);
|
||||||
else
|
else
|
||||||
m_dragTool = createDragTool(e);
|
m_dragTool = createDragTool(e);
|
||||||
|
@ -806,13 +806,13 @@ void SpreadsheetViewer::wheelEvent(QWheelEvent *event) {
|
||||||
|
|
||||||
default: // Qt::MouseEventSynthesizedByQt,
|
default: // Qt::MouseEventSynthesizedByQt,
|
||||||
// Qt::MouseEventSynthesizedByApplication
|
// Qt::MouseEventSynthesizedByApplication
|
||||||
{
|
{
|
||||||
std::cout << "not supported wheelEvent.source(): "
|
std::cout << "not supported wheelEvent.source(): "
|
||||||
"Qt::MouseEventSynthesizedByQt, "
|
"Qt::MouseEventSynthesizedByQt, "
|
||||||
"Qt::MouseEventSynthesizedByApplication"
|
"Qt::MouseEventSynthesizedByApplication"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // end switch
|
} // end switch
|
||||||
}
|
}
|
||||||
|
@ -833,7 +833,10 @@ m_dragTool->onDrag(&mouseEvent);
|
||||||
void SpreadsheetViewer::keyPressEvent(QKeyEvent *e) {
|
void SpreadsheetViewer::keyPressEvent(QKeyEvent *e) {
|
||||||
int frameCount = m_rowCount;
|
int frameCount = m_rowCount;
|
||||||
int row = m_frameHandle->getFrame();
|
int row = m_frameHandle->getFrame();
|
||||||
|
if (e->key() == Qt::Key_Space) {
|
||||||
|
m_panningArmed = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (e->key() == Qt::Key_Up &&
|
if (e->key() == Qt::Key_Up &&
|
||||||
row > 0) { // Row = frame precedente a quello settato
|
row > 0) { // Row = frame precedente a quello settato
|
||||||
m_frameHandle->setFrame(row - 1);
|
m_frameHandle->setFrame(row - 1);
|
||||||
|
@ -883,6 +886,23 @@ void SpreadsheetViewer::keyPressEvent(QKeyEvent *e) {
|
||||||
scroll(QPoint(0, deltaY));
|
scroll(QPoint(0, deltaY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void SpreadsheetViewer::keyReleaseEvent(QKeyEvent *event) {
|
||||||
|
if (event->key() == Qt::Key_Space && !event->isAutoRepeat())
|
||||||
|
m_panningArmed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void SpreadsheetViewer::enterEvent(QEvent *) { m_panningArmed = false; }
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void SpreadsheetViewer::leaveEvent(QEvent *) { m_panningArmed = false; }
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
void SpreadsheetViewer::frameSwitched() {}
|
void SpreadsheetViewer::frameSwitched() {}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue