summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-01-26 20:44:50 +0000
committerAdolfo Jayme Barrientos <fitojb@ubuntu.com>2021-01-27 18:07:36 +0100
commit0211b72c3d8bc7cf51b54dc4e4a0cf346153da46 (patch)
tree277eb29b80553e559f5d0f2a719afadca8a48e0b
parentcfdaa4fec60f010d325b5a261db9625394c75535 (diff)
tdf#138590 use the highlighted menu entry, not the combobox active text
Change-Id: I2fb68c1491d129d5fd9b963ae4db1fb83171a154 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109982 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
-rw-r--r--svx/source/tbxctrls/tbcontrl.cxx10
1 files changed, 9 insertions, 1 deletions
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 8780b03f2d6e..bef09011d9fa 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -213,6 +213,7 @@ protected:
SfxStyleFamily eStyleFamily;
int m_nMaxUserDrawFontWidth;
+ int m_nLastItemWithMenu;
bool bRelease;
Reference< XDispatchProvider > m_xDispatchProvider;
Reference< XFrame > m_xFrame;
@@ -865,6 +866,7 @@ SvxStyleBox_Base::SvxStyleBox_Base(std::unique_ptr<weld::ComboBox> xWidget,
, m_xWidget(std::move(xWidget))
, eStyleFamily( eFamily )
, m_nMaxUserDrawFontWidth(0)
+ , m_nLastItemWithMenu(-1)
, bRelease( true )
, m_xDispatchProvider( rDispatchProvider )
, m_xFrame(_xFrame)
@@ -924,7 +926,10 @@ void SvxStyleBox_Base::ReleaseFocus()
IMPL_LINK(SvxStyleBox_Base, MenuSelectHdl, const OString&, rMenuIdent, void)
{
- OUString sEntry = m_xWidget->get_active_text();
+ if (m_nLastItemWithMenu < 0 || m_nLastItemWithMenu >= m_xWidget->get_count())
+ return;
+
+ OUString sEntry = m_xWidget->get_text(m_nLastItemWithMenu);
ReleaseFocus(); // It must be after getting entry pos!
Sequence<PropertyValue> aArgs(2);
@@ -1160,7 +1165,10 @@ void SvxStyleBox_Base::SetupEntry(vcl::RenderContext& rRenderContext, sal_Int32
if (nItem == 0 || nItem == m_xWidget->get_count() - 1)
m_xWidget->set_item_menu(OString::number(nItem), nullptr);
else
+ {
+ m_nLastItemWithMenu = nItem;
m_xWidget->set_item_menu(OString::number(nItem), m_xMenu.get());
+ }
}
if (nItem > 0 && nItem < m_xWidget->get_count() - 1)