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
bool m_isComputingSize;
// const Orientation *m_orientation;
bool m_panningArmed = false;
protected:
Spreadsheet::FrameScroller m_frameScroller;
@ -386,6 +387,8 @@ public:
bool isAutoPanning() const {
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 yToRow(int y) const;
@ -433,8 +436,11 @@ protected:
void hideEvent(QHideEvent *) override;
void resizeEvent(QResizeEvent *event) override;
void keyPressEvent(QKeyEvent *event) override;
void keyReleaseEvent(QKeyEvent *event) override;
void wheelEvent(QWheelEvent *event) override;
void timerEvent(QTimerEvent *) override;
void enterEvent(QEvent *) override;
void leaveEvent(QEvent *) override;
public slots:
void setRowCount(int rowCount);

View file

@ -615,7 +615,9 @@ public:
bool hasVisibleChildColumn(const TStageObject *obj, const TXsheet *xsh) {
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()) {
if (hasVisibleChildColumn(child, xsh)) return true;
}

View file

@ -247,7 +247,7 @@ void GenericPanel::paintEvent(QPaintEvent *e) {
void GenericPanel::mousePressEvent(QMouseEvent *e) {
assert(!m_dragTool);
if (e->button() == Qt::MidButton)
if (e->button() == Qt::MidButton || m_viewer->getPanningArmed())
m_dragTool = new PanTool(this);
else
m_dragTool = createDragTool(e);
@ -806,13 +806,13 @@ void SpreadsheetViewer::wheelEvent(QWheelEvent *event) {
default: // Qt::MouseEventSynthesizedByQt,
// Qt::MouseEventSynthesizedByApplication
{
std::cout << "not supported wheelEvent.source(): "
"Qt::MouseEventSynthesizedByQt, "
"Qt::MouseEventSynthesizedByApplication"
<< std::endl;
break;
}
{
std::cout << "not supported wheelEvent.source(): "
"Qt::MouseEventSynthesizedByQt, "
"Qt::MouseEventSynthesizedByApplication"
<< std::endl;
break;
}
} // end switch
}
@ -833,7 +833,10 @@ m_dragTool->onDrag(&mouseEvent);
void SpreadsheetViewer::keyPressEvent(QKeyEvent *e) {
int frameCount = m_rowCount;
int row = m_frameHandle->getFrame();
if (e->key() == Qt::Key_Space) {
m_panningArmed = true;
return;
}
if (e->key() == Qt::Key_Up &&
row > 0) { // Row = frame precedente a quello settato
m_frameHandle->setFrame(row - 1);
@ -883,6 +886,23 @@ void SpreadsheetViewer::keyPressEvent(QKeyEvent *e) {
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() {}
/*