Fix InsertTableWidget interference with tooltip geometry on Qt6 (#12776)

The current method played badly with Qt6 on wayland
This commit is contained in:
Juergen Spitzmueller 2023-08-10 16:43:06 +02:00
parent cdc96159f1
commit f75f73a402
2 changed files with 22 additions and 5 deletions

View File

@ -37,6 +37,8 @@ InsertTableWidget::InsertTableWidget(QWidget * parent)
{
init();
setMouseTracking(true);
// display tooltip without any delay
setStyle(new ProxyStyle(style()));
}
@ -120,11 +122,7 @@ void InsertTableWidget::mouseMoveEvent(QMouseEvent * event)
if (bottom_ != b0 || right_ != r0) {
update();
QString const status = QString("%1x%2").arg(bottom_).arg(right_);
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
QToolTip::showText(event->globalPosition().toPoint(), status , this);
#else
QToolTip::showText(event->globalPos(), status , this);
#endif
setToolTip(status);
}
}

View File

@ -14,12 +14,31 @@
#define INSERTTABLEWIDGET_H
#include <QWidget>
#include <QProxyStyle>
namespace lyx {
namespace frontend {
class GuiView;
// A proxy style to get rif of the style-specific tool tip delay
// (https://forum.qt.io/topic/90403/show-tooltip-immediatly/6)
class ProxyStyle : public QProxyStyle
{
public:
using QProxyStyle::QProxyStyle;
int styleHint(StyleHint hint, const QStyleOption * option = nullptr,
const QWidget* widget = nullptr,
QStyleHintReturn* returnData = nullptr) const override
{
if (hint == QStyle::SH_ToolTip_WakeUpDelay)
return 0;
else if (hint == QStyle::SH_ToolTip_FallAsleepDelay)
return 0;
return QProxyStyle::styleHint(hint, option, widget, returnData);
}
};
class InsertTableWidget : public QWidget {
Q_OBJECT
public: