[neon/qt6/qtcreator/Neon/unstable] debian/patches: litehtml 0.8 patch from fedora

Carlos De Maine null at kde.org
Mon Aug 21 12:54:44 BST 2023


Git commit d9a4d0db1d98a8d575ec19473d629a6101465554 by Carlos De Maine.
Committed on 21/08/2023 at 13:54.
Pushed by carlosdem into branch 'Neon/unstable'.

litehtml 0.8 patch from fedora

A  +479  -0    debian/patches/qt-creator-litehtml-patch
M  +2    -0    debian/patches/series

https://invent.kde.org/neon/qt6/qtcreator/-/commit/d9a4d0db1d98a8d575ec19473d629a6101465554

diff --git a/debian/patches/qt-creator-litehtml-patch b/debian/patches/qt-creator-litehtml-patch
new file mode 100644
index 0000000..524cdb6
--- /dev/null
+++ b/debian/patches/qt-creator-litehtml-patch
@@ -0,0 +1,479 @@
+diff -rupN --no-dereference qt-creator-opensource-src-11.0.2/src/libs/qlitehtml/src/container_qpainter.cpp qt-creator-opensource-src-11.0.2-new/src/libs/qlitehtml/src/container_qpainter.cpp
+--- qt-creator-opensource-src-11.0.2/src/libs/qlitehtml/src/container_qpainter.cpp	2023-08-14 03:53:10.000000000 +0200
++++ qt-creator-opensource-src-11.0.2-new/src/libs/qlitehtml/src/container_qpainter.cpp	2023-08-15 13:35:53.905035525 +0200
+@@ -160,7 +160,7 @@ static Selection::Element selectionDetai
+     // shortcut, which _might_ not really be correct
+     if (element->get_children_count() > 0)
+         return {element, -1, -1}; // everything selected
+-    const QFont &font = toQFont(element->get_font());
++    const QFont &font = toQFont(element->css().get_font());
+     const QFontMetrics fm(font);
+     int previous = 0;
+     for (int i = 0; i < text.size(); ++i) {
+@@ -182,7 +182,7 @@ static Selection::Element deepest_child_
+ 
+     // the following does not find the "smallest" element, it often consists of children
+     // with individual words as text...
+-    const litehtml::element::ptr element = document->root()->get_element_by_point(pos.x(),
++    const litehtml::element::ptr element = document->root_renderer()->get_element_by_point(pos.x(),
+                                                                                   pos.y(),
+                                                                                   viewportPos.x(),
+                                                                                   viewportPos.y());
+@@ -195,13 +195,14 @@ static Selection::Element deepest_child_
+         Selection::Element result;
+         for (int i = 0; i < int(element->get_children_count()); ++i) {
+             const litehtml::element::ptr child = element->get_child(i);
++            litehtml::render_item render_item(child);
+             result = recursion(child,
+-                               toQRect(child->get_position()).translated(placement.topLeft()));
++                               toQRect(render_item.get_placement()).translated(placement.topLeft()));
+             if (result.element)
+                 return result;
+         }
+         if (placement.contains(pos)) {
+-            litehtml::tstring text;
++            litehtml::string text;
+             element->get_text(text);
+             if (!text.empty()) {
+                 return mode == Selection::Mode::Free
+@@ -235,9 +236,9 @@ static QFont::Weight cssWeightToQtWeight
+ static QFont::Style toQFontStyle(litehtml::font_style style)
+ {
+     switch (style) {
+-    case litehtml::fontStyleNormal:
++    case litehtml::font_style_normal:
+         return QFont::StyleNormal;
+-    case litehtml::fontStyleItalic:
++    case litehtml::font_style_italic:
+         return QFont::StyleItalic;
+     }
+     // should not happen
+@@ -355,7 +356,7 @@ void Selection::update()
+ {
+     const auto addElement = [this](const Selection::Element &element,
+                                    const Selection::Element &end = {}) {
+-        litehtml::tstring elemText;
++        litehtml::string elemText;
+         element.element->get_text(elemText);
+         const QString textStr = QString::fromStdString(elemText);
+         if (!textStr.isEmpty()) {
+@@ -429,7 +430,7 @@ DocumentContainer::DocumentContainer()
+ 
+ DocumentContainer::~DocumentContainer() = default;
+ 
+-litehtml::uint_ptr DocumentContainerPrivate::create_font(const litehtml::tchar_t *faceName,
++litehtml::uint_ptr DocumentContainerPrivate::create_font(const char *faceName,
+                                                          int size,
+                                                          int weight,
+                                                          litehtml::font_style italic,
+@@ -485,14 +486,14 @@ void DocumentContainerPrivate::delete_fo
+     delete font;
+ }
+ 
+-int DocumentContainerPrivate::text_width(const litehtml::tchar_t *text, litehtml::uint_ptr hFont)
++int DocumentContainerPrivate::text_width(const char *text, litehtml::uint_ptr hFont)
+ {
+     const QFontMetrics fm(toQFont(hFont));
+     return fm.horizontalAdvance(QString::fromUtf8(text));
+ }
+ 
+ void DocumentContainerPrivate::draw_text(litehtml::uint_ptr hdc,
+-                                         const litehtml::tchar_t *text,
++                                         const char *text,
+                                          litehtml::uint_ptr hFont,
+                                          litehtml::web_color color,
+                                          const litehtml::position &pos)
+@@ -514,7 +515,7 @@ int DocumentContainerPrivate::get_defaul
+     return m_defaultFont.pointSize();
+ }
+ 
+-const litehtml::tchar_t *DocumentContainerPrivate::get_default_font_name() const
++const char *DocumentContainerPrivate::get_default_font_name() const
+ {
+     return m_defaultFontFamilyName.constData();
+ }
+@@ -551,8 +552,8 @@ void DocumentContainerPrivate::draw_list
+     }
+ }
+ 
+-void DocumentContainerPrivate::load_image(const litehtml::tchar_t *src,
+-                                          const litehtml::tchar_t *baseurl,
++void DocumentContainerPrivate::load_image(const char *src,
++                                          const char *baseurl,
+                                           bool redraw_on_ready)
+ {
+     const auto qtSrc = QString::fromUtf8(src);
+@@ -569,8 +570,8 @@ void DocumentContainerPrivate::load_imag
+     m_pixmaps.insert(url, pixmap);
+ }
+ 
+-void DocumentContainerPrivate::get_image_size(const litehtml::tchar_t *src,
+-                                              const litehtml::tchar_t *baseurl,
++void DocumentContainerPrivate::get_image_size(const char *src,
++                                              const char *baseurl,
+                                               litehtml::size &sz)
+ {
+     const auto qtSrc = QString::fromUtf8(src);
+@@ -617,8 +618,9 @@ void DocumentContainerPrivate::buildInde
+         m_index.elementToIndex.insert({current, index});
+         if (!inBody)
+             inBody = tagName(current).toLower() == "body";
+-        if (inBody && current->is_visible()) {
+-            litehtml::tstring text;
++        litehtml::render_item render_item(current);
++        if (inBody && render_item.is_visible()) {
++            litehtml::string text;
+             current->get_text(text);
+             if (!text.empty()) {
+                 m_index.indexToElement.push_back({index, current});
+@@ -657,13 +659,14 @@ void DocumentContainerPrivate::clearSele
+ }
+ 
+ void DocumentContainerPrivate::draw_background(litehtml::uint_ptr hdc,
+-                                               const litehtml::background_paint &bg)
++                                               const std::vector<litehtml::background_paint>&bgs)
+ {
+     auto painter = toQPainter(hdc);
+-    if (bg.is_root) {
++    if (bgs.empty() || bgs[0].is_root) {
+         // TODO ?
+         return;
+     }
++    litehtml::background_paint bg = bgs[0];
+     painter->save();
+     painter->setClipRect(toQRect(bg.clip_box));
+     const QRegion horizontalMiddle(
+@@ -806,12 +809,12 @@ void DocumentContainerPrivate::draw_bord
+     }
+ }
+ 
+-void DocumentContainerPrivate::set_caption(const litehtml::tchar_t *caption)
++void DocumentContainerPrivate::set_caption(const char *caption)
+ {
+     m_caption = QString::fromUtf8(caption);
+ }
+ 
+-void DocumentContainerPrivate::set_base_url(const litehtml::tchar_t *base_url)
++void DocumentContainerPrivate::set_base_url(const char *base_url)
+ {
+     m_baseUrl = QString::fromUtf8(base_url);
+ }
+@@ -825,7 +828,7 @@ void DocumentContainerPrivate::link(cons
+     Q_UNUSED(el)
+ }
+ 
+-void DocumentContainerPrivate::on_anchor_click(const litehtml::tchar_t *url,
++void DocumentContainerPrivate::on_anchor_click(const char *url,
+                                                const litehtml::element::ptr &el)
+ {
+     Q_UNUSED(el)
+@@ -833,12 +836,12 @@ void DocumentContainerPrivate::on_anchor
+         m_linkCallback(resolveUrl(QString::fromUtf8(url), m_baseUrl));
+ }
+ 
+-void DocumentContainerPrivate::set_cursor(const litehtml::tchar_t *cursor)
++void DocumentContainerPrivate::set_cursor(const char *cursor)
+ {
+     m_cursorCallback(toQCursor(QString::fromUtf8(cursor)));
+ }
+ 
+-void DocumentContainerPrivate::transform_text(litehtml::tstring &text, litehtml::text_transform tt)
++void DocumentContainerPrivate::transform_text(litehtml::string &text, litehtml::text_transform tt)
+ {
+     // TODO
+     qDebug(log) << "transform_text";
+@@ -846,9 +849,9 @@ void DocumentContainerPrivate::transform
+     Q_UNUSED(tt)
+ }
+ 
+-void DocumentContainerPrivate::import_css(litehtml::tstring &text,
+-                                          const litehtml::tstring &url,
+-                                          litehtml::tstring &baseurl)
++void DocumentContainerPrivate::import_css(litehtml::string &text,
++                                          const litehtml::string &url,
++                                          litehtml::string &baseurl)
+ {
+     const QUrl actualUrl = resolveUrl(QString::fromStdString(url), QString::fromStdString(baseurl));
+     const QString urlString = actualUrl.toString(QUrl::None);
+@@ -858,16 +861,12 @@ void DocumentContainerPrivate::import_cs
+ }
+ 
+ void DocumentContainerPrivate::set_clip(const litehtml::position &pos,
+-                                        const litehtml::border_radiuses &bdr_radius,
+-                                        bool valid_x,
+-                                        bool valid_y)
++                                        const litehtml::border_radiuses &bdr_radius)
+ {
+     // TODO
+     qDebug(log) << "set_clip";
+     Q_UNUSED(pos)
+     Q_UNUSED(bdr_radius)
+-    Q_UNUSED(valid_x)
+-    Q_UNUSED(valid_y)
+ }
+ 
+ void DocumentContainerPrivate::del_clip()
+@@ -882,7 +881,7 @@ void DocumentContainerPrivate::get_clien
+ }
+ 
+ std::shared_ptr<litehtml::element> DocumentContainerPrivate::create_element(
+-    const litehtml::tchar_t *tag_name,
++    const char *tag_name,
+     const litehtml::string_map &attributes,
+     const std::shared_ptr<litehtml::document> &doc)
+ {
+@@ -900,7 +899,7 @@ void DocumentContainerPrivate::get_media
+     qDebug(log) << "get_media_features";
+ }
+ 
+-void DocumentContainerPrivate::get_language(litehtml::tstring &language, litehtml::tstring &culture) const
++void DocumentContainerPrivate::get_language(litehtml::string &language, litehtml::string &culture) const
+ {
+     // TODO
+     qDebug(log) << "get_language";
+@@ -918,11 +917,11 @@ void DocumentContainer::setScrollPositio
+     d->m_scrollPosition = pos;
+ }
+ 
+-void DocumentContainer::setDocument(const QByteArray &data, DocumentContainerContext *context)
++void DocumentContainer::setDocument(const QByteArray &data)
+ {
+     d->m_pixmaps.clear();
+     d->clearSelection();
+-    d->m_document = litehtml::document::createFromUTF8(data.constData(), d.get(), &context->d->context);
++    d->m_document = litehtml::document::createFromString(data.constData(), d.get(), d->m_masterStyleSheet.toUtf8().constData());
+     d->buildIndex();
+ }
+ 
+@@ -1104,7 +1103,7 @@ QUrl DocumentContainer::linkAt(const QPo
+ {
+     if (!d->m_document)
+         return {};
+-    const litehtml::element::ptr element = d->m_document->root()->get_element_by_point(
++    const litehtml::element::ptr element = d->m_document->root_renderer()->get_element_by_point(
+         documentPos.x(), documentPos.y(), viewportPos.x(), viewportPos.y());
+     if (!element)
+         return {};
+@@ -1171,10 +1170,10 @@ void DocumentContainer::findText(const Q
+     }
+ 
+     const auto fillXPos = [](const Selection::Element &e) {
+-        litehtml::tstring ttext;
++        litehtml::string ttext;
+         e.element->get_text(ttext);
+         const QString text = QString::fromStdString(ttext);
+-        const QFont &font = toQFont(e.element->get_font());
++        const QFont &font = toQFont(e.element->css().get_font());
+         const QFontMetrics fm(font);
+         return Selection::Element{e.element, e.index, fm.size(0, text.left(e.index)).width()};
+     };
+@@ -1226,7 +1225,7 @@ void DocumentContainer::setDefaultFont(c
+     // we need to trigger the reparse of this info.
+     if (d->m_document && d->m_document->root()) {
+         d->m_document->root()->refresh_styles();
+-        d->m_document->root()->parse_styles();
++        d->m_document->root()->compute_styles();
+     }
+ }
+ 
+@@ -1260,6 +1259,11 @@ void DocumentContainer::setClipboardCall
+     d->m_clipboardCallback = callback;
+ }
+ 
++void DocumentContainer::setMasterStyleSheet(const QString& styleSheet)
++{
++    d->m_masterStyleSheet = styleSheet;
++}
++
+ static litehtml::element::ptr elementForY(int y, const litehtml::document::ptr &document)
+ {
+     if (!document)
+@@ -1268,7 +1272,8 @@ static litehtml::element::ptr elementFor
+     const std::function<litehtml::element::ptr(int, litehtml::element::ptr)> recursion =
+         [&recursion](int y, const litehtml::element::ptr &element) {
+             litehtml::element::ptr result;
+-            const int subY = y - element->get_position().y;
++            litehtml::render_item render_item(element);
++            const int subY = y - render_item.get_placement().y;
+             if (subY <= 0)
+                 return element;
+             for (int i = 0; i < int(element->get_children_count()); ++i) {
+@@ -1359,14 +1364,3 @@ Index::Entry Index::findElement(int inde
+         return {-1, {}};
+     return *(upper - 1);
+ }
+-
+-DocumentContainerContext::DocumentContainerContext()
+-    : d(new DocumentContainerContextPrivate)
+-{}
+-
+-DocumentContainerContext::~DocumentContainerContext() = default;
+-
+-void DocumentContainerContext::setMasterStyleSheet(const QString &css)
+-{
+-    d->context.load_master_stylesheet(css.toUtf8().constData());
+-}
+diff -rupN --no-dereference qt-creator-opensource-src-11.0.2/src/libs/qlitehtml/src/container_qpainter.h qt-creator-opensource-src-11.0.2-new/src/libs/qlitehtml/src/container_qpainter.h
+--- qt-creator-opensource-src-11.0.2/src/libs/qlitehtml/src/container_qpainter.h	2023-08-14 03:53:10.000000000 +0200
++++ qt-creator-opensource-src-11.0.2-new/src/libs/qlitehtml/src/container_qpainter.h	2023-08-15 13:35:53.905035525 +0200
+@@ -19,22 +19,6 @@
+ #include <memory>
+ 
+ class DocumentContainerPrivate;
+-class DocumentContainerContextPrivate;
+-
+-class QLITEHTML_EXPORT DocumentContainerContext
+-{
+-public:
+-    DocumentContainerContext();
+-    ~DocumentContainerContext();
+-
+-    void setMasterStyleSheet(const QString &css);
+-
+-private:
+-    std::unique_ptr<DocumentContainerContextPrivate> d;
+-
+-    friend class DocumentContainer;
+-    friend class DocumentContainerPrivate;
+-};
+ 
+ class QLITEHTML_EXPORT DocumentContainer
+ {
+@@ -44,7 +28,7 @@ public:
+ 
+ public: // outside API
+     void setPaintDevice(QPaintDevice *paintDevice);
+-    void setDocument(const QByteArray &data, DocumentContainerContext *context);
++    void setDocument(const QByteArray &data);
+     bool hasDocument() const;
+     void setBaseUrl(const QString &url);
+     void setScrollPosition(const QPoint &pos);
+@@ -100,6 +84,8 @@ public: // outside API
+ 
+     int withFixedElementPosition(int y, const std::function<void()> &action);
+ 
++    void setMasterStyleSheet(const QString& styleSheet);
++
+ private:
+     std::unique_ptr<DocumentContainerPrivate> d;
+ };
+diff -rupN --no-dereference qt-creator-opensource-src-11.0.2/src/libs/qlitehtml/src/container_qpainter_p.h qt-creator-opensource-src-11.0.2-new/src/libs/qlitehtml/src/container_qpainter_p.h
+--- qt-creator-opensource-src-11.0.2/src/libs/qlitehtml/src/container_qpainter_p.h	2023-08-14 03:53:10.000000000 +0200
++++ qt-creator-opensource-src-11.0.2-new/src/libs/qlitehtml/src/container_qpainter_p.h	2023-08-15 13:35:53.906035546 +0200
+@@ -58,55 +58,53 @@ struct Index
+ class DocumentContainerPrivate final : public litehtml::document_container
+ {
+ public: // document_container API
+-    litehtml::uint_ptr create_font(const litehtml::tchar_t *faceName,
++    litehtml::uint_ptr create_font(const char *faceName,
+                                    int size,
+                                    int weight,
+                                    litehtml::font_style italic,
+                                    unsigned int decoration,
+                                    litehtml::font_metrics *fm) override;
+     void delete_font(litehtml::uint_ptr hFont) override;
+-    int text_width(const litehtml::tchar_t *text, litehtml::uint_ptr hFont) override;
++    int text_width(const char *text, litehtml::uint_ptr hFont) override;
+     void draw_text(litehtml::uint_ptr hdc,
+-                   const litehtml::tchar_t *text,
++                   const char *text,
+                    litehtml::uint_ptr hFont,
+                    litehtml::web_color color,
+                    const litehtml::position &pos) override;
+     int pt_to_px(int pt) const override;
+     int get_default_font_size() const override;
+-    const litehtml::tchar_t *get_default_font_name() const override;
++    const char *get_default_font_name() const override;
+     void draw_list_marker(litehtml::uint_ptr hdc, const litehtml::list_marker &marker) override;
+-    void load_image(const litehtml::tchar_t *src,
+-                    const litehtml::tchar_t *baseurl,
++    void load_image(const char *src,
++                    const char *baseurl,
+                     bool redraw_on_ready) override;
+-    void get_image_size(const litehtml::tchar_t *src,
+-                        const litehtml::tchar_t *baseurl,
++    void get_image_size(const char *src,
++                        const char *baseurl,
+                         litehtml::size &sz) override;
+-    void draw_background(litehtml::uint_ptr hdc, const litehtml::background_paint &bg) override;
++    void draw_background(litehtml::uint_ptr hdc, const std::vector<litehtml::background_paint>&bgs) override;
+     void draw_borders(litehtml::uint_ptr hdc,
+                       const litehtml::borders &borders,
+                       const litehtml::position &draw_pos,
+                       bool root) override;
+-    void set_caption(const litehtml::tchar_t *caption) override;
+-    void set_base_url(const litehtml::tchar_t *base_url) override;
++    void set_caption(const char *caption) override;
++    void set_base_url(const char *base_url) override;
+     void link(const std::shared_ptr<litehtml::document> &doc,
+               const litehtml::element::ptr &el) override;
+-    void on_anchor_click(const litehtml::tchar_t *url, const litehtml::element::ptr &el) override;
+-    void set_cursor(const litehtml::tchar_t *cursor) override;
+-    void transform_text(litehtml::tstring &text, litehtml::text_transform tt) override;
+-    void import_css(litehtml::tstring &text,
+-                    const litehtml::tstring &url,
+-                    litehtml::tstring &baseurl) override;
++    void on_anchor_click(const char *url, const litehtml::element::ptr &el) override;
++    void set_cursor(const char *cursor) override;
++    void transform_text(litehtml::string &text, litehtml::text_transform tt) override;
++    void import_css(litehtml::string &text,
++                    const litehtml::string &url,
++                    litehtml::string &baseurl) override;
+     void set_clip(const litehtml::position &pos,
+-                  const litehtml::border_radiuses &bdr_radius,
+-                  bool valid_x,
+-                  bool valid_y) override;
++                  const litehtml::border_radiuses &bdr_radius) override;
+     void del_clip() override;
+     void get_client_rect(litehtml::position &client) const override;
+-    std::shared_ptr<litehtml::element> create_element(const litehtml::tchar_t *tag_name,
++    std::shared_ptr<litehtml::element> create_element(const char *tag_name,
+                                                       const litehtml::string_map &attributes,
+                                                       const std::shared_ptr<litehtml::document> &doc) override;
+     void get_media_features(litehtml::media_features &media) const override;
+-    void get_language(litehtml::tstring &language, litehtml::tstring &culture) const override;
++    void get_language(litehtml::string &language, litehtml::string &culture) const override;
+ 
+     QPixmap getPixmap(const QString &imageUrl, const QString &baseUrl);
+     QString serifFont() const;
+@@ -135,10 +133,5 @@ public: // document_container API
+     DocumentContainer::PaletteCallback m_paletteCallback;
+     DocumentContainer::ClipboardCallback m_clipboardCallback;
+     bool m_blockLinks = false;
+-};
+-
+-class DocumentContainerContextPrivate
+-{
+-public:
+-    litehtml::context context;
++    QString m_masterStyleSheet;
+ };
+diff -rupN --no-dereference qt-creator-opensource-src-11.0.2/src/libs/qlitehtml/src/qlitehtmlwidget.cpp qt-creator-opensource-src-11.0.2-new/src/libs/qlitehtml/src/qlitehtmlwidget.cpp
+--- qt-creator-opensource-src-11.0.2/src/libs/qlitehtml/src/qlitehtmlwidget.cpp	2023-08-14 03:53:10.000000000 +0200
++++ qt-creator-opensource-src-11.0.2-new/src/libs/qlitehtml/src/qlitehtmlwidget.cpp	2023-08-15 13:35:53.906035546 +0200
+@@ -346,7 +346,6 @@ class QLiteHtmlWidgetPrivate
+ {
+ public:
+     QString html;
+-    DocumentContainerContext context;
+     QUrl url;
+     DocumentContainer documentContainer;
+     qreal zoomFactor = 1;
+@@ -376,7 +375,7 @@ QLiteHtmlWidget::QLiteHtmlWidget(QWidget
+     d->documentContainer.setClipboardCallback([this](bool yes) { emit copyAvailable(yes); });
+ 
+     // TODO adapt mastercss to palette (default text & background color)
+-    d->context.setMasterStyleSheet(mastercss);
++    d->documentContainer.setMasterStyleSheet(mastercss);
+ }
+ 
+ QLiteHtmlWidget::~QLiteHtmlWidget()
+@@ -407,7 +406,7 @@ void QLiteHtmlWidget::setHtml(const QStr
+ {
+     d->html = content;
+     d->documentContainer.setPaintDevice(viewport());
+-    d->documentContainer.setDocument(content.toUtf8(), &d->context);
++    d->documentContainer.setDocument(content.toUtf8());
+     verticalScrollBar()->setValue(0);
+     horizontalScrollBar()->setValue(0);
+     render();
\ No newline at end of file
diff --git a/debian/patches/series b/debian/patches/series
index 860a57d..8885611 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,3 +2,5 @@
 
 # Debian patches.
 debian_paths.diff
+
+qt-creator-litehtml.patch
\ No newline at end of file


More information about the Neon-commits mailing list