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
|
||||
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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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() {}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue