[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