瀏覽代碼

Help: Workaround Qt 4.8 assistant bug in CSS handling.

Assistant in Qt 4.8 does not handle css import paths relative to
the includer.  This is fixed in Qt 4.8 commit b95750a275 (Assistant: Set
the url on created QNetworkReply objects., 2014-03-31).  It is unknown
whether there will be a further Qt 4.8 release containing that commit.

Use a CMake script to pre-replace the content prior to generating the
qch file.  An alternative workaround of moving the files or adding
"_static" to the import path did not seem to work for existing Qt 4.8
versions.

The bug was fixed in the Qt 5 branch before Qt 5.0. The Qt 5 assistant
renders this workaround'ed version correctly too.
Stephen Kelly 11 年之前
父節點
當前提交
3a572290cc
共有 2 個文件被更改,包括 19 次插入0 次删除
  1. 4 0
      Utilities/Sphinx/CMakeLists.txt
  2. 15 0
      Utilities/Sphinx/apply_qthelp_css_workaround.cmake

+ 4 - 0
Utilities/Sphinx/CMakeLists.txt

@@ -75,6 +75,10 @@ if(SPHINX_QTHELP)
   list(APPEND doc_formats qthelp)
 
   set(qthelp_extra_commands
+    # Workaround for assistant prior to
+    # https://codereview.qt-project.org/#change,82250 in Qt 4.
+    COMMAND ${CMAKE_COMMAND} "-DCSS_DIR=${CMAKE_CURRENT_BINARY_DIR}/qthelp/_static"
+      -P "${CMAKE_CURRENT_SOURCE_DIR}/apply_qthelp_css_workaround.cmake"
     COMMAND qcollectiongenerator ${CMAKE_CURRENT_BINARY_DIR}/qthelp/CMake.qhcp
   )
 endif()

+ 15 - 0
Utilities/Sphinx/apply_qthelp_css_workaround.cmake

@@ -0,0 +1,15 @@
+
+file(READ "${CSS_DIR}/basic.css" BasicCssContent)
+
+file(READ "${CSS_DIR}/default.css" DefaultCssContent)
+string(REPLACE
+  "@import url(\"basic.css\")" "${BasicCssContent}"
+  DefaultCssContent "${DefaultCssContent}"
+)
+
+file(READ "${CSS_DIR}/cmake.css" CMakeCssContent)
+string(REPLACE
+  "@import url(\"default.css\")" "${DefaultCssContent}"
+  CMakeCssContent "${CMakeCssContent}"
+)
+file(WRITE "${CSS_DIR}/cmake.css" "${CMakeCssContent}")