Allow tag actions on non-current frame

This commit is contained in:
manongjohn 2022-12-22 10:11:56 -05:00
parent ddbd6ab197
commit 44601581b3
4 changed files with 13 additions and 2 deletions

View file

@ -2755,7 +2755,8 @@ public:
ToggleTaggedFrame() : MenuItemHandler(MI_ToggleTaggedFrame) {} ToggleTaggedFrame() : MenuItemHandler(MI_ToggleTaggedFrame) {}
void execute() override { void execute() override {
TApp *app = TApp::instance(); TApp *app = TApp::instance();
int frame = app->getCurrentFrame()->getFrame(); int frame = app->getCurrentXsheetViewer()->getContextMenuRow();
if (frame < 0) frame = app->getCurrentFrame()->getFrame();
assert(frame >= 0); assert(frame >= 0);
TXsheet *xsh = app->getCurrentXsheet()->getXsheet(); TXsheet *xsh = app->getCurrentXsheet()->getXsheet();
@ -2777,7 +2778,8 @@ public:
EditTaggedFrame() : MenuItemHandler(MI_EditTaggedFrame) {} EditTaggedFrame() : MenuItemHandler(MI_EditTaggedFrame) {}
void execute() override { void execute() override {
TApp *app = TApp::instance(); TApp *app = TApp::instance();
int frame = app->getCurrentFrame()->getFrame(); int frame = app->getCurrentXsheetViewer()->getContextMenuRow();
if (frame < 0) frame = app->getCurrentFrame()->getFrame();
assert(frame >= 0); assert(frame >= 0);
TXsheet *xsh = app->getCurrentXsheet()->getXsheet(); TXsheet *xsh = app->getCurrentXsheet()->getXsheet();

View file

@ -1285,6 +1285,8 @@ public:
QList<int> availableFramesPerPage(); QList<int> availableFramesPerPage();
void zoomToFramesPerPage(int frames); void zoomToFramesPerPage(int frames);
int getContextMenuRow() { return m_rowArea->getContextMenuRow(); }
protected: protected:
void scrollToColumn(int col); void scrollToColumn(int col);
void scrollToHorizontalRange(int x0, int x1); void scrollToHorizontalRange(int x0, int x1);

View file

@ -1297,6 +1297,9 @@ void RowArea::mouseReleaseEvent(QMouseEvent *event) {
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void RowArea::contextMenuEvent(QContextMenuEvent *event) { void RowArea::contextMenuEvent(QContextMenuEvent *event) {
TPoint pos(event->pos().x(), event->pos().y());
m_contextMenuRow = m_viewer->xyToPosition(pos).frame();
OnionSkinMask osMask = OnionSkinMask osMask =
TApp::instance()->getCurrentOnionSkin()->getOnionSkinMask(); TApp::instance()->getCurrentOnionSkin()->getOnionSkinMask();

View file

@ -44,6 +44,8 @@ class RowArea final : public QWidget {
// panning by middle-drag // panning by middle-drag
bool m_isPanning; bool m_isPanning;
int m_contextMenuRow;
void drawRows(QPainter &p, int r0, int r1); void drawRows(QPainter &p, int r0, int r1);
void drawPlayRangeBackground(QPainter &p, int r0, int r1); void drawPlayRangeBackground(QPainter &p, int r0, int r1);
void drawPlayRange(QPainter &p, int r0, int r1); void drawPlayRange(QPainter &p, int r0, int r1);
@ -71,6 +73,8 @@ public:
#endif #endif
~RowArea(); ~RowArea();
int getContextMenuRow() { return m_contextMenuRow; }
protected: protected:
void paintEvent(QPaintEvent *) override; void paintEvent(QPaintEvent *) override;