From 1b32bf5b027bb62c38ddfaf67f9b7116e918862c Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Wed, 18 Feb 2009 11:00:25 +0100
Subject: [PATCH] Fixes:  Show help as in standalone Designer
 (currentProperty).

Task: 235520
Details: Use new integration API #ifdefed for 4.5.1 onwards.
---
 src/plugins/designer/formwindoweditor.cpp       | 17 ++++++++++++++---
 .../qt_private/qdesigner_integration_p.h        |  2 ++
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/plugins/designer/formwindoweditor.cpp b/src/plugins/designer/formwindoweditor.cpp
index 869443a9aaf..a2fa85b5ca3 100644
--- a/src/plugins/designer/formwindoweditor.cpp
+++ b/src/plugins/designer/formwindoweditor.cpp
@@ -49,6 +49,7 @@
 #include <QtDesigner/QDesignerWidgetDataBaseInterface>
 #include <qt_private/formwindowbase_p.h>
 #include <qt_private/qtresourcemodel_p.h>
+#include <qt_private/qdesigner_integration_p.h>
 
 #include <QtCore/QFile>
 #include <QtCore/QDir>
@@ -330,9 +331,17 @@ void FormWindowEditor::activate()
 
 QString FormWindowEditor::contextHelpId() const
 {
-    // TODO [13.2.09]: Replace this by QDesignerIntegrations context help Id
-    // in the upcoming version of Qt
-    QDesignerFormEditorInterface *core = FormEditorW::instance()->designerEditor();
+    const QDesignerFormEditorInterface *core = FormEditorW::instance()->designerEditor();
+#if QT_VERSION > 0x040500
+    // Present from Qt 4.5.1 onwards. This will show the class documentation
+    // scrolled to the current property.
+    const qdesigner_internal::QDesignerIntegration *integration =
+            qobject_cast<const qdesigner_internal::QDesignerIntegration*>(core->integration());
+    if (integration)
+        return integration->contextHelpId();
+    return QString();
+#else
+    // Pre 4.5.1. This will show the class documentation.
     QObject *o = core->propertyEditor()->object();
     if (!o)
         return QString();
@@ -347,5 +356,7 @@ QString FormWindowEditor::contextHelpId() const
         className = QLatin1String("QSpacerItem");
     else if (className == QLatin1String("QLayoutWidget"))
         className = QLatin1String("QLayout");
+
     return className;
+#endif
 }
diff --git a/src/plugins/designer/qt_private/qdesigner_integration_p.h b/src/plugins/designer/qt_private/qdesigner_integration_p.h
index b301a1ce827..d02da7b809e 100644
--- a/src/plugins/designer/qt_private/qdesigner_integration_p.h
+++ b/src/plugins/designer/qt_private/qdesigner_integration_p.h
@@ -95,6 +95,8 @@ public:
     bool isResourceEditingEnabled() const;
     bool isSlotNavigationEnabled() const;
 
+    QString contextHelpId() const;
+
 protected:
 
     void setResourceFileWatcherBehaviour(ResourceFileWatcherBehaviour behaviour); // PromptAndReload by default
-- 
GitLab