commit f75f73a402b1ca13010e689641529a5926edf814
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Thu Aug 10 16:43:06 2023 +0200

    Fix InsertTableWidget interference with tooltip geometry on Qt6 (#12776)
    
    The current method played badly with Qt6 on wayland
---
 src/frontends/qt/InsertTableWidget.cpp |    8 +++-----
 src/frontends/qt/InsertTableWidget.h   |   19 +++++++++++++++++++
 2 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/frontends/qt/InsertTableWidget.cpp 
b/src/frontends/qt/InsertTableWidget.cpp
index 325c053..4585527 100644
--- a/src/frontends/qt/InsertTableWidget.cpp
+++ b/src/frontends/qt/InsertTableWidget.cpp
@@ -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);
        }
 }
 
diff --git a/src/frontends/qt/InsertTableWidget.h 
b/src/frontends/qt/InsertTableWidget.h
index e5d7648..162c870 100644
--- a/src/frontends/qt/InsertTableWidget.h
+++ b/src/frontends/qt/InsertTableWidget.h
@@ -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:
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to