GUI: doc text copy to clipboard: result table tooltip set on middle of row, not on mouse cursor

This commit is contained in:
Jean-Francois Dockes 2021-03-17 18:31:12 +01:00
parent 5668cec4bc
commit 572e37c36f
2 changed files with 25 additions and 23 deletions

View File

@ -20,7 +20,6 @@
#include <qapplication.h>
#include <qmenu.h>
#include <qclipboard.h>
#include <QToolTip>
#include <QCursor>
#include <QTimer>
@ -182,30 +181,10 @@ void copyURL(const Rcl::Doc &doc)
}
void copyText(Rcl::Doc &doc, RclMain *rclmain)
void copyText(Rcl::Doc &doc, RclMain *)
{
QString msg(QApplication::translate("RclMainBase", "Could not extract or copy text"));
if (rcldb->getDocRawText(doc)) {
QApplication::clipboard()->setText(u8s2qs(doc.text));
msg = QApplication::translate("RclMainBase",
"%1 bytes copied to clipboard").arg(doc.text.size());
}
if (rclmain) {
// Feedback was requested: tray messages are too ennoying, not
// everybody displays the status bar, and the tool tip only
// works when the copy is triggered through a shortcut (else,
// it appears that the mouse event cancels it and it's not
// shown). So let's do status bar if visible else tooltip.
// Menu trigger with no status bar -> no feedback...
// rclmain->showTrayMessage(msg);
if (rclmain->statusBar()->isVisible()) {
rclmain->statusBar()->showMessage(msg, 1000);
} else {
QToolTip::showText(QCursor::pos(), msg);
QTimer::singleShot(1000, rclmain, SLOT(hideToolTip()));
}
}
}

View File

@ -41,6 +41,7 @@
#include <QTimer>
#include <QKeyEvent>
#include <QClipboard>
#include <QToolTip>
#include "recoll.h"
#include "docseq.h"
@ -1255,8 +1256,30 @@ void ResTable::menuCopyURL()
void ResTable::menuCopyText()
{
if (m_detaildocnum >= 0 && rcldb)
if (m_detaildocnum >= 0 && rcldb) {
ResultPopup::copyText(m_detaildoc, m_rclmain);
if (m_rclmain) {
auto msg = tr("%1 bytes copied to clipboard").arg(m_detaildoc.text.size());
// Feedback was requested: tray messages are too ennoying, not
// everybody displays the status bar, and the tool tip only
// works when the copy is triggered through a shortcut (else,
// it appears that the mouse event cancels it and it's not
// shown). So let's do status bar if visible else tooltip.
// Menu trigger with no status bar -> no feedback...
// rclmain->showTrayMessage(msg);
if (m_rclmain->statusBar()->isVisible()) {
m_rclmain->statusBar()->showMessage(msg, 1000);
} else {
int x = tableView->columnViewportPosition(0) + tableView->width() / 2 ;
int y = tableView->rowViewportPosition(m_detaildocnum);
QPoint pos = tableView->mapToGlobal(QPoint(x,y));
QToolTip::showText(pos, msg);
QTimer::singleShot(1500, m_rclmain, SLOT(hideToolTip()));
}
}
}
}
void ResTable::menuExpand()