Allow panning with space on function sheet (#409)

This commit is contained in:
Jeremy Bullock 2020-10-23 23:18:38 -06:00 committed by GitHub
parent d055d38243
commit 82324fdcb5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 10 deletions

View file

@ -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);

View file

@ -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;
} }

View file

@ -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() {}
/* /*