diff --git a/toonz/sources/toonz/xshcellviewer.cpp b/toonz/sources/toonz/xshcellviewer.cpp index 2818c491..0db026ee 100644 --- a/toonz/sources/toonz/xshcellviewer.cpp +++ b/toonz/sources/toonz/xshcellviewer.cpp @@ -1791,7 +1791,17 @@ void CellArea::drawDragHandle(QPainter &p, bool isStart, const QPoint &xy, dragHandleRect.adjust(0, 1, 0, 0); else dragHandleRect.adjust(1, 0, 0, 0); + } else { + if (xy.x() > 1 && !m_viewer->orientation()->isVerticalTimeline()) + dragHandleRect.adjust(-1, 0, 0, 0); + else if (xy.y() > 1 && m_viewer->orientation()->isVerticalTimeline()) + dragHandleRect.adjust(0, -1, 0, 0); } + + // Adjust for 1st row + if (xy.x() <= 1 && !m_viewer->orientation()->isVerticalTimeline()) + dragHandleRect.adjust(0, 0, -1, 0); + p.fillRect(dragHandleRect, QBrush(sideColor)); } @@ -1799,10 +1809,17 @@ void CellArea::drawDragHandle(QPainter &p, bool isStart, const QPoint &xy, void CellArea::drawEndOfDragHandle(QPainter &p, bool isEnd, const QPoint &xy, const QColor &cellColor) const { if (!isEnd) return; + + QPoint lxy = xy; + + // Adjust left for 1st row + if (lxy.x() <= 1 && !m_viewer->orientation()->isVerticalTimeline()) + lxy.setX(lxy.x() - 1); + QPoint frameAdj = m_viewer->getFrameZoomAdjustment(); QPainterPath corner = m_viewer->orientation() ->path(PredefinedPath::DRAG_HANDLE_CORNER) - .translated(xy - frameAdj); + .translated(lxy - frameAdj); p.fillPath(corner, QBrush(cellColor)); } @@ -1811,17 +1828,36 @@ void CellArea::drawLockedDottedLine(QPainter &p, bool isLocked, bool isStart, const QPoint &xy, const QColor &cellColor) const { if (!isLocked) return; + + QPoint lxy = xy; + + int adjEndX = 0, adjEndY = 0; + if (!m_viewer->orientation()->isVerticalTimeline()) { + if (lxy.x() <= 1) { + lxy.setX(lxy.x() + 1); // Adjust for 1st row + adjEndX = -2; + } else + adjEndX = -1; + } else { + if (lxy.y() <= 1) { + lxy.setY(lxy.y() + 1); + adjEndY = -2; + } else + adjEndY = -1; + } + p.setPen(QPen(cellColor, 2, Qt::DotLine)); QPoint frameAdj = m_viewer->getFrameZoomAdjustment(); QLine dottedLine = - m_viewer->orientation()->line(PredefinedLine::LOCKED).translated(xy); + m_viewer->orientation()->line(PredefinedLine::LOCKED).translated(lxy); if (isStart) { if (m_viewer->orientation()->isVerticalTimeline()) dottedLine.setP1(QPoint(dottedLine.x1(), dottedLine.y1() + 2)); else dottedLine.setP1(QPoint(dottedLine.x1() + 2, dottedLine.y1())); } - dottedLine.setP2(QPoint(dottedLine.x2(), dottedLine.y2()) - frameAdj); + dottedLine.setP2(QPoint(dottedLine.x2() + adjEndX, dottedLine.y2() + adjEndY) - + frameAdj); p.drawLine(dottedLine); }