From a622a0645ce281c70e275d2aa4a19e911a3b6781 Mon Sep 17 00:00:00 2001 From: Abdelrazak Younes Date: Tue, 25 Sep 2007 08:47:54 +0000 Subject: [PATCH] * BufferView::workAreaDispatch(): reconstruct the ViewMetricsInfo in any case when a mouse hovering event is detected. It seems that the anchor/offset_ref_ are modified behind our back... git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20483 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView.cpp | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/BufferView.cpp b/src/BufferView.cpp index a753500b22..0cef0e7ef3 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -1114,22 +1114,23 @@ bool BufferView::workAreaDispatch(FuncRequest const & cmd0) // if last metrics update was in singlepar mode, WorkArea::redraw() will // not expose the button for redraw. We adjust here the metrics dimension - // to enable a full redraw. - if (metrics_info_.update_strategy == SingleParUpdate) { - // Build temporary cursor. - TextMetrics & tm = text_metrics_[&buffer_.text()]; - tm.editXY(cur, cmd.x, cmd.y); - // collect cursor paragraph iter bounds - std::pair firstpm = tm.first(); - std::pair lastpm = tm.last(); - int y1 = firstpm.second->position() - firstpm.second->ascent(); - int y2 = lastpm.second->position() + lastpm.second->descent(); - metrics_info_ = ViewMetricsInfo(firstpm.first, lastpm.first, y1, y2, - FullScreenUpdate, buffer_.text().paragraphs().size()); - // Reinitialize anchor to first pit. - anchor_ref_ = firstpm.first; - offset_ref_ = -y1; - } + // to enable a full redraw in any case as this is not costly. + TextMetrics & tm = text_metrics_[&buffer_.text()]; + tm.editXY(cur, cmd.x, cmd.y); + // collect cursor paragraph iter bounds + std::pair firstpm = tm.first(); + std::pair lastpm = tm.last(); + int y1 = firstpm.second->position() - firstpm.second->ascent(); + int y2 = lastpm.second->position() + lastpm.second->descent(); + metrics_info_ = ViewMetricsInfo(firstpm.first, lastpm.first, y1, y2, + FullScreenUpdate, buffer_.text().paragraphs().size()); + // Reinitialize anchor to first pit. + anchor_ref_ = firstpm.first; + offset_ref_ = -y1; + LYXERR(Debug::PAINTING) + << "Mouse hover detected at: (" << cmd.x << ", " << cmd.y << ")" + << "\nTriggering redraw: y1: " << y1 << " y2: " << y2 + << " pit1: " << firstpm.first << " pit2: " << lastpm.first << endl; // This event (moving without mouse click) is not passed further. // This should be changed if it is further utilized. -- 2.39.2