vcl/inc/qt5/QtFont.hxx | 5 +++++ vcl/inc/qt5/QtInstanceWidget.hxx | 1 + vcl/inc/qt5/QtTools.hxx | 2 ++ vcl/qt5/QtFont.cxx | 6 +++--- vcl/qt5/QtInstanceButton.cxx | 5 +---- vcl/qt5/QtInstanceComboBox.cxx | 2 +- vcl/qt5/QtInstanceEntry.cxx | 2 +- vcl/qt5/QtInstanceLabel.cxx | 2 +- vcl/qt5/QtInstanceTextView.cxx | 2 +- vcl/qt5/QtInstanceWidget.cxx | 7 +++++++ vcl/qt5/QtTools.cxx | 12 ++++++++++++ 11 files changed, 35 insertions(+), 11 deletions(-)
New commits: commit 490332c837afc9af854c6d6d48f15c7454b87dcf Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri May 16 22:46:30 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat May 17 10:27:28 2025 +0200 tdf#130857 qt weld: Implement methods to set font Add new `toQtFont` helper to create a QFont from a vcl::Font which reuses the existing static helper methods from the QtFont class and use that to implement `set_font` methods that various weld::Widget subclasses have via a helper method newly introduced to weld::Widget. Handling more attributes should be possible in the future if necessary. This gets used e.g. by the "Insert" -> "Footnote and Endnote" -> "Insert special Footnote/Endnote" dialog in Writer (see SwInsFootNoteDlg::Init). SwInsFootNoteDlg: :Init Change-Id: I14e1099f724866573a04acd4a1aa709c439bcd22 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185437 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/vcl/inc/qt5/QtInstanceWidget.hxx b/vcl/inc/qt5/QtInstanceWidget.hxx index fb2bfb512e43..cdce0ef3231c 100644 --- a/vcl/inc/qt5/QtInstanceWidget.hxx +++ b/vcl/inc/qt5/QtInstanceWidget.hxx @@ -177,6 +177,7 @@ public: virtual bool eventFilter(QObject* pObject, QEvent* pEvent) override; + void setFont(vcl::Font rFont); static void setHelpId(QWidget& rWidget, const OUString& rHelpId); private Q_SLOTS: diff --git a/vcl/inc/qt5/QtTools.hxx b/vcl/inc/qt5/QtTools.hxx index 13ab0282b2c6..7e4a2088fb1b 100644 --- a/vcl/inc/qt5/QtTools.hxx +++ b/vcl/inc/qt5/QtTools.hxx @@ -154,6 +154,8 @@ MouseEvent toVclMouseEvent(QMouseEvent& rEvent); QImage toQImage(const Image& rImage); +QFont toQtFont(const vcl::Font& rVclFont); + bool toVclFont(const QFont& rQFont, const css::lang::Locale& rLocale, vcl::Font& rVclFont); QMessageBox::Icon vclMessageTypeToQtIcon(VclMessageType eType); diff --git a/vcl/qt5/QtInstanceButton.cxx b/vcl/qt5/QtInstanceButton.cxx index 5766e1aa02bd..781d91d66cfe 100644 --- a/vcl/qt5/QtInstanceButton.cxx +++ b/vcl/qt5/QtInstanceButton.cxx @@ -71,10 +71,7 @@ OUString QtInstanceButton::get_label() const return qtToVclStringWithAccelerator(m_pButton->text()); } -void QtInstanceButton::set_font(const vcl::Font& /*rFont*/) -{ - assert(false && "Not implemented yet"); -} +void QtInstanceButton::set_font(const vcl::Font& rFont) { setFont(rFont); } void QtInstanceButton::set_custom_button(VirtualDevice* /*pDevice*/) { diff --git a/vcl/qt5/QtInstanceComboBox.cxx b/vcl/qt5/QtInstanceComboBox.cxx index 57fac25a8bf4..9286897f149d 100644 --- a/vcl/qt5/QtInstanceComboBox.cxx +++ b/vcl/qt5/QtInstanceComboBox.cxx @@ -315,7 +315,7 @@ void QtInstanceComboBox::copy_entry_clipboard() { assert(false && "Not implement void QtInstanceComboBox::paste_entry_clipboard() { assert(false && "Not implemented yet"); } -void QtInstanceComboBox::set_font(const vcl::Font&) { assert(false && "Not implemented yet"); } +void QtInstanceComboBox::set_font(const vcl::Font& rFont) { setFont(rFont); } void QtInstanceComboBox::set_entry_font(const vcl::Font&) { diff --git a/vcl/qt5/QtInstanceEntry.cxx b/vcl/qt5/QtInstanceEntry.cxx index 446e8bf71e2f..1ddfdd3ec3c4 100644 --- a/vcl/qt5/QtInstanceEntry.cxx +++ b/vcl/qt5/QtInstanceEntry.cxx @@ -176,7 +176,7 @@ bool QtInstanceEntry::get_overwrite_mode() const return false; } -void QtInstanceEntry::set_font(const vcl::Font&) { assert(false && "Not implemented yet"); } +void QtInstanceEntry::set_font(const vcl::Font& rFont) { setFont(rFont); } void QtInstanceEntry::set_font_color(const Color& rColor) { setFontColor(rColor); } diff --git a/vcl/qt5/QtInstanceLabel.cxx b/vcl/qt5/QtInstanceLabel.cxx index b0db5c8c7981..92329cbb4df5 100644 --- a/vcl/qt5/QtInstanceLabel.cxx +++ b/vcl/qt5/QtInstanceLabel.cxx @@ -47,7 +47,7 @@ void QtInstanceLabel::set_mnemonic_widget(Widget* pTarget) GetQtInstance().RunInMainThread([&] { m_pLabel->setBuddy(pTargetWidget->getQWidget()); }); } -void QtInstanceLabel::set_font(const vcl::Font&) { assert(false && "Not implemented yet"); } +void QtInstanceLabel::set_font(const vcl::Font& rFont) { setFont(rFont); } void QtInstanceLabel::set_label_type(weld::LabelType eType) { diff --git a/vcl/qt5/QtInstanceTextView.cxx b/vcl/qt5/QtInstanceTextView.cxx index 8d771269b1e1..2c79383c6890 100644 --- a/vcl/qt5/QtInstanceTextView.cxx +++ b/vcl/qt5/QtInstanceTextView.cxx @@ -90,7 +90,7 @@ void QtInstanceTextView::set_monospace(bool) { assert(false && "Not implemented void QtInstanceTextView::set_max_length(int) { assert(false && "Not implemented yet"); } -void QtInstanceTextView::set_font(const vcl::Font&) { assert(false && "Not implemented yet"); } +void QtInstanceTextView::set_font(const vcl::Font& rFont) { setFont(rFont); } void QtInstanceTextView::set_font_color(const Color& rColor) { setFontColor(rColor); } diff --git a/vcl/qt5/QtInstanceWidget.cxx b/vcl/qt5/QtInstanceWidget.cxx index 3e303c58ecb8..112a16f23e5b 100644 --- a/vcl/qt5/QtInstanceWidget.cxx +++ b/vcl/qt5/QtInstanceWidget.cxx @@ -310,6 +310,13 @@ bool QtInstanceWidget::eventFilter(QObject* pObject, QEvent* pEvent) } } +void QtInstanceWidget::setFont(vcl::Font rFont) +{ + SolarMutexGuard g; + + GetQtInstance().RunInMainThread([&] { getQWidget()->setFont(toQtFont(rFont)); }); +} + void QtInstanceWidget::setHelpId(QWidget& rWidget, const OUString& rHelpId) { SolarMutexGuard g; diff --git a/vcl/qt5/QtTools.cxx b/vcl/qt5/QtTools.cxx index ed6916a4cd38..a6288503e5ad 100644 --- a/vcl/qt5/QtTools.cxx +++ b/vcl/qt5/QtTools.cxx @@ -18,6 +18,7 @@ */ #include <QtTools.hxx> +#include <QtFont.hxx> #include <QtFontFace.hxx> #include <unx/fontmanager.hxx> @@ -256,6 +257,17 @@ QImage toQImage(const Image& rImage) return aImage; } +QFont toQtFont(const vcl::Font& rVclFont) +{ + QFont aQFont(toQString(rVclFont.GetFamilyName()), rVclFont.GetFontHeight()); + + QtFont::applyStretch(aQFont, rVclFont.GetWidthType()); + QtFont::applyStyle(aQFont, rVclFont.GetItalic()); + QtFont::applyWeight(aQFont, rVclFont.GetWeight()); + + return aQFont; +} + bool toVclFont(const QFont& rQFont, const css::lang::Locale& rLocale, vcl::Font& rVclFont) { FontAttributes aFA; commit acea738b952ac39f6311cd61a025debb4093ecc9 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri May 16 22:31:09 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat May 17 10:27:18 2025 +0200 tdf#130857 qt: Make some helpers static QtFont methods Make some local helper functions to apply vcl Font attributes to a QFont static methods of the QtFont class and take a QFont instead of a QtFont param. This will allow reusing these methods from elsewhere in an upcoming commit. Change-Id: I35a6ff34dc46fd6f65de2a4f584ed01c83a83b5d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185436 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/vcl/inc/qt5/QtFont.hxx b/vcl/inc/qt5/QtFont.hxx index eedea8bb0de6..be6fb72c0be7 100644 --- a/vcl/inc/qt5/QtFont.hxx +++ b/vcl/inc/qt5/QtFont.hxx @@ -35,6 +35,11 @@ class QtFont final : public QFont, public LogicalFontInstance bool GetGlyphOutline(sal_GlyphId, basegfx::B2DPolyPolygon&, bool) const override; explicit QtFont(const vcl::font::PhysicalFontFace&, const vcl::font::FontSelectPattern&); + +public: + static void applyStretch(QFont& rFont, FontWidth eWidthType); + static void applyStyle(QFont& rFont, FontItalic eItalic); + static void applyWeight(QFont& rFont, FontWeight eWeight); }; /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/vcl/qt5/QtFont.cxx b/vcl/qt5/QtFont.cxx index 0927924e6d7b..c7b5b75c2841 100644 --- a/vcl/qt5/QtFont.cxx +++ b/vcl/qt5/QtFont.cxx @@ -28,7 +28,7 @@ #include <QtGui/QRawFont> #include <QtGui/QPainterPath> -static inline void applyWeight(QtFont& rFont, FontWeight eWeight) +void QtFont::applyWeight(QFont& rFont, FontWeight eWeight) { switch (eWeight) { @@ -66,7 +66,7 @@ static inline void applyWeight(QtFont& rFont, FontWeight eWeight) } } -static inline void applyStretch(QtFont& rFont, FontWidth eWidthType) +void QtFont::applyStretch(QFont& rFont, FontWidth eWidthType) { switch (eWidthType) { @@ -105,7 +105,7 @@ static inline void applyStretch(QtFont& rFont, FontWidth eWidthType) } } -static inline void applyStyle(QtFont& rFont, FontItalic eItalic) +void QtFont::applyStyle(QFont& rFont, FontItalic eItalic) { switch (eItalic) {