include/vcl/weld.hxx | 1 + svx/uiconfig/ui/accessibilitycheckentry.ui | 22 ++++++++++------------ sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx | 10 ++++++++++ vcl/inc/salvtables.hxx | 9 ++++----- vcl/source/app/salvtables.cxx | 20 ++++++++++++++++---- vcl/unx/gtk3/gtkinst.cxx | 7 +++++++ 6 files changed, 48 insertions(+), 21 deletions(-)
New commits: commit 7cc6083325c4b2aa71a51296ecf69d748f8ba772 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Tue Jul 25 15:56:35 2023 +0100 Commit: خالد حسني <kha...@libreoffice.org> CommitDate: Wed Jul 26 14:38:19 2023 +0200 Related: tdf#156137 allow GtkLinkButton to wrap Change-Id: I00ca5a9056b64389f1d55aa8ca6a9d5fd8a16372 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154926 Reviewed-by: Balazs Varga <balazs.varga.ext...@allotropia.de> Tested-by: Jenkins Reviewed-by: خالد حسني <kha...@libreoffice.org> diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 8d1b5cf7722f..a1ed113b3743 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1673,6 +1673,7 @@ protected: public: virtual void set_label(const OUString& rText) = 0; virtual OUString get_label() const = 0; + virtual void set_label_wrap(bool wrap) = 0; virtual void set_uri(const OUString& rUri) = 0; virtual OUString get_uri() const = 0; diff --git a/svx/uiconfig/ui/accessibilitycheckentry.ui b/svx/uiconfig/ui/accessibilitycheckentry.ui index ea4b63c5fe88..3bf122c0b70f 100644 --- a/svx/uiconfig/ui/accessibilitycheckentry.ui +++ b/svx/uiconfig/ui/accessibilitycheckentry.ui @@ -2,13 +2,14 @@ <!-- Generated with glade 3.40.0 --> <interface domain="svx"> <requires lib="gtk+" version="3.20"/> - <object class="GtkBox" id="accessibilityCheckEntryBox"> + <!-- n-columns=3 n-rows=1 --> + <object class="GtkGrid" id="accessibilityCheckEntryBox"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="margin-top">1</property> <property name="margin-bottom">1</property> <property name="hexpand">True</property> - <property name="spacing">6</property> + <property name="column-spacing">6</property> <child> <object class="GtkLabel" id="accessibilityCheckEntryLabel"> <property name="visible">True</property> @@ -25,9 +26,8 @@ </child> </object> <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">0</property> + <property name="left-attach">0</property> + <property name="top-attach">0</property> </packing> </child> <child> @@ -35,14 +35,13 @@ <property name="visible">True</property> <property name="can-focus">True</property> <property name="receives-default">True</property> - <property name="halign">start</property> <property name="hexpand">True</property> <property name="relief">none</property> + <property name="xalign">0</property> </object> <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">1</property> + <property name="left-attach">1</property> + <property name="top-attach">0</property> </packing> </child> <child> @@ -55,9 +54,8 @@ <property name="valign">center</property> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> + <property name="left-attach">2</property> + <property name="top-attach">0</property> </packing> </child> </object> diff --git a/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx b/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx index 162724a1035c..338b0f1f7cac 100644 --- a/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx +++ b/sw/source/uibase/sidebar/A11yCheckIssuesPanel.cxx @@ -43,6 +43,16 @@ AccessibilityCheckEntry::AccessibilityCheckEntry( if (m_pAccessibilityIssue->canGotoIssue()) { m_xGotoButton->set_label(m_pAccessibilityIssue->m_aIssueText); + + // int nPrefWidth(m_xGotoButton->get_preferred_size().Width()); + int nMaxWidth = m_xGotoButton->get_approximate_digit_width() * 10; + // if (nPrefWidth > nMaxWidth) + { + // tdf#156137 allow LinkButton label to wrap + m_xGotoButton->set_label_wrap(true); + m_xGotoButton->set_size_request(nMaxWidth, -1); + } + m_xGotoButton->connect_activate_link( LINK(this, AccessibilityCheckEntry, GotoButtonClicked)); m_xLabel->set_visible(false); diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index 7ac28808ce3d..4e3087da8150 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1078,9 +1078,6 @@ private: DECL_LINK(ClickHdl, ::Button*, void); -protected: - void set_label_wrap(bool bWrap); - public: SalInstanceButton(::Button* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership); @@ -1240,6 +1237,8 @@ public: virtual OUString get_uri() const override { return m_xButton->GetURL(); } + virtual void set_label_wrap(bool wrap) override; + virtual ~SalInstanceLinkButton() override { m_xButton->SetClickHdl(m_aOrigClickHdl); } }; @@ -1265,7 +1264,7 @@ public: virtual OUString get_label() const override { return SalInstanceButton::get_label(); } - virtual void set_label_wrap(bool wrap) override { SalInstanceButton::set_label_wrap(wrap); } + virtual void set_label_wrap(bool wrap) override; virtual ~SalInstanceCheckButton() override; }; @@ -2011,7 +2010,7 @@ public: virtual OUString get_label() const override { return SalInstanceButton::get_label(); } - virtual void set_label_wrap(bool wrap) override { SalInstanceButton::set_label_wrap(wrap); } + virtual void set_label_wrap(bool wrap) override; virtual ~SalInstanceRadioButton() override; }; diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 71308484ed63..b16b0930ab00 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -2884,14 +2884,14 @@ void SalInstanceButton::set_from_icon_name(const OUString& rIconName) m_xButton->SetModeImage(Image(StockImage::Yes, rIconName)); } -void SalInstanceButton::set_label_wrap(bool wrap) +static void set_label_wrap(Control& rWidget, bool wrap) { - WinBits nBits = m_xButton->GetStyle(); + WinBits nBits = rWidget.GetStyle(); nBits &= ~WB_WORDBREAK; if (wrap) nBits |= WB_WORDBREAK; - m_xButton->SetStyle(nBits); - m_xButton->queue_resize(); + rWidget.SetStyle(nBits); + rWidget.queue_resize(); } void SalInstanceButton::set_font(const vcl::Font& rFont) @@ -3103,6 +3103,8 @@ IMPL_LINK(SalInstanceLinkButton, ClickHdl, FixedHyperlink&, rButton, void) m_aOrigClickHdl.Call(rButton); } +void SalInstanceLinkButton::set_label_wrap(bool bWrap) { ::set_label_wrap(*m_xButton, bWrap); } + SalInstanceRadioButton::SalInstanceRadioButton(::RadioButton* pButton, SalInstanceBuilder* pBuilder, bool bTakeOwnership) : SalInstanceButton(pButton, pBuilder, bTakeOwnership) @@ -3147,6 +3149,11 @@ void SalInstanceRadioButton::set_inconsistent(bool /*inconsistent*/) bool SalInstanceRadioButton::get_inconsistent() const { return false; } +void SalInstanceRadioButton::set_label_wrap(bool bWrap) +{ + ::set_label_wrap(*m_xRadioButton, bWrap); +} + SalInstanceRadioButton::~SalInstanceRadioButton() { m_xRadioButton->SetToggleHdl(Link<::RadioButton&, void>()); @@ -3198,6 +3205,11 @@ bool SalInstanceCheckButton::get_inconsistent() const return m_xCheckButton->GetState() == TRISTATE_INDET; } +void SalInstanceCheckButton::set_label_wrap(bool bWrap) +{ + ::set_label_wrap(*m_xCheckButton, bWrap); +} + SalInstanceCheckButton::~SalInstanceCheckButton() { m_xCheckButton->SetToggleHdl(Link<CheckBox&, void>()); diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index 60d6c6b12b3b..77d69b9a4436 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -12573,6 +12573,13 @@ public: gtk_link_button_set_uri(m_pButton, OUStringToOString(rText, RTL_TEXTENCODING_UTF8).getStr()); } + virtual void set_label_wrap(bool bWrap) override + { + GtkLabel* pChild = ::get_label_widget(GTK_WIDGET(m_pButton)); + ::set_label_wrap(pChild, bWrap); + gtk_label_set_max_width_chars(pChild, 1); + } + virtual OUString get_uri() const override { const gchar* pStr = gtk_link_button_get_uri(m_pButton);