diff --git a/app/widget/viewer/viewerdisplay.cpp b/app/widget/viewer/viewerdisplay.cpp index a02e01d03..05178a69f 100644 --- a/app/widget/viewer/viewerdisplay.cpp +++ b/app/widget/viewer/viewerdisplay.cpp @@ -744,7 +744,7 @@ void ViewerDisplayWidget::OpenTextGizmo(TextGizmo *text, QMouseEvent *event) // Allow widget to take keyboard focus inner_widget()->setFocusPolicy(Qt::StrongFocus); - inner_widget()->setFocus(); + inner_widget()->setMouseTracking(true); connect(qApp, &QApplication::focusChanged, this, &ViewerDisplayWidget::FocusChanged); @@ -824,6 +824,15 @@ bool ViewerDisplayWidget::OnMouseMove(QMouseEvent *event) } else if (text_edit_) { + if (event->buttons() == Qt::NoButton) { + QPointF mapped = text_transform_inverted_.map(event->pos()) - text_edit_pos_; + if (mapped.x() >= 0 && mapped.y() >= 0 && mapped.x() < text_edit_->width() && mapped.y() < text_edit_->height()) { + setCursor(Qt::IBeamCursor); + } else { + unsetCursor(); + } + } + return ForwardMouseEventToTextEdit(event); } else if (add_band_) { @@ -1242,7 +1251,7 @@ void ViewerDisplayWidget::TextEditDestroyed() emit gizmo->Deactivated(); text_edit_ = nullptr; text_toolbar_ = nullptr; - inner_widget()->releaseKeyboard(); + inner_widget()->setMouseTracking(false); inner_widget()->setFocusPolicy(Qt::NoFocus); disconnect(qApp, &QApplication::focusChanged, this, &ViewerDisplayWidget::FocusChanged); }