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)
     {

Reply via email to