diff --git a/toonz/sources/toonz/xshcolumnviewer.cpp b/toonz/sources/toonz/xshcolumnviewer.cpp index d123d5d7..3b80841a 100644 --- a/toonz/sources/toonz/xshcolumnviewer.cpp +++ b/toonz/sources/toonz/xshcolumnviewer.cpp @@ -1923,9 +1923,15 @@ using namespace DVGui; ColumnTransparencyPopup::ColumnTransparencyPopup(XsheetViewer *viewer, QWidget *parent) - : QWidget(parent, Qt::Popup), m_viewer(viewer), m_lockBtn(nullptr) { + : QWidget(parent, Qt::Popup) + , m_viewer(viewer) + , m_lockBtn(nullptr) + , m_keepClosed(false) { setFixedWidth(8 + 78 + 8 + 100 + 8 + 8 + 8 + 7); + m_keepClosedTimer = new QTimer(this); + m_keepClosedTimer->setSingleShot(true); + m_slider = new QSlider(Qt::Horizontal, this); m_slider->setMinimum(1); m_slider->setMaximum(100); @@ -2019,6 +2025,9 @@ m_value->setFont(font);*/ ret = ret && connect(m_lockBtn, SIGNAL(clicked(bool)), this, SLOT(onLockButtonClicked(bool))); + ret = ret && connect(m_keepClosedTimer, SIGNAL(timeout()), this, + SLOT(resetKeepClosed())); + assert(ret); } @@ -2106,6 +2115,16 @@ void ColumnTransparencyPopup::mouseReleaseEvent(QMouseEvent *e) { // hide(); } +void ColumnTransparencyPopup::hideEvent(QHideEvent *e) { + m_keepClosedTimer->start(300); + m_keepClosed = true; +} + +void ColumnTransparencyPopup::resetKeepClosed() { + if (m_keepClosedTimer) m_keepClosedTimer->stop(); + m_keepClosed = false; +} + //------------------------------------------------------------------------------ SoundColumnPopup::SoundColumnPopup(QWidget *parent) @@ -2214,6 +2233,10 @@ void ColumnArea::openTransparencyPopup() { TXshColumn *column = m_viewer->getXsheet()->getColumn(m_col); if (!column || column->isEmpty()) return; + if (m_columnTransparencyPopup->getcolumn() == column && + m_columnTransparencyPopup->isKeepClosed()) + return; + if (!column->isCamstandVisible()) { column->setCamstandVisible(true); TApp::instance()->getCurrentScene()->notifySceneChanged(); diff --git a/toonz/sources/toonz/xshcolumnviewer.h b/toonz/sources/toonz/xshcolumnviewer.h index 8f8b5095..ee392717 100644 --- a/toonz/sources/toonz/xshcolumnviewer.h +++ b/toonz/sources/toonz/xshcolumnviewer.h @@ -222,13 +222,21 @@ class ColumnTransparencyPopup final : public QWidget { XsheetViewer *m_viewer; QPushButton *m_lockBtn; + QTimer *m_keepClosedTimer; + bool m_keepClosed; + public: ColumnTransparencyPopup(XsheetViewer *viewer, QWidget *parent); void setColumn(TXshColumn *column); + TXshColumn *getcolumn() { return m_column; } + + bool isKeepClosed() { return m_keepClosed; } + void setKeepClosed(bool keepClosed) { m_keepClosed = keepClosed; } protected: // void mouseMoveEvent ( QMouseEvent * e ); void mouseReleaseEvent(QMouseEvent *e) override; + void hideEvent(QHideEvent *e) override; protected slots: void onSliderReleased(); @@ -238,6 +246,8 @@ protected slots: void onFilterColorChanged(int id); void onLockButtonClicked(bool on); + + void resetKeepClosed(); }; class SoundColumnPopup final : public QWidget {